Transcript
Page 1: BCNF and Normalization

BCNF and Normalization

Zaki MalikOctober 21, 2008

Page 2: BCNF and Normalization

Relational Schema Design

• Goal of relational schema design is to avoid redundancy and anomalies.

Page 3: BCNF and Normalization

Bad Design

name addr beersLiked manf favBeer

Janeway Voyager Export Molson G.I. LagerJaneway Voyager G.I. Lager Gr. Is. G.I. LagerSpock Enterprise Export Molson Export

•Redundancy

• Update anomaly• if Janeway is transferred to Intrepid, will we remember to change each of her tuples?

• Deletion anomaly•If nobody likes Export, we lose track of the fact that Molson manufactures Export.

Page 4: BCNF and Normalization

Another Example

Page 5: BCNF and Normalization

Relational Decomposition

Page 6: BCNF and Normalization

Example of Decomposition

Page 7: BCNF and Normalization

7

Triviality of FDs

Page 8: BCNF and Normalization

Boyce-Codd Normal Form

Page 9: BCNF and Normalization

Closures of FDs vs. Closures of Attributes

Page 10: BCNF and Normalization

Checking for BCNF Violations

Page 11: BCNF and Normalization

Decomposition into BCNF

Page 12: BCNF and Normalization

Decomposing Courses

Page 13: BCNF and Normalization

Decomposing Courses

Page 14: BCNF and Normalization

Another Example of Decomposition

Page 15: BCNF and Normalization

Another Example of Decomposition (2)

Page 16: BCNF and Normalization

BCNFs and Two-Attribute Relationships

Page 17: BCNF and Normalization

Decomposition into BCNF

Page 18: BCNF and Normalization

Candidate Normalization Algorithm

Page 19: BCNF and Normalization

Joining Relations

Page 20: BCNF and Normalization

Recovering Information from a Decomposition

Page 21: BCNF and Normalization

Correct Decompositions

A decomposition is lossless if we can recover: R(A,B,C)

R1(A,B) R2(A,C)

R’(A,B,C) should be the same as R(A,B,C)

R’ is in general larger than R. Must ensure R’ = R

Decompose

Recover

Page 22: BCNF and Normalization

Example of Lossy-Join Decomposition • Example: Decomposition of R = (A, B)

R1 = (A) R2 = (B)

A B

121

A

B

12

rA(r)

B(r)

A (r) B (r)A B

1212

Page 23: BCNF and Normalization

Example: BCNF Decomposition

Drinkers(name, addr, beersLiked, manf, favBeer)FDs = name->addr, name -> favBeer, beersLiked->manf• Pick BCNF violation name->addr.• Close the left side: {name}+ = {name, addr,

favBeer}.• Decomposed relations:

1. Drinkers1(name, addr, favBeer)2. Drinkers2(name, beersLiked, manf)

Page 24: BCNF and Normalization

Example -- Continued

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

• Is Drinkers1 in BCNF ?– 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 25: BCNF and Normalization

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:

1. Drinkers3(beersLiked, manf)2. Drinkers4(name, beersLiked)

Page 26: BCNF and Normalization

Example -- Concluded

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

• Note: – Drinkers1 tells us about drinkers,– Drinkers3 tells us about beers, and – Drinkers4 tells us the relationship between drinkers and

the beers they like.

Page 27: BCNF and Normalization

Summary of BCNF Decomposition

Find a dependency that violates the BCNF condition:

A , A , … A 1 2 n B , B , … B

1 2 m

A’sOthers B’s

R1 R2

Decompose:

Is there a 2-attribute relation that isnot in BCNF ?

Continue untilthere are noBCNF violationsleft.


Top Related