RDBMS의 정규화
정규화는 데이터의 중복을 최소화하고, 데이터의 무결성을 보장하기 위해 RDBMS에서 데이터를 구조화하는 과정입니다. 정규화의 목표는 각 정보 항목이 한 번만 나타나도록 테이블을 구성하는 것입니다.
정규화의 주요 단계는 다음과 같습니다:
- 제1정규형 (1NF): 각 컬럼의 값이 원자적(분할 불가능)으로, 각 레코드가 유일한 값을 가지도록 합니다.
- 제2정규형 (2NF): 1NF를 만족하면서 부분적 함수 종속성이 없도록 합니다. 즉, 테이블의 모든 속성이 기본 키에 완전히 함수적으로 종속되어야 합니다.
- 제3정규형 (3NF): 2NF를 만족하면서 이행적 함수 종속성이 없도록 합니다.
- 그 이후에도 BCNF, 4NF, 5NF 등의 정규형이 있지만, 일반적인 데이터베이스 설계에서는 3NF까지의 정규화를 주로 고려합니다.
Primary Key, Foreign Key
Primary Key (기본 키):
Primary Key는 테이블의 각 레코드를 고유하게 식별하는 하나 이상의 속성(또는 필드)의 조합입니다. 기본 키의 특징은 다음과 같습니다:
- 유일성: 기본 키로 선택된 속성의 값은 테이블 내에서 유일해야 합니다.
- 불변성: 기본 키의 값은 시간이 지나도 변경될 수 없습니다.
- NOT NULL: 기본 키는 null 값을 허용하지 않습니다.
Foreign Key (외래 키):
Foreign Key는 한 테이블의 속성(또는 속성의 집합)이 다른 테이블의 Primary Key를 참조하는 것입니다. 외래 키의 주요 목적은 테이블 간의 관계를 정의하고 데이터의 무결성을 보장하는 것입니다. 외래 키의 특징은 다음과 같습니다:
- 참조 무결성: 외래 키의 값은 참조하는 테이블의 기본 키에 존재하는 값이어야 하거나 null이어야 합니다.
- 외래 키를 사용하여 테이블 간의 관계 (일대일, 일대다, 다대다)를 표현할 수 있습니다.
예를 들어, '주문' 테이블과 '고객' 테이블이 있을 때, '주문' 테이블의 '고객ID'는 '고객' 테이블의 '고객ID'를 참조하는 외래 키가 될 수 있습니다. 이를 통해 주문이 특정 고객에게 속하는 것을 나타낼 수 있습니다.