DAVID DENG CS157B MARCH 23, 2010 Dependency Preserving Decomposition.

29
DAVID DENG CS157B MARCH 23, 2010 Dependency Preserving Decomposition

Transcript of DAVID DENG CS157B MARCH 23, 2010 Dependency Preserving Decomposition.

DAVID DENG

CS157BMARCH 23, 2010

Dependency Preserving Decomposition

Intro

Decomposition help us eliminate redundancy, root of data anomalies.

Decomposition should be: 1. Lossless 2. Dependency Preserving

What’s Dependency Preservation?

When the decomposition of a relational scheme preserved the associated set of functional dependencies.

Formal Definition:If R is decomposed into R1, R2,…, Rn, then{F1F2…Fn}+ = F+

Algorithm to check for Dependency Preservation

begin;for each X Y in F and with R (R1, R2, …, Rn){

let Z = X;while there are changes in Z{

from i=1 to nZ = Z ((Z Ri)+ Ri) w.r.t to F;

}if Y is a proper subset of Z, current fd is preservedelse decomposition is not dependency preserving;

}this is a dependency preserving decomposition;end;

Explain Algorithm Part 1

1. Choose a functional dependency in set F, say you choose X Y.

2. Let set Z to the “left hand side” of the functional dependency, X such Z = X

 Starting with R1 in the decomposed set {R1, R2,…

Rn)3. Intersect Z with R1, Z R14. Find the closure of the result from step 3 (Z

R1) using original set F5. Intersect the result from step 4 ((Z R1)+) with

R1 again.

Explain Algorithm Part 2

6. Updated Z with new attribute in the result from step 5.

7. Repeat step 3-6 from R2, R3, …, Rn.8. If there’s any changes between original Z before

step 3 and after step 7, repeat step 3-7. 9. Check whether Y is a proper subset of current Z. If it

is not, this decomposition is a violation of dependency preservation. You can stop now.

10. If Y is a proper subset of current Z, repeat 1-9 until you check ALL functional dependencies in set F.

Another look at Algorithm

Test each X Y in F for dependency preservation

result = Xwhile (changes to result) do

for each Ri in decompositiont = (result Ri)+ Riresult = result t

if Y result, return true;else, return false;

[Note: If any false is returned for algorithm, whole decomposition is not dependency preserving.]

Let’s walk through an example of using this algorithm.

Example using Algorithm

Given the following:R(A,B,C,D,E)F = {ABC, CE, BD, EA}R1(B,C,D) R2(A,C,E)

Is this decomposition dependency preserving?

Example

R(A,B,C,D,E) F = {ABC, CE, BD, EA}Decomposition: R1(B,C,D) R2(A,C,E)

Z=ABFor Z R1 = AB BCD = B

{B}+ = BD{B}+ R1 = BD BCD = BD

Update Z = AB BD = ABD, continue

Example

R(A,B,C,D,E) F = {ABC, CE, BD, EA}Decomposition: R1(B,C,D) R2(A,C,E)

Z=ABDFor Z R2 = ABD ACE = A

{A}+ = A{A}+ R2 = A ACE = A

Update Z, Z is still ABD Since Z changed, repeat checking R1 to R2.

Example

R(A,B,C,D,E) F = {ABC, CE, BD, EA}Decomposition: R1(B,C,D) R2(A,C,E)

Z=ABDFor Z R1 = ABD BCD = BD

{BD}+ = BD{BD}+ R1 = BD BCD = BD

Update Z = ABD BD = ABD, so Z hasn’t changed but you still have to continue.

Example

R(A,B,C,D,E) F = {ABC, CE, BD, EA}Decomposition: R1(B,C,D) R2(A,C,E)

Z=ABD and checking R2 was done 2 slides agoZ will still be ABD.

Since Z hasn’t change, you can conclude ABC is not preserved.

Let’s practice with other functional dependencies.

Example

R(A,B,C,D,E) F = {ABC, CE, BD, EA}Decomposition: R1(B,C,D) R2(A,C,E)

Z=X=BFor Z R1 = B BCD = B

{B}+ = BD{B}+ R1 = BD BCD = BD

Update Z = B BD = BDSince Y=D is proper subset of BD, BD is preserved.

Example

R(A,B,C,D,E) F = {ABC, CE, BD, EA}Decomposition: R1(B,C,D) R2(A,C,E)

Z=X=CFor Z R2 = C ACE = C

{C}+ = CEA{C}+ R1 = CEA ACE = ACE

Update Z = C ACE= ACESince Y=E is proper subset of ACE, CE is preserved.

Example

R(A,B,C,D,E) F = {ABC, CE, BD, EA}Decomposition: R1(B,C,D) R2(A,C,E)

Z=X=EFor Z R1 = E ACE = E

