정규화는 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정
이상현상이 존재하는 릴레이션을 분해하여 여러개의 릴레이션을 생성하는데 이른 단계별로 구분하여 정규형이 높아질수록 이상현상이 줄어듬
- 각 Column이 하나의 attribute만을 갖음
- 하나의 Column은 같은 종류나 type의 값을 갖음
- 각 칼럼이 유일한 이름을 갖음
- 칼럼의 순서가 상관이 없음
이 경우 첫 번째 조건을 만족하지 못한다. 하나의 과목 Column에 두 개의 값을 갖게 되어 1차 정규화가 필요하다.
이처럼 각 칼럼이 원자 값을 갖도록 테이블을 분해하면 1정규현을 만족한다.
- 1정규형을 만족함
- 모든 칼럼이 부분적 종속(Partial Dependency)이 없어야 함
(모든 칼럼이 완전 함수 종속을 만족)
위와 같이 학생번호
와 과목
이 복합키이고 하나의 테이블 내에서 과목
을 통해 지도교사
를 알 수 있을 때, 부분적 함수 종속을 없앨 수 있다.
이처럼 과목
을 독립적인 기본키로 갖는 테이블로 분리할 수 있다.
- 2정규형을 만족함
- 기본키를 제외한 속성들간의 이행적 종속성(Transitive Dependency)이 없어야함
위와 같이 기본키는 ID
인데 등급
으로 인해 이행적 종속성이 발생하므로 제 3정규화를 수행해 분리할 수 있다.
이 처럼 분리를 통해 제 3정규형을 만족시킬 수 있다.
- 3정규형을 만족함
- 모든 결정자가 후보키 집합에 속해야함
위와 같이 후보키 집합(학생번호
, 과목
)이 아닌 지도교수
가 과목
에 대한 결정자가 되어 BCNF를 만족하지 않는다.
지도교수
를 기본키로 갖는 테이블 분리를 통해 BCNF를 만족시킬 수 있다.