170 likes | 359 Views
Unnormalized Form (UNF). student courses John CS363 CS334 CS323 Multi-Value attribute Common in reports. First Normal Form (1NF). No multi-value attributes Done when mapping E-R model to relational schema.
E N D
Unnormalized Form (UNF) student courses John CS363 CS334 CS323 • Multi-Value attribute • Common in reports
First Normal Form (1NF) • No multi-value attributes • Done when mapping E-R model to relational schema
Second Normal Form (2NF) A relation R is in 1NF, and every non-primary-key attribute is fully functionally dependent on the primary key Then R is in 2NF No Partial FDs on the PK.
Partial FDs Partial FDs If X, W Y and X Y Then X, W Y is a partial FD Example: Sno, Bno staffAddress, staffPhone Sno staffAddress, staffPhone
Full FDs A FD is a full FD if it’s not partial. A, B X, Y is a full FD if A X, Y is false B X, Y is false Sno staffAddress, staffPhone Pno, Start Rno, Rent, End
Example Lease (RNo, RName, PNo, PAddress, Start, Finish, Rent, ONo, OName) Primary Key: PNo, Start Alternate Key: PNo, Finish PAddress, Start PAddress, Finish FDs: PNo, Start ---> All other attributes PNo, Finish ---> All other attributes PAddress, Start ---> All other attributes PAddress, Finish ---> All other attributes PNo ---> PAddress, ONo, OName (Partial on Primary Key) PAddress ---> PNo, ONo, OName RNo ---> RName ONo ---> Oname
Table Instance RNo RName PNo PAddress Start Finish Rent Ono OName R101 John P1001 1001 main 1-1-04 12-31-04 350 O100 Tina R102 Mike P1001 1001 main 1-1-05 2-28-05 380 O100 Tina R103 Kay P1001 1001 main 3-1-05 12-31-05 380 O100 Tina R101 John P1002 2001 main 1-1-05 12-31-05 550 O110 Tony R105 Scot P1009 1009 first 1-1-04 5-31-04 350 O109 Tony PNo, Start ---> All other attributes (Partial on Primary Key) PNo ---> PAddress, ONo, OName Not in 2NF! Poor Performance Redundancy Inconsistency
Decompose Lease into 2NF Lease (RNo, RName, PNo, PAddress, Start, Finish, Rent, ONo, OName) Primary Key: PNo, Start Partial FD on Primary Key PNo ---> PAddress, ONo, OName Remove partial dependent on Primary Key Create a new relation Which attributes are in the new relation? All attributes in (both side of) the partial FD Lease1 (PNo, PAddress, ONo, OName) Which attributes are left in the original relation? PK remains the same Lease2 (RNo, RName, PNo, Start, Finish, Rent) PK and FK?
Lease1 (PNo, PAddress, ONo, OName) Primary Key: PNo Alternate Key: PAddress Foreign Key: None (from this conversion Functional Dependencies: PNo ---> All other attributes PAddress ---> PNo, ONo, OName ONo ---> OName In 2NF? Lease2 (RNo, RName, PNo, Start, Finish, Rent) Primary Key: PNo, Start Alternate Key: PNo, Finish Foreign Key: PNo references Lease1 Functional Dependencies: PNo, Start ---> All other attributes PNo, Finish ---> All other attributes RNo ---> Rname In 2NF?
Relation/Table Instances Lease Rno RName PNo PAddress Start Finish Rent Ono OName R101 John P1001 1001 main 1-1-04 12-31-04 350 O100 Tina R102 Mike P1001 1001 main 1-1-05 2-28-05 380 O100 Tina R103 Kay P1001 1001 main 3-1-05 12-31-05 380 O100 Tina R101 John P1002 2001 main 1-1-05 12-31-05 550 O110 Tony R105 Scot P1009 1009 first 1-1-04 5-31-04 350 O109 Tony Lease1 PNo PAddress ONo OName P1001 1001 main O100 Tina P1001 1001 main O100 Tina P1001 1001 main O100 Tina P1002 2001 main O110 Tony P1009 1009 first O109 Tony Lease1 = PNo, PAddress, Ono, OName (Lease)
Removing Duplicates Lease1 PNo PAddress ONo OName P1001 1001 main O100 Tina P1001 1001 main O100 Tina P1001 1001 main O100 Tina P1002 2001 main O110 Tony P1009 1009 first O109 Tony Lease1 P1001 1001 main O100 Tina P1002 2001 main O110 Tony P1009 1009 first O109 Tony
Lease RNo RName PNo PAddress Start Finish Rent Ono OName R101 John P1001 1001 main 1-1-04 12-31-04 350 O100 Tina R102 Mike P1001 1001 main 1-1-05 2-28-05 380 O100 Tina R103 Kay P1001 1001 main 3-1-05 12-31-05 380 O100 Tina R101 John P1002 2001 main 1-1-05 12-31-05 550 O110 Tony R105 Scot P1009 1009 first 1-1-04 5-31-04 350 O109 Tony Lease2 RNo RName PNo Start Finish Rent R101 John P1001 1-1-04 12-31-04 350 R102 Mike P1001 1-1-05 2-28-05 380 R103 Kay P1001 3-1-05 12-31-05 380 R101 John P1002 1-1-05 12-31-05 550 R105 Scot P1009 1-1-04 5-31-04 350 Lease2 = RNo, RName, RNo, Start, Finish, Rent (Lease)
Some FDs are lost Lease (RNo, RName, PNo, PAddress, Start, Finish, Rent, ONo, OName) PAddress, Start ---> All other attributes PAddress, Finish ---> All other attributes Lease1 (PNo, PAddress, ONo, OName) Lease2 (RNo, RName, PNo, Start, Finish, Rent)
Example Relation R (A, B, C, D, E, F) Primary Key: A, B Alternate Key: None Foreign Key: None Functional Dependencies: A, B ---> All A ---> C B ---> E, F In 2NF? NO!
Table Instance A B C D E F 1 x 10 100 cs se 1 y 10 200 cs ee 2 x 20 300 cs se 2 y 20 400 cs ee Functional Dependencies: A, B ---> All A ---> C B ---> E, F
Decompose table R into 2NF R (A, B, C, D, E, F) Functional Dependencies: A, B ---> All A ---> C B ---> E, F R1 (A, C) Primary Key: A Alternate Key: None Foreign Key: None Functional Dependencies: A ---> C R2 (B, E, F) Primary Key: B Alternate Key: None Foreign Key: None Functional Dependencies: B ---> E, F R3 (A, B, D) Primary Key: A, B Alternate Key: None Foreign Key: A References R1 B References R2 Functional Dependencies: A, B ---> D
Table Instance R A B C D E F 1 x 10 100 cs se 1 y 10 200 cs ee 2 x 20 300 cs se 2 y 20 400 cs ee R3 A B D 1 x 100 1 y 200 2 x 300 2 y 400 R1 A C 1 10 2 20 R2 B E F x cs se y cs ee