Employee2(SSN, FName, LName, DNumber, DName, MgrSSN)Represents employee, department and works_for information
| SSN | FName | LName | DNumber | DName | MgrSSN |
|---|---|---|---|---|---|
| 111-11-1111 | John | Smith | 5 | Research | 123-45-6789 |
| 111-22-3333 | Jane | Doe | 5 | Research | 123-45-6789 |
| 123-45-6789 | Ian | Flemming | 1 | HeadQ | 123-45-6789 |
FName, LName, DNumber, DName, MgrSSN
SSN -> DNumber DNumber -> DName, MgrSSN
But to make things more interesting, let us try to decompose from a more "formal" perspective:
R = (SSN, FName, LName, DNumber, DName, MgrSSN) R = (A, B, C, D, E, F) A -> B, C, D, E, F D -> E, F
In other words:
Once again, we CANNOT answer this question without first finding the key(s) !!!
A+ = A, B, C, D, E, F => A is the key
B, C, D, E, F
No: A -> E, F is transitive through D -> E, F
Compute: D+ to find all the attributes that "belongs" to D
D+ = D E FDecompose (A, B, C, D, E, F) into:
R1 = (D, E, F) (D+) R2 = (A, B, C, D) (Again, we need to satisfy Lemma 2 !)
R1 = (D, E, F) Key = D (D -> EF) is in 3NF R2 = (A, B, C, D) Key = A (A -> BCD) is in 3NF !!
A = SSN D = DNumber B = FName E = DName C = LName F = MgrSSN A -> B, C, D, E, F D -> E, F Result: (SSN, FName, LName, DNumber, DName, MgrSSN) Decomposed into: (SSN, FName, LName, DNumber) (DNumber, DName, MgrSSN)
So, the correct tables now are:
|
|