Let me summarize where we are. The general point is that some JDs imply others. As specific illustrations of this point, we’ve discussed:

*Irrelevant components:*Every JD*J*is equivalent to a JD*J′*that’s obtained from*J*by adding or dropping irrelevant components.*Combining components:*Every JD*J*implies a JD*J′*that’s obtained from*J*by replacing two components by their union.*Irreducibility:*Every JD*J*that holds in relvar*R*is equivalent to at least one JD*J′*—not necessarily distinct from*J*—that holds in*R*and is irreducible (where*equivalent*and*irreducible*must both be understood as being with respect to*R*). It follows that*R*’s irreducible JDs in fact imply all of*R*’s JDs.

The following observations are also valid (I haven’t discussed them in detail, but they’re intuitively obvious):

*Adding attributes:*If JD*J*holds in relvar*R*, then so does every JD*J′*that’s obtained from*J*by adding some attribute of*R*to some component of*J*.*Adding components:*If JD*J*holds in relvar*R*, then so does every JD*J′*that’s obtained from*J*by adding any subset of the heading of*R*as another component.

Observe in both of these cases, however, that we’re talking about implication, not equivalence. For example, in relvar S (but ignoring SNAME once again, for simplicity), the JD {SNO,STATUS},{SNO,CITY}} holds, and therefore the following JD holds too: {{SNO,STATUS},{SNO,CITY},{CITY,STATUS}}. ...

Start Free Trial

No credit card required