IEIP_Note

데이터베이스 정규화 DB Normalization

DB 정규화의 목표

이상 현상 Anomaly
- Relation 조작 시 데이터들이 불필요하게 중복되어 예기치 않게 발생하는 현상
- 삽입 이상, 삭제 이상, 갱신 이상이 존재한다.

(1). 삽입 이상 Insertion Anomaly
- Relation에 데이터를 삽입할 때, 의도한 것과는 상관 없이
  원하지 않는 값도 같이 삽입되는 현상

(2). 삭제 이상 Deletion Anomaly
- Relation에서 한 Tuple을 삭제할 때 의도와는 
  상관 없는 값들도 같이 삭제되는 연쇄가 일어나는 현상

(3). 갱신 이상 Update Anomaly
- Relation에서 한 Tuple에 있는 속성 값을 갱신할 때
  일부 튜플의 정보만 갱신되어 정보의 모순이 생기는 현상

DB 정규화와 정규형 종류

구분 정규화 단계 조건
기본 정규형 제 1 정규형
1NF
원자 값으로 구성
기본 정규형 제 2 정규형
2NF
부분 함수의 종속 제거
(완전 함수적 종속 관계)
기본 정규형 제 3 정규형
3NF
이행 함수의 종속 제거
기본 정규형 보이스/코드 정규형
Boyce/Codd Normal Form
결정자가 후보 키가 아닌 함수 종속 제거
고급 정규형 제 4 정규형
4NF
다중 값 종속성 제거
고급 정규형 제 5 정규형
5NF
JOIN 종속성 제거
함수 종속
- 어떤 Relation R에서 X와 Y를 각각 R의 Attribute 집합의 부분 집합이라고 할 경우
  속성 X의 값 각각에 대해 시간과 관계 없이 항상 Y의 값이 오직 하나만 연관되어 있는 관계
- 표기: 'X → Y (Y는 X에 함수 종속)'

제 1 정규화 1NF


제 2 정규화 2NF

- 위의 테이블에서 기본 키는 '학생 번호'와 '개설된 강의'로 복합 키이다.
  여기서 (학생 번호, 개설된 강의)인 기본 키는 '성적'을 결정하고 있다.
- 그리고 강의실 Column은 기본 키의 부분 집합인 '개설된 강의'에 의해 결정된다.

- 즉, 기본 키 (학생 번호, 개설된 강의)의 부분 집합인 '개설된 강의'가 결정자이므로
  위의 테이블에서 강의실을 분해, 별도의 테이블로 관리하는 것으로
  제 2 정규형을 만족시킬 수 있다.

제 3 정규화 3NF


보이스/코드 정규화 BCNF