bcnf and normalization

27
BCNF and Normalization Zaki Malik October 21, 2008

Upload: zora

Post on 21-Jan-2016

40 views

Category:

Documents


0 download

DESCRIPTION

BCNF and Normalization. Zaki Malik October 21, 2008. Relational Schema Design. Goal of relational schema design is to avoid redundancy and anomalies. Bad Design. name addr beersLikedmanf favBeer Janeway Voyager Export Molson G.I. Lager - PowerPoint PPT Presentation

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.