|
Decomposition into BCNF:
ABCDEFGHIJ
|
|<-- Violation: A -> DE
|
|
+-> ADEIJ (A+) key = A
| |
| |<-- Violation: D -> IJ
| |
| +-> DIJ (D+) key = D
| |
| +-> ADE key = A
|
+-> ABCFGH key = AB
|
| Violation: B -> F
|
+-> BFGH (B+)
| |
| |<-- Violation: F -> GH
| |
| +-> FGH (F+) key = F
| |
| +-> BF key = B
|
+-> ABC
|
|
Therefore: key of R = ABD
Decomposition into BCNF:
ABCDEFGHIJ
|
|<-- Violation: AB -> C
|
+-> ABCI (AB+) key = AB
| |
| |<-- Violation: A -> I
| |
| +-> AI (A+) key = A
| |
| +-> ABC key = AB
|
+-> ABDEFGHJ key = ABD
|
|<-- Violation: BD -> EF
|
+-> BDEF (BD+) key = BD
|
+-> ABDGHJ key = ABD
|
|<-- Violation: AD -> GH
|
+-> ADGHJ (AD+) key = AD
| |
| |<-- Violation: H -> J
| |
| +-> HJ (H+) key = H
| |
| +-> ADGH key = AD
|
+-> ABD key = ABD (trivial relation)
|
Tuple# A B C
----------------------------------------
#1 10 b1 c1
#2 10 b2 c2
#3 11 b4 c1
#4 12 b3 c4
#5 13 b1 c1
#6 14 b3 c4
1. A -> B CANNOT hold because 2 different B values for same value A=10:
(10 b1 c1) and (10 b2 c2)
2. B -> C may hold
3. C -> B CANNOT hold because 2 different B values for same value C=c1:
(10 b1 c1) and (11 b4 c1)
4. B -> A CANNOT hold because 2 different A values for same value B=b1:
(10 b1 c1) and (13 b1 c1)
5. C -> A CANNOT hold because 2 different A values for same value C=c1:
(10 b1 c1) and (13 b1 c1)
Potential keys: AB and AC
BC is not a potential key because of the tuples: (10 b1 c1) and (13 b1 c1).
AB+ = A B C
CD+ = C D E B
DE+ = D E B
AD+ = A D
Try adding B: ABD+ = A B D C E OK
Try adding C: ACD+ = A C D E B OK
Try adding E: ADE+ = A D E B C OK
All keys: ABD, ACD and ADE