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