Decompositions

Post on 06-Jan-2016

22 views 0 download

description

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 - PowerPoint PPT Presentation

Transcript of Decompositions

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