1. 2 3 decompositions udo we need to decompose a relation? wseveral normal forms for relations. if...

29
1

Upload: louise-washington

Post on 28-Dec-2015

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

1

Page 2: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

2

Page 3: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

3

Decompositions Do we need to decompose a relation?

Several normal forms for relations. If schema in these normal forms certain problems don’t arise

The two commonly used normal forms are third normal form (3NF) and Boyce-Codd normal form (BCNF)

What problems does decomposition cause? Lossless-join property: get original relation by

joining the resulting relations Dependency-preservation property: enforce

constraints on original relation by enforcing some constraints on resulting relations

Queries may require a join of decomposed relations!

Page 4: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

4

Finding All Implied FD’s in a Projected Schema

Motivation: “normalization,” the process where we break a relation schema into two or more schemas.

Example: ABCD with FD’s AB ->C, C ->D, and D ->A. Decompose into ABC, AD What FD’s hold in ABC ?

• Not only AB ->C, but also C ->A !

Same as F+ method, but restrict to those FD’s that involve only attributes of the projected schema

Page 5: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

5

Example: Projecting FD’s

ABC with FD’s A ->B and B ->C. Project onto AC. A +=ABC ; yields A ->B, A ->C.

• We do not need to compute AB + or AC +. B +=BC ; yields B ->C. C +=C ; yields nothing. BC +=BC ; yields nothing.

Resulting FD’s: A ->B, A ->C, andB ->C.

Projection onto AC : A ->C. Only FD that involves a subset of {A,C }.

Page 6: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

6

Boyce-Codd Normal Form

We say a relation R is in BCNF if whenever X ->Y is a nontrivial FD that holds in R, X is a superkey. Remember: nontrivial means Y is not

contained in X. Remember, a superkey is any

superset of a key (not necessarily a proper superset).

Page 7: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

7

Example

Drinkers(name, addr, beersLiked, manf, favBeer)FD’s: name->addr favBeer, beersLiked->manf

Only key is {name, beersLiked}. In each FD, the left side is not a

superkey. Any one of these FD’s shows

Drinkers is not in BCNF

Page 8: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

8

Another Example

Beers(name, manf, manfAddr)FD’s: name->manf, manf->manfAddr Only key is {name} . name->manf does not violate BCNF,

but manf->manfAddr does.

Page 9: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

9

Decomposition into BCNF

Given: relation R with FD’s F. Look among the given FD’s for a BCNF

violation X ->Y. If any FD following from F violates BCNF,

then there will surely be an FD in F itself that violates BCNF.

Compute X +. Not all attributes, or else X is a superkey.

Page 10: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

10

Decompose R Using X -> Y

Replace R by relations with schemas:

1. R1 = X +.

2. R2 = X (R – X +)

1. Project given FD’s F onto the two new relations.

Page 11: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

11

Example: BCNF Decomposition

Drinkers(name, addr, beersLiked, manf, favBeer)

F = name->addr, name -> favBeer,beersLiked->manf

Pick BCNF violation name->addr. Close the left side: {name}+ = {name,

addr, favBeer}. Decomposed relations:

Drinkers1(name, addr, favBeer) Drinkers2(name, beersLiked, manf)

Page 12: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

12

Example -- Continued

We are not done; we need to check Drinkers1 and Drinkers2 for BCNF.

Projecting FD’s is easy here. For Drinkers1(name, addr, favBeer),

relevant FD’s are name->addr and name->favBeer. Thus, {name} is the only key and

Drinkers1 is in BCNF.

Page 13: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

13

Example -- Continued

For Drinkers2(name, beersLiked, manf), the only FD is beersLiked->manf, and the only key is {name, beersLiked}.

Violation of BCNF. beersLiked+ = {beersLiked, manf},

so we decompose Drinkers2 into: Drinkers3(beersLiked, manf) Drinkers4(name, beersLiked)

Page 14: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

14

Example -- Concluded

The resulting decomposition of Drinkers :1. Drinkers1(name, addr, favBeer)2. Drinkers3(beersLiked, manf)3. Drinkers4(name, beersLiked)

Notice: Drinkers1 tells us about drinkers, Drinkers3 tells us about beers, and Drinkers4 tells us the relationship between drinkers and the beers they like.

Page 15: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

15

Third Normal Form -- Motivation

There is one structure of FD’s that causes trouble when we decompose.

AB ->C and C ->B. E.g: A = street address, B = city, C = zip code.

There are two keys, {A,B } and {A,C } (why?)

C ->B is a BCNF violation, so we must decompose into AC, BC.

Page 16: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

16

street zip545 Tech Sq. 02138545 Tech Sq. 02139

city zipCambridge 02138Cambridge 02139

Join tuples with equal zip codes.

