580 likes | 1.35k Views
CS157A Lecture 18. Multivalued Dependency. Prof. Sin-Min Lee Department of Computer Science. HIGHER NORMAL FORMS. BCNF. 5NF. 2NF. 4NF. 3NF. 1NF. functional dependencies. multivalued dependencies. join dependencies. STUDENT. MODULE. HOBBY. Pascal. Music. John. Databases.
E N D
CS157A Lecture 18 Multivalued Dependency Prof. Sin-Min Lee Department of Computer Science
HIGHER NORMAL FORMS BCNF 5NF 2NF 4NF 3NF 1NF functional dependencies multivalued dependencies join dependencies
STUDENT MODULE HOBBY Pascal Music John Databases Jogging Java C++ Reading Mary Tennis Cycling C++ Music Jenny Databases STUDENT enjoysHOBBY STUDENT learnsMODULE John learnsPascal Databases Java John enjoys Music Jogging Mary enjoys Reading Tennis Cycling Mary learnsC++ Jenny learnsC++ Databases Jenny enjoys Music
PROFILE STUDENT MODULE HOBBY John Pascal Music John Pascal Jogging John Databases Music John Databases Jogging John Java Music John Java Jogging Mary C++ Reading Mary C++ Tennis Mary C++ Cycling Jenny C++ Music Jenny Databases Music PROFILE is in BCNF but exhibits redundancy and I, D ad U anomalies multivalued dependencyX Y holds in R if: whenever two tuples of R agree in value of X, their image sets in pR(X,Y) are the same; X, Y, Z - pairwise disjoint subsets of R (X,Y,Z) STUDENT MODULE STUDENT HOBBY mutually independent
Fourth Normal Form R(X, Y, Z) is in 4NF if, whenever a multivalued dependency XY holds for R, so does the functional dependency XA for all attributes A in R preventing conjunction of unrelated facts 4NF: every MVD is FD
Multivalued Dependencies The multivalued dependencyXY holds in a relation R if whenever we have two tuples of R that agree in all the attributes of X, then we can swap their Y components and get two new tuples that are also in R. X Y others
Example Drinkers(name,addr,phones,beersLiked) with MVD Namephones. If Drinkers has the two tuples: name addr phones beersLiked sue ap1b1 sue ap2b2 it must also have the same tuples with phones components swapped: name addr phones beersLiked sue ap2b1 sue ap1b2 Note: we must check this condition for all pairs of tuples that agree on name, not just one pair.
MVD Rules 1. Every FD is an MVD. • Because if X Y, then swapping Y’s between tuples that agree on X doesn’t create new tuples. • Example, in Drinkers: nameaddr. 2. Complementation: if XY, then XZ, where Z is all attributes not in X or Y. • Example: since namephonesholds in Drinkers, so doesnameaddr beersLiked.
Splitting Doesn’t Hold Sometimes you need to have several attributes on the right of an MVD. For example: Drinkers(name, areaCode, phones, beersLiked, beerManf) name areaCode phones beersLiked beerManf Sue 831 555-1111 Bud A.B. Sue 831 555-1111 Wicked Ale Pete’s Sue 408 555-9999 Bud A.B. Sue 408 555-9999 Wicked Ale Pete’s • nameareaCode phones holds, but neithernameareaCode nor namephones do.
4NF Eliminate redundancy due to multiplicative effect of MVD’s. • Roughly: treat MVD’s as FD's for decomposition, but not for finding keys. • Formally: R is in Fourth Normal Form if whenever MVDXY is nontrivial (Y is not a subset of X, and X Y is not all attributes), then X is a superkey. • Remember, X Y implies XY, so 4NF is more stringentthan BCNF. • Decompose R, using4NF violation XY,into XY and X (R—Y). R Y X
Example Drinkers(name,addr,phones,beersLiked) • FD: nameaddr • Nontrivial MVD’s: namephones andnamebeersLiked. • Only key: {name, phones, beersLiked} • All three dependencies above violate 4NF. • Successive decomposition yields 4NF relations: D1(name, addr) D2(name, phones) D3(name, beersLiked)
Multivalued Dependencies • Multivalued dependencies are referred to as tuple-generating dependencies. • Let R be a relation schema and let a R and b R. The multivalued dependency is a b holds on R if, in any legal relation r( R ), for all pairs of tuples t1 and t2 in r such that t1[ a ] = t2[ a ], there exist tuples t3 and t4 in r such that
Multivalued Dependencies (cont) • t1[ a ] = t2[ a ] = t3[ a ] = t4[ a ] t3[ b ] = t1[ b ] t3[ R - b ] = t2[ R - b ] t4[ b ] = t2[ b ] t4[ R - b ] = t1[ R - b ] • The multivalued dependency a b says that the relationship between a and b is independent of the relationship between a and R - b.
Multivalued Dependencies (cont) • If the multivalued dependency a b is satisfied by all relations on schema R, then a b is a trivial multivalued dependency on schema R. • Thus, a b is trivial if b a or b a = R Tabular representation of a b
Example: Here is an example of multivalued dependencies given R(A B C D). Show that A BD we can rearrange the table to R(A B D C).
Example (Cont.): Perform each test to check if A BD. Each test is satisfied, so A BD is true!!!
Multivalued Dependencies (cont) • To illustrate the difference between functional and multivalued dependencies, we consider again the BC-schema. Graph 1
Multivalued Dependencies (cont) • On graph 1, we must repeat the loan number once for each address a customer has, and we must repeat the address for each loan a customer has. This repetition is unnecessary, since the relationship between that customer and his address is independent of the relationship between that customer and a loan. • If a customer (say, Smith) has a loan (say, loan number L-23), we want that loan to be associated with all Smith’s addresses.
Multivalued Dependencies (cont) • The relation on graph 2 is illegal, therefore to make this relation legal, we need to add the tuples (L-23, Smith, Main, Manchester) and (L-27, Smith, North, Rye) to the bc relation of graph 2. Graph 2 (an illegal bc relation)