FD_Keys

advertisement
Functional Dependencies- Examples
Souhad M. Daraghma
Exercise #1: FD’s From DB Instances

1.
2.
3.
Below is an instance of R(A1,A2,A3,A4). Choose the FD
which may hold on R
A4 A1
A2A3  A4
A2A3  A1
Solution #1: FD’s From DB Instances
1. A4  A1 ???
 Incorrect: The 1st and 4th tuple violates it
2. A2A3  A4 ???
 Incorrect: The1st and 2nd tuple violates it.
3. A2A3  A1 ???
 Correct!
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
Uses of Attribute Closure
There are several uses of the attribute closure algorithm:
 Computing closure of F
 For each   R, we find the closure +, and for each S
 +, we output a functional dependency   S.
Exercise #2: Checking if an FD Holds on F
Using the Closure
 Let R(ABCDEFGH) satisfy the following functional
dependencies: {A->B, CH->A, B->E, BD->C, EG->H,
DE->F}
 Which of the following FD is also guaranteed to be
satisfied by R?
1. BFG  AE
2. ACG  DH Hint: Compute the closure of the LHS
of each FD that you get as a choice.
3. CEG  AB If the RHS of the candidate FD is
contained in the closure, then the
candidate follows from the given FDs,
otherwise not.
6
Solution #2: Checking if an FD Holds on F
Using the Closure
 FDs: {A->B, CH->A, B->E, BD->C, EG->H, DE->F}
1. BFG  AE ???
 Incorrect: BFG+ = BFGEH, which includes E, but not A
2. ACG  DH ???
 Incorrect: ACG+ = ACGBE, which includes neither D nor H.
3. CEG  AB ???
 Correct: CEG+ = CEGHAB, which contains AB
7
Exercise #3: Checking for Keys Using the Closure
 Which of the following could be a key for R(A,B,C,D,E,F,G)
with functional dependencies {ABC, CDE, EFG,
FGE, DEC, and BCA}
1. BDF
2. ACDF
3. ABDFG
4. BDFG
Solution #3: Checking for Keys Using the Closure
 {AB->C, CD->E, EF->G, FG->E, DE->C, and BC->A}
1. BDF ???
 No. BDF+ = BDF
2. ACDF ???
 No. ACDF+ = ACDFEG (The closure does not include B)
3. ABDFG ???
 No. This choice is a superkey, but it has proper subsets that
are also keys (e.g. BDFG+ = BDFGECA)
Solution #3: Checking for Keys Using the Closure
 {AB->C, CD->E, EF->G, FG->E, DE->C, and BC->A}
4. BDFG ???
 BDFG+ = ABCDEFG
 Check if any subset of BDFG is a key:
 Since B, D, F never appear on the RHS of the FDs, they must form
part of the key.
 BDF+ = BDF  Not key
 So, BDFG is the minimal key, hence the candidate key
Finding Keys using FDs
 Tricks for finding the key:
 If an attribute never appears on the RHS of any FD, it must be
part of the key
 If an attribute never appears on the LHS of any FD, but
appears on the RHS of any FD, it must not be part of any key
Exercise #4: Checking for Keys Using the Closure
Consider R = {A, B, C, D, E, F, G, H} with a set of FDs
F = {CD→A, EC→H, GHB→AB, C→D, EG→A,
H→B, BE→CD, EC→B}
Find all the candidate keys of R
Solution #4: Checking for Keys Using the Closure
F = {CD→A, EC→H, GHB→AB, C→D, EG→A, H→B,
BE→CD, EC→B}
 First, we notice that:
 EFG never appear on RHS of any FD. So, EFG must be part of
ANY key of R
 A never appears on LHS of any FD, but appears on RHS of
some FD. So, A is not part of ANY key of R
 We now see if EFG is itself a key…
 EFG+ = EFGA ≠ R; So, EFG alone is not key
Solution #4: Checking for Keys Using the Closure
 Checking by adding single attribute with EFG (except A):
 BEFG+ = ABCDEFGH = R; it’s a key [BE→CD, EG→A,





EC→H]
CEFG+ = ABCDEFGH = R; it’s a key [EG→A, EC→H, H→B,
BE→CD]
DEFG+ = ADEFG ≠ R; it’s not a key [EG→A]
EFGH+ = ABCDEFGH = R; it’s a key [EG→A, H→B, BE→CD]
If we add any further attribute(s), they will form the superkey.
Therefore, we can stop here searching for candidate key(s).
Therefore, candidate keys are: {BEFG, CEFG, EFGH}
Exercise #5: Checking for Keys Using the Closure
Consider R = {A, B, C, D, E, F, G} with a set of FDs
F = {ABC→DE, AB→D, DE→ABCF, E→C}
Find all the candidate keys of R
Solution #5: Checking for Keys Using the Closure
F = {ABC→DE, AB→D, DE→ABCF, E→C}
 First, we notice that:
 G never appears on RHS of any FD. So, G must be part of ANY
key of R.
 F never appears on LHS of any FD, but appears on RHS of some
FD. So, F is not part of ANY key of R
 G+ = G ≠ R
So, G alone is not a key!
Solution #5: Checking for Keys Using the Closure
 Now we try to find keys by adding more attributes (except F) to G
 Add LHS of FDs that have only one attribute (E in E→C):
 GE+ = GEC ≠ R
 Add LHS of FDs that have two attributes (AB in AB→D and DE in DE→ABCF):
 GAB+ = GABD
 GDE+ = ABCDEFG = R; [DE→ABCF] It’s a key!
 Add LHS of FDs that have three attributes (ABC in ABC→DE), but not taking




super set of GDE:
GABC+ = ABCDEFG = R; [ABC→DE, DE→ABCF] It’s a key!
GABE+ = ABCDEFG = R; [AB→D, DE→ABCF]
It’s a key!
If we add any further attribute(s), they will form the superkey. Therefore, we can
stop here.
The candidate key(s) are {GDE, GABC, GABE}
Exercise #7: Calculating F+ for a Sub-Relations
Consider R = {A, B, C, D, E} with a set of FDs F =
{AB→DE, C→E, D→C, E→A}
And we wish to project those FDs onto relation S={A, B, C}
Give the FDs that hold in S
 Hint:
 We need to compute the closure of all the subsets of {A, B,
C}, except the empty set and ABC.
 Then, we ignore the FD’s that are trivial and those that have
D or E on the RHS
Solution #7: Calculating F+ for a Sub-Relations
R = {A, B, C, D, E}
F = {AB→DE, C→E, D→C, E→A}
S={A, B, C}
 A+ = A
 B+ = B
 C+ = CEA [C→E, E→A]
 AB+ = ABDEC [AB→DE, D→C]
 AC+ = ACE [C→E]
 BC+ = BCEAD [C→E, E→A, AB→DE]
 We ignore D and E.
 So, the FDs that hold in S are:
 {C→A, AB→C, BC→A}
 (Note: BC→A can be ignored because it follows logically from C→A)
Canonical Cover
 Sets of functional dependencies may have redundant
dependencies that can be inferred from the others
 Eg: A  C is redundant in: {A  B, B  C, A  C}
 Parts of a functional dependency may be redundant
 E.g. on RHS: {A  B, B  C, A  CD} can be simplified to
{A  B, B  C, A  D}
 E.g. on LHS: {A  B, B  C, AC  D} can be simplified to
{A  B, B  C, A  D}
 Intuitively, a canonical cover of F is a “minimal” set of
functional dependencies equivalent to F, having no redundant
dependencies or redundant parts of dependencies
Download