정규화(Normalization)
정규화란 상호 종속적인 관계를 갖는 특성을 이용하여 무손실 분해하는 과정이다. 최종 목적은 이상 현상 발생 가능성을 줄이는 것이다.
제3 정규형
제3 정규형은 제2 정규형을 만족하고 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형이다.

위 그림에서 '주문' 테이블에서 '고객번호'가 '주문번호'에 함수적 종속이고 '주소'가 '고객번호'에 함수적 종속이므로 '주소'는 기본키인 '주문번호'에 대해 이행적 함수적 종속을 만족한다. 따라서 '주문' 테이블은 제3 정규형이 아니다.
BCNF
BCNF는 제3 정규형을 만족하고 테이블 R에서 모든 결정자가 후보키(Candidate Key)인 정규형이다. 일반적으로 제3 정규형에 후보키가 여러 개 존재하고 이러한 후보키들이 서로 중첩되어 나타나는 경우에 적용 가능하다.

위 그림에서 '수강_교수' 테이블은 다음과 같은 함수적 종속을 만족하고 있다.
(학번, 과목명) –> 담당교수
(학번, 담당교수) –> 과목명
(담당교수 –> 과목명)
'수강_교수' 테이블의 후보키는 (학번, 과목명)과 (학번, 담당교수)이다. '수강_교수' 테이블에서 결정자 중 후보키가 아닌 속성이 존재한다. 즉 함수적 종속('담당교수' -> '과목명')이 존재하는데 '담당교수'가 '수강_교수' 테이블에서 후보키가 아니기 때문에 '수강_교수' 테이블은 BCNF가 아니다.
제4 정규형
제4 정규형은 BCNF를 만족하면서 릴레이션에서 다치 종속 관계를 제거한 정규형이다. 다치 종속이란 두 속성이 1 : 다 대응이 되는 경우를 말한다.
제5 정규형
제5 정규형은 모든 조인 종속이 후보키를 통해서만 성립되는 정규형이다.
Reference
'데이터베이스' 카테고리의 다른 글
| [데이터베이스] 정규화(1) (0) | 2022.03.09 |
|---|---|
| [데이터베이스] 이상 현상(Anomaly)과 함수적 종속성(Functional Dependency) (0) | 2022.03.09 |