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•
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
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
Example 1 of Lossy Decomposition
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?
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 emptythendecomposition 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.
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
Normalization by Decomposition into BCNF
• Suppose that R is not in BCNF and XA 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.
What about normalizing to 3NF
• An dependency preserving algorithm for normalizing to 3NF exists
• Extension of BCNF normalization approach• See section 11.2.3
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
Top Related