BCNF 위반이 보이면 바로 분해
위반 종속을 기준으로 쪼개고, 새 릴레이션을 다시 검사한다
핵심은 X → Y가 BCNF를 깨는 순간 그 종속을 보존하는 조각과 나머지 조각으로 나눈 뒤, 더 이상 위반이 없을 때까지 같은 절차를 반복하는 것이다.
단계
1
위반 종속 찾기
2
두 릴레이션으로 분해
3
각 결과를 재귀 검사
규칙
현재 릴레이션에 결정자 X가 슈퍼키가 아닌 함수 종속 X → Y가 있는지 본다.
WHILE BCNF 위반 X → Y 존재
위반 종속을 그대로 담는 조각과, 나머지 속성을 가진 조각으로 나눈다.
R1 = X ∪ Y R2 = R - Y
새로 나온 R1, R2 각각에 대해 같은 기준으로 다시 BCNF를 검사한다.
위반이 남아 있으면 다시 1단계로
예시
릴레이션과 위반 종속을 먼저 고른다.
R(학번, 과목, 교수) 위반: 교수 → 과목
교수→과목을 기준으로 두 조각을 만든다.
R1 = {교수, 과목} PK: 교수 R2 = {학번, 교수} PK: {학번, 교수}
두 조각 모두 더 이상 BCNF를 깨지 않으면 분해가 끝난다.
종료 조건: BCNF 위반 종속이 없음
읽는 순서: 위반 발견 → 위반 종속을 보존하는 조각 생성 → 결과 릴레이션을 반복 검사
반복 후 종료