Presentation is loading. Please wait.

Presentation is loading. Please wait.

Manipulating Functional Dependencies Zaki Malik September 30, 2008.

Similar presentations


Presentation on theme: "Manipulating Functional Dependencies Zaki Malik September 30, 2008."— Presentation transcript:

1 Manipulating Functional Dependencies Zaki Malik September 30, 2008

2 2 Definition of Functional Dependency If t is a tuple in a relation R and A is an attribute of R, then t A is the value of attribute A in tuple t. The FD AdvisorId  AdvisorName holds in R if in every instance of R, for every pair of tuples t and u

3 3 Rules for Manipulating FDs Learn how to reason about FDs. Define rules for deriving new FDs from a given set of FDs. Use these rules to remove “anomalies” from relational designs. Example: A relation R with attributes A, B, and C, satisfies the FDs A  B and B  C. What other FDs does it satisfy? A  C What is the key for R ? – A, because A  B and A  C

4 4 Splitting and Combining FDs Can we split and combine left hand sides of FDs? – No !

5 5 Triviality of FDs

6 6 Closure of FD sets Given a relation schema R and set S of FDs – is the FD F logically implied by S? Example – R = {A,B,C,G,H,I} – S = A  B, A  C, CG  H, CG  I, B  H – would A  H be logically implied? – yes (you can prove this, using the definition of FD) Closure of S: = all FDs logically implied by S How to compute ? – we can use Armstrong's axioms

7 7 Armstrong's Axioms Reflexivity rule – A 1 A 2... A n  a subset of A 1 A 2... A n Augmentation rule – A 1 A 2... A n  B 1 B 2... B m then A 1 A 2... A n C 1 C 2... C k  B 1 B 2... B m C 1 C 2... C k Transitivity rule – A 1 A 2... A n  B 1 B 2... B m and B 1 B 2... B m  C 1 C 2... C k then A 1 A 2... A n  C 1 C 2... C k

8 8 Inferring using Armstrong's Axioms = S Loop – For each F in S, apply reflexivity and augmentation rules – add the new FDs to – For each pair of FDs in S, apply the transitivity rule – add the new FD to Until does not change any further

9 9 Additional Rules Union rule – X  Y and X  Z, then X  YZ – (X, Y, Z are sets of attributes) Decomposition rule – X  YZ, then X  Y and X  Z Pseudo-transitivity rule – X  Y and YZ  U, then XZ  U These rules can be inferred from Armstrong's axioms

10 Example R = (A, B, C, G, H, I) F = { A  B A  C CG  HCG  I B  H} some members of F +  A  H by transitivity from A  B and B  H  AG  I by augmenting A  C with G, to get AG  CG and then transitivity with CG  I  CG  HI from CG  H and CG  I : “union rule” can be inferred from – definition of functional dependencies, or – Augmentation of CG  I to infer CG  CGI, augmentation of CG  H to infer CGI  HI, and then transitivity

11 11 Closures of Attributes

12 12 Closures of Attributes: Definition

13 13 Closures of Attributes: Algorithm

14 Basis: Y + = Y Induction: Look for an FD’s left side X that is a subset of the current Y + – If the FD is X -> A, add A to Y +

15 Y+Y+ new Y + XA Diagramatically:

16 Why is the Concept of Closures Useful?

17 Uses of Attribute Closure There are several uses of the attribute closure algorithm: Testing for superkey: – To test if  is a superkey, we compute  +, and check if  + contains all attributes of R. Testing functional dependencies – To check if a functional dependency    holds (or, in other words, is in F + ), just check if    +. – That is, we compute  + by using attribute closure, and then check if it contains . – Is a simple and cheap test, and very useful Computing closure of F – For each   R, we find the closure  +, and for each S   +, we output a functional dependency   S.

18 Example of Attribute Set Closure R = (A, B, C, G, H, I) F = {A  B A  C CG  H CG  IB  H} (AG) + 1.result = AG 2.(A  C and A  B) result = ABCG 3.(CG  H and CG  AGBC) result = ABCGH 4.(CG  I and CG  AGBCH) result = ABCGHI Is AG a super key? Is AG a key? 1.Does A +  R? 2.Does G +  R?

19 Example of Closure Computation


Download ppt "Manipulating Functional Dependencies Zaki Malik September 30, 2008."

Similar presentations


Ads by Google