logo

보이스 코드 정규형(BCNF)

  • BCNF는 3NF의 고급 버전입니다. 3NF보다 더 엄격합니다.
  • 모든 기능적 종속성 X → Y, X가 테이블의 슈퍼 키인 경우 테이블은 BCNF에 있습니다.
  • BCNF의 경우 테이블은 3NF에 있어야 하며 모든 FD의 경우 LHS가 슈퍼 키입니다.

예: 직원들이 둘 이상의 부서에서 근무하는 회사가 있다고 가정해 보겠습니다.

이런

직원 테이블:

EMP_ID EMP_COUNTRY EMP_DEPT DEPT_TYPE EMP_DEPT_NO
264 인도 설계 D394 283
264 인도 테스트 D394 300
364 영국 백화점 D283 232
364 영국 개발 중 D283 549

위 표에서 기능적 종속성은 다음과 같습니다.

 EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} 

후보 키: {EMP-ID, EMP-DEPT}

EMP_DEPT나 EMP_ID만으로는 키가 아니기 때문에 테이블은 BCNF에 없습니다.

주어진 테이블을 BCNF로 변환하기 위해 이를 세 개의 테이블로 분해합니다.

EMP_COUNTRY 테이블:

EMP_ID EMP_COUNTRY
264 인도
264 인도

EMP_DEPT 테이블:

EMP_DEPT DEPT_TYPE EMP_DEPT_NO
설계 D394 283
테스트 D394 300
백화점 D283 232
개발 중 D283 549

EMP_DEPT_MAPPING 테이블:

EMP_ID EMP_DEPT
D394 283
D394 300
D283 232
D283 549

기능적 종속성:

 EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} 

후보 키:

첫 번째 테이블의 경우: EMP_ID
두 번째 테이블의 경우: EMP_DEPT
세 번째 테이블의 경우: {EMP_ID, EMP_DEPT}

이제 이것은 두 기능적 종속성의 왼쪽 부분이 키이기 때문에 BCNF에 있습니다.