{E}+ = EA{E}+ R1 = EA ACE = EA

Update Z = E EA= EASince Y=A is proper subset of EA, EA is preserved.

Example

R(A,B,C,D,E) F = {ABC, CE, BD, EA}Decomposition: R1(B,C,D) R2(A,C,E)

Shortcut:For any functional dependency, if both

LHS and RHS collectively are within any of the sub scheme Ri. Then this functional dependency is preserved.

Exercise #1

Let R{A,B,C,D} and F={AB, BC, CD, DA}

Let’s decomposed R into R1 = AB, R2 = BC, and R3 = CD

Is this a dependency preserving decomposition?

Answer to Exercise #1

Yes it is.You can immediately see that AB, BC,

CD are preserved for R1, R2, R3The key is to check whether DA is

preserved.Let’s walk through the algorithm.

R{A,B,C,D} F={AB, BC, CD, DA}

Decomposition: R1 = AB, R2 = BC, and R3 = CD

Answer to Exercise #1

Z = X = DFor Z R1 = D AB = empty setFor Z R2 = D BC = empty setFor Z R3 = D CD = D

Find {D}+ = DABCFind {D}+ R3 = DABC CD = CD

Update Z to CD. Since Z changed, repeat.

R{A,B,C,D} F={AB, BC, CD, DA}

Decomposition: R1 = AB, R2 = BC, and R3 = CD

Answer to Exercise #1

Z = CDFor Z R1 = CD AB = empty setFor Z R2 = CD BC = C

Find {C}+ = CDABFind {C}+ R2 = CDAB BC = BC

Update Z = CD BC = BCD

R{A,B,C,D} F={AB, BC, CD, DA}

Decomposition: R1 = AB, R2 = BC, and R3 = CD

Answer to Exercise #1

Z = BCDFor Z R3 = BCD CD = CD

Find {CD}+ = CDABFind {CD}+ R3 = CDAB CD = CD

Update Z is still BCD. Since Z changed, repeat going trough R1 to R3.

R{A,B,C,D} F={AB, BC, CD, DA}

Decomposition: R1 = AB, R2 = BC, and R3 = CD

Answer to Exercise #1

Z = BCDFor Z R1 = BCD AB = B

Find {B}+ = BCDAFind {B}+ R1 = BCDA AB = AB

Update Z = BCD AB = ABCD. Since Y = A is a subset of ABCD, function

DA is preserved.

R{A,B,C,D} F={AB, BC, CD, DA}

Decomposition: R1 = AB, R2 = BC, and R3 = CD

Exercise #2

R{A,B,C,D,E)F={ABD, BE}

Decomposition: R1{A,B,C} R2{A,D} R3{B,D,E}

Is this a dependency preserving decomposition?

Answer to Exercise #2

Let’s start with ABD:Z = AZ R1 = A ABC = A

{A}+ = ABDE{A}+ R1 = ABDE ABC = AB

Update Z = A AB = AB

R{A,B,C,D,E) F={ABD, BE}Decomposition: R1{A,B,C} R2{A,D}R3{B,D,E}

Answer to Exercise #2

Z = ABZ R2 = A AD = A

{A}+ = ABDE{A}+ R1 = ABDE AD = AD

Update Z = AB AD = ABDThus A BD preserved

R{A,B,C,D,E) F={ABD, BE}Decomposition: R1{A,B,C} R2{A,D}R3{B,D,E}

Answer to Exercise #2

Based on R3, BE is preserved.Check B E:Z = BZ R1 = B ABC = B

{B}+ = BE{B}+ R1 = BE ABC = B

Update Z = B still the same

R{A,B,C,D,E) F={ABD, BE}Decomposition: R1{A,B,C} R2{A,D}R3{B,D,E}

Answer to Exercise #2

Z = BZ R2 = B AD = empty setZ R3 = B BDE = B

{B}+ = BE{B}+ R3 = BE BDE = BE

Update Z = B BE = BEThus BE preserved

R{A,B,C,D,E) F={ABD, BE}Decomposition: R1{A,B,C} R2{A,D}R3{B,D,E}

End

Reference:Yu Hung Chen, “Decomposition”,

http://www.cs.sjsu.edu/faculty/lee/cs157/Decomposition_YuHungChen.ppt, SJSU (lol), 2005

Gary D. Boetticher, “Preserving Dependencies”, http://www.youtube.com/watch?v=olgwucI3thI, University of Houston Clear Lake, 2009

Dr. C. C. Chan, “Example of Dependency Preserving Decomposition”, http://www.cs.uakron.edu/~chan/cs475/Fall2000/ExampleDp%20decomposition.htm, University of Akron, Fall 2000

Tang Nan, “Functional Dependency”, http://www.se.cuhk.edu.hk/~seg3550/2006/tutorial/t9.ppt