CYCLIC RULES

Observe now the cyclic nature of the business rule in the SPJ example (“if s is connected to p and p is connected to j and j is connected back to s again, then s and p and j must all be directly connected, in the sense that they must all appear together in the same tuple”). Let’s agree to say this rule is “3-way cyclic.” Then we can say in general that it’s if an n-way cyclic rule exists for some n > 2 that we might be faced with a relvar that’s (a) in BCNF and not in 5NF and therefore (b) can be nonloss decomposed into n projections and not into fewer.[96]

That said, I have to say too that in my experience such cyclic rules are rare in practice—which means that, in practice, most relvars, if they’re in at least BCNF, are probably in 5NF as well. Indeed, it’s quite unusual in practice to find a relvar that’s in BCNF and not in 5NF. Unusual, but not unknown!—I’ve encountered a few real world examples myself from time to time. In other words, the fact that such relvars are unusual doesn’t mean you don’t need to worry about them, or about JDs and 5NF. Au contraire: JDs and 5NF are tools in your designer’s toolkit, as it were, and (other things being equal) you should probably try to ensure that all of the relvars in your database are in 5NF.[97]



[96] If the rule takes the slightly simpler form “if s is connected to p and s is connected to j, then s and p and j must all be directly connected,” then we might have a relvar that’s in BCNF but not in 4NF (and hence not in 5NF either, a fortiori). See Chapter 12.

[97] Except as noted in Chapter 13.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset