원서로 올림


Database system concepts 5th edition


7.5.1.1 Testing for BCNF

Testing of a relation to see if it satisfies BCNF can be simplified in some cases:

- To check if a nontrivial dependency α->β causes a violation of BCNF, compute α+(the attribute closure of α), and verify that it includes all attributes of R; that is, it is a superkey of R.

- To check if a relation schema R is in BCNF, it suffices to check only the dependencies in the given set F for violation of BCNF, rather than check all dependencies in F+.

We can show that if none of the dependencies in F causes a violation of BCNF, then none of the dependencies in F+ will cause a violation of BCNF either.


Unfortunately, the latter procedure does not work when a relation is decomposed. That is, it does not suffice to use F when we test a relation Ri, in a decomposition of R, for violation of BCNF. For example, consider relation schema R(A,B,C,D,E), with functional dependencies F containing A->B and BC->D. Suppose this were decomposed into R1(A,B) and R2(A,C,D,E). Now, neither of the dependencies in F contains only attributes from (A,C,D,E) so we might be misled into thinking R2 satisfies BCNF. In fact, there is a dependency AC->D in F+(which can be inferred using the pseudotransitivity rule from the two dependencies in F) that shows that R2 is not in BCNF. Thus, we may need a dependecy that is in F+, but is not in F, to show that a decomposed relation is not in BCNF.