Presentation is loading. Please wait.

Presentation is loading. Please wait.

Announcements Program 3 due Friday Homework 2 out today, due Mon Read: Chapter 3.

Similar presentations


Presentation on theme: "Announcements Program 3 due Friday Homework 2 out today, due Mon Read: Chapter 3."— Presentation transcript:

1 Announcements Program 3 due Friday Homework 2 out today, due Mon Read: Chapter 3

2 From last time Yes! Any relational schema with two attributes is in BCNF. The “area” attribute does indeed refer to the size of a lot (eg, in acres) Is lots1A in 3NF? BCNF?

3 Decompositions Given a relation schema R that is not in 3NF (or perhaps BCNF) decomposition can be used to help fix this problem Decomposition replaces R with R1,...,RN where –1) attributes of Ri are a subset of the attributes of R –2) each attribute of R is in at least one Ri Binary decomposition: R  R1,R2

4 Example Decomposition Hourly_Emps relation with attributes –(Ssn, name, rating, hourly wage, hours worked) FD: rating  hourly wage Hourly_Emps is not in 3NF (why?) Decompose Hourly_Emps into –R1: (ssn, name, rating) –R2: (rating, hourly wage) Key question: can we recover any legal row in Hourly_Emps from rows in R1 and R2? Projections of Hourly_Emps

5 Desirable Properties of Decompositions Lossless-Join –A decomposition R  R1,R2 has the lossless join property if R can be exactly reconstructed from NATURAL_JOIN(R1,R2) Dependency Preserving –A decomposition R  R1,R2 is dependency preserving if we can enforce all FDs on R by examining either only R1 or R2 whenever a row is inserted or modified LJ property is essential, DP is nice 3NF normalization w/ LJ & DP always possible DP BCNF normalization may not be possible

6 Example 1 of Lossy Decomposition

7 Example 2 of Lossy Decomposition Hourly_Emps relation with attributes –(Ssn, name, rating, hourly wage, hours worked) FD: rating  hourly wage Decompose Hourly_Emps into –R1: (ssn, rating) –R2: (rating, name, hourly wage) Why?

8 A test for lossless decomposition The binary decomposition R with functional dependencies F into R1, R2 is lossless if and only if F contains either: –R1 ∩ R2  R1 or –R1 ∩ R2  R2 That is, attrs common to R1 and R2 must be key of either R1 or R2. Consequence 1: If FD X  Y holds over R and X ∩ Y is empty then decomposition of R into (R-Y) and XY is lossless. Consequence 2: If R  R1, R2 AND R1  R1a, R1b are both lossless then R  R1a,R1b,R2 is lossless.

9 Normalization by Decomposition into BCNF If R is not in BCNF, it is possible to obtain a lossless join decomposition into a collection of BCNF relation schmas However, there may not by any dependency preserving decompositions into BCNF relations

10 Normalization by Decomposition into BCNF Suppose that R is not in BCNF and X  A be a FD that violates BCNF 1)Decompose R into R-A and XA 2)If either R-A or XA is not in BCNF, decompose further by recursive application In general there may be alternate ways to normalize to BCNF. The theory does not help discriminate among these.

11 What about normalizing to 3NF An dependency preserving algorithm for normalizing to 3NF exists Extension of BCNF normalization approach See section 11.2.3

12 Summary of Database Design Theory Constructing relation schemas is called DB design Poor design can lead to insert, update and delete anomalies because of redundancy Good design reduces redundancy by normalizing all relations to 3NF or BCNF The theory of functional dependencies plays a major role in DB design

13 Example Consider a “Contracts” relation schema: –(C_ID, supplier_id, proj_id, dept_id, part_id,qty, value) –Shorthand: (C,S,J,D,P,Q,V) The contract with cid C is an agreement that supplier S will supply Q items of part P to project J associated with department D. The value of the contract is C Contract id C is a key, thus C  CSJDPQV A project purchases a given part once JP  C A dept. purchases at most one part from a supplier, SD  P


Download ppt "Announcements Program 3 due Friday Homework 2 out today, due Mon Read: Chapter 3."

Similar presentations


Ads by Google