SUMMARY SO FAR

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}}. ...

Get Database Design and Relational Theory now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.