BCNF 판별은 비슈퍼키 결정자를 찾는 문제다
후보키를 찾은 뒤 모든 함수 종속의 왼쪽이 슈퍼키인지 검사합니다. 결정자가 슈퍼키가 아니면 BCNF 위반이고, 해당 종속을 기준으로 분해합니다.
관계
R(학생, 교수, 과목)에서 함수 종속을 검사합니다.
후보키
{학생, 교수}가 전체 튜플을 식별한다고 봅니다.
위반 신호
교수만으로는 전체 행을 식별하지 못합니다.
함수 종속별 BCNF 판별
| 순서 | 종속 | 결정자 검사 | 판정 |
|---|---|---|---|
| 01 | {학생, 교수}가 과목 결정 | {학생, 교수}는 후보키이므로 슈퍼키입니다. | BCNF 조건을 만족합니다. |
| 02 | 교수가 과목 결정 | 교수는 후보키가 아니고 전체 행을 식별하지 못합니다. | 비슈퍼키 결정자이므로 BCNF 위반입니다. |
| 03 | 분해 기준 | 위반 종속 교수, 과목을 별도 관계로 분리합니다. | 교수_과목(교수, 과목)과 학생_교수(학생, 교수)로 나눕니다. |
위반의 원인
- 한 교수가 한 과목을 담당한다는 사실이 여러 행에 반복됩니다.
- 교수의 담당 과목이 바뀌면 여러 학생 행을 함께 고쳐야 합니다.
- 학생 정보 없이 교수와 과목 사실만 저장하기 어렵습니다.
분해 후 확인
BCNF 분해는 중복과 이상 현상을 줄이지만, 원래 종속을 조인 없이 모두 검증할 수 있는지는 별도로 봐야 합니다. 그래서 실무에서는 무손실 조인과 종속성 보존을 함께 점검합니다.