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.)^{[46]} 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 ...**

Start Free Trial

No credit card required