- 정규화( Normalization )
- 정규화의 기본 목표는 테이블 간에 중복된 데이터를 허용하지 않는다는 것
- 중복된 데이터를 허용하지 않음으로 무결성을 유지하고 DB의 저장 용량 역시 줄일 수 있다.
- 테이블을 분해하는 정규화 단계가 정의되어 있다.
- 일반적으로 정규화는 1,2,3,BCNF 까지만 진행하는 경우가 대다수 이다.
그 이상 정규화를 하면 정규화의 단점이 나타날 수 있다.
- 제1 정규형
제2 정규형
제3 정규형
BCNF 정규형
제4 정규형
제5 정규형
제6 정규형
2NF ~ BCNF 는 함수 종속성 제거를 통해 만족
4NF ~ 6NF 는 결합 종속성의 제거를 통해 만족
- 정규화를 왜 해야하는가?
- 정규화는 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다.
- 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 되고, 이를 단계별로 구분하여 정규형이 높아질수록 이상현상은 줄어든다.
- 이상현상이란 아래의 정규화 과정에서 나오는 상황의 문제점들
- 이상현상이란?
정규화 장단점
제1 정규화 [ 원자값 ] ( 1 개의 컬럼은 단일 값 )
제2 정규화 [ 완전 함수 종속 ] ( 기본키의 부분 컬럼으로 결정자가 되는 것은 분해 즉, 후보키와 키가 아닌 속성 사이의 함수 종속성 제거 )
제3 정규화 [ 이행적 종속 ] ( 특정 컬럼 변경 시 같이 변경되어야 하는 값이 있다면 분리 즉, 키가 아닌 속성들 사이의 함수 종속성 제거 )
BCNF 정규화 [ 모든 결정자는 후보키 ] ( 결정자가 될 수 있는 컬럼이 후보키가 아니라면 후보키가 될 수 있도록 분해 )
제4 정규화 [ 다치 종속 X ]
제5 정규화 = PJNF [ 조인 종속 X ] ← 거의 사용 XXXX
제6 정규화