- 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에 있습니다.