street city zip545 Tech Sq. Cambridge 02138545 Tech Sq. Cambridge 02139

Although no FD’s were violated in the decomposed relations,FD street city -> zip is violated by the database as a whole.

A BC C

We Cannot Enforce FD’s

we cannot enforce the FD AB ->C by checking FD’s in these decomposed relationswe cannot enforce the FD AB ->C by checking FD’s in these decomposed relations

C ->B

Page 17: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

17

3NF Let’s Us Avoid This Problem

3rd Normal Form (3NF) modifies the BCNF condition so we do not have to decompose in this problem situation.

An attribute is prime if it is a member of any key.

X ->A violates 3NF if and only if X is not a superkey, and also A is not prime

orX ->A satisfies 3NF if and only if X is a superkey or A is prime

Page 18: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

18

Example: 3NF

In our problem situation with FD’s AB ->C and C ->B, we have keys AB and AC.

Thus A, B, and C are each prime. Although C ->B violates BCNF, it

does not violate 3NF.

Page 19: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

19

What 3NF and BCNF Give You

There are two important properties of a decomposition:

1. Lossless Join : it should be possible to project the original relations onto the decomposed schema, and then reconstruct the original.

2. Dependency Preservation : it should be possible to check in the projected relations whether all the given FD’s are satisfied.

Page 20: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

20

3NF and BCNF -- Continued

We can get (1) with a BCNF decomposition.

We can get both (1) and (2) with a 3NF decomposition.

But we can’t always get (1) and (2) with a BCNF decomposition. street-city-zip is an example.

Page 21: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

21

3NF Synthesis Algorithm

We can always construct a decomposition into 3NF relations with a lossless join and dependency preservation.

Need minimal basis for the FD’s:1. Right sides are single attributes.2. No attribute can be removed from a left

side.3. No FD can be removed.

Page 22: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

22

Computing Minimal Basis step 1: RHS of each FD is a single

attribute. step 2: Eliminate unnecessary

attributes from LHS. Algorithm: If FD XB A F (where B and

A are single attributes) and X A is entailed by F, then B was unnecessary

step 3: Delete unnecessary FDs from F Algorithm: If F - {f} entails f, then f is

unnecessary.• If f is X A then check if A X+

F-{f}

Page 23: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

23

3NF Synthesis – (2)

One relation for each FD in the minimal basis. Schema is the union of the left and

right sides. If no key is contained in an FD,

then add one relation whose schema is some key.

Page 24: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

24

Example

{A→B, ABCD→E, EF→GH, ACDF→EG} Make RHS a single attribute: {A→B,

ABCD→E, EF→G, EF→H, ACDF→E, ACDF→G} Minimize LHS: ACD→E instead of ABCD→E Eliminate redundant FDs

Can ACDF→G be removed? Can ACDF→E be removed?

Final answer: {A→B, ACD→E, EF→G, EF→H}

Page 25: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

25

Example {A→B, ABCD→E, EF→GH, ACDF→EG}

Page 26: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

26

Synthesizing a 3NF Schema

step 1: Compute a minimal cover U, of F. The decomposition is based on U, but since U+ = F+ the same functional dependencies will apply

step 2: Group all FDs in U with a common LHS, and then Partition U into sets U1, U2, … Un

step 3: For each Ui form a schema Ri = set of attributes named in Ui Each FD of U will apply to some Ri. Hence the

decomposition is dependency preserving

step 4: If no Ri is a key of R, add schema R0 = a key of R. R0 might be needed since not all attributes are necessarily

contained in R1R2 …Rn

This guarantees lossless decomposition

Page 27: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

27

Example Relation: R=ABCDEFGH FDs: {A→B, ABCD→E, EF→GH,

ACDF→EG} Find minimal cover: {A→B, ACD→E,

EF→G, EF→H} Combine LHS: {A→B, ACD→E,

EF→GH} New relations: AB, ACDE, EFGH Is any of these a key? No, so add one (e.g., ACDF) Final tables: AB, ACDE, EFGH, ACDF

Page 28: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

28

Why It Works

Preserves dependencies: each FD from a minimal basis is contained in a relation, thus preserved.

Lossless Join: use the chase to show that the row for the relation that contains a key can be made all-unsubscripted variables.

3NF: hard part – a property of minimal bases.

Page 29: 1. 2 3 Decompositions uDo we need to decompose a relation? wSeveral normal forms for relations. If schema in these normal forms certain problems don’t

29

BCNF via 3NF Synthesis

Try 3NF synthesis to decompose the original relation R

This is loss-less and dependency preserving

If all sub-relations in BCNF, done! If not, use the BCNF decomposition

on the violating sub-relation If some FDs are not preserved, at

least we tried hard!