Databases Reference
In-Depth Information
Consider relvar SPJ′ once again (the original version, without the additional FD {PNO,JNO} → {SNO}). I
now claim that the design of this relvar does permit redundancy by this definition. To be specific (and with
reference to the sample tuples shown earlier), the unquantified proposition Supplier s1 supplies part p1 to project j1
is represented both explicitly, by the appearance of tuple t1 (or tuple t4 ), and implicitly, as a logical consequence of
the JD and the following propositions:
Supplier s1 supplies part p1 (to some project): Represented by tuple t1
Part p1 is supplied to project j1 (by some supplier): Represented by tuple t3
Project j1 is supplied by supplier s1 (with some part): Represented by tuple t2
Thus, I claim that Vincent's specific definition of redundancy is consistent with, and can be seen as a special
case of, the definition (“final version”) that I proposed for redundancy in general in Chapter 15.
I'd like to close this appendix by pointing out that a relvar can be in Vincent's RFNF (and even in 5NF) and
yet still be subject to redundancy of a kind that, while not identical to that defined by Vincent, is certainly very
similar to it. Recall this example (discussed briefly in a footnote in Chapter 12): We're given a relvar SPJQ, with
attributes SNO, PNO, JNO, and QTY (only) and predicate “Supplier SNO supplies part PNO to project JNO in
quantity QTY.” The sole key is {SNO,PNO,JNO}, and the relvar is therefore in BCNF. Note that the JD
{{SNO,PNO},{PNO,JNO},{JNO,SNO}} does not hold in this relvar; however, it does hold in the projection of
the relvar on {SNO,PNO,JNO} (in other words, it's an embedded dependency; refer to Chapter 12 if you need to
refresh your memory regarding this notion). Now suppose the relvar contains the following tuples (only):
s1 p1 j2 100
s1 p2 j1 200
s2 p1 j1 300
s1 p1 j3 400
By the embedded dependency, then, we must have j3 = j1 . As previously stated, therefore, relvar SPJQ is certainly
subject to redundancy; what's more, the kind of redundancy it's subject to is very similar to the kind defined by
Vincent. Nevertheless, the relvar is in Vincent's RFNF! The point is, Vincent's redundancy is defined with respect
to the FDs and JDs (only) of the relvar in question; it has nothing to say about any other constraints, such as
embedded dependencies, that might also happen to hold.
Search WWH ::

Custom Search