데이터베이스 시스템(Database system concepts 5th edition 번역서 p254)


7.5.1.1 BCNF에 대한 검사


어떤 릴레이션이 BCNF를 만족하는가는 몇몇 경우에 있어서 다음과 같이 간략하게 검사할 수 있다.


- 자명하지 않은 종속 α->β가 BCNF를 침해하게 되는 경우, α+(α의 속성 폐포)를 구하고, 그것이 R의

모든 속성을 포함하는지 즉, R의 슈퍼키인지를 확인한다.

- 릴레이션 스키마 R이 BCNF에 속할 때, F+의 모든 함수 종속에 대해 확인하는 것이 아니라, 주어진

함수 종속 집합 F에서 BCNF를 침해하는 함수 종속만을 확인하는 것만으로도 충분하다.


만일 BCNF를 침해하는 F의 종속이 하나도 없는 경우에는 F+의 어떠한 종속들도 BCNF를 침해하지

않음을 보일 수 있다.


불행히도 후자의 프로시저는 릴레이션이 분해되었을 경우에는 동작하지 않는다. 즉 R의 분해 중

BCNF를 침해하는 Ri에 대해 검사할 때 F를 사용하는 것은 충분치 않음을 말한다. 예를 들어

A->B,BC->D를 포함하는 함수 종속 F를 가지는 릴레이션 스키마 R(A,B,C,D,E)를 보자. 이 스키마가

Ri(A,B)와 R2(A,C,D,E)로 분해되었다고 가정하자. 그렇다면 F의 어떤 종속도 (A,C,D,E)의 속성을

포함하지 않으므로, Ri가 BCNF를 만족한다고 생각할 것이다. 사실은 F+에 AC->D라는 종속이 있으며

(이는 F의 두 종속에서 가이행 규칙에 따라 유추할 수 있다)이는 R2가 BCNF가 아님을 보여준다.

따라서 분해된 릴레이션이 BCNF가 아님을 보이기 위해서는 F에는 없지만 F+에는 존재하는 종속이

필요한 것이다.


ps. 이게 뭔 말이냐고 ㅋㅋㅋ 진짜 ㅋㅋㅋ 이해 가는 사람 천재임