With a proper understanding of FDs under our belt, as it were, I can now go on to tackle the question of what it means for a relvar to be in BCNF. Again I proceed by means of a series of precise definitions.
Definition: Let X → Y be an FD, F say, with respect to heading H. Then F is trivial if and only if it’s satisfied by every relation with heading H.
Now, in Chapter 4 I defined a trivial FD to be one that can’t possibly be violated. There’s nothing wrong with that definition, of course; however, the one just given is preferable because it explicitly mentions the pertinent heading. I also said in Chapter 4 that it’s easy to see the FD X → Y is trivial if and only if Y is a subset of X. Well, that’s true too; but I can now say that this latter fact isn’t really a definition but rather a theorem, easily proved from the definition as such. (On the other hand, the definition as such isn’t very helpful in determining whether a given FD is trivial, whereas the theorem is. For that reason, we might regard the theorem as an operational definition, inasmuch as it does provide an effective test that can easily be applied.) Let me state the theorem explicitly for the record:
Theorem: Let X → Y be an FD, F say. Then F is trivial if and only if the dependant Y is a subset of the determinant X.
Now back to the definitions:
Definition: A superkey of relvar R is a subset SK of the heading H of R such that the FD SK → H holds in R (“is an FD of R”). That FD is a superkey ...