Presentation is loading. Please wait.

Presentation is loading. Please wait.

Boyce-Codd Normal Form (BCNF)

Similar presentations


Presentation on theme: "Boyce-Codd Normal Form (BCNF)"— Presentation transcript:

1 Boyce-Codd Normal Form (BCNF)
Definition R in 1NF and Every determinant (the left side) of any FD is a candidate key.

2 Not in BCNF SurgeryRoomSchedule (staffNo, dentistName, patNo, patName, surgeryNo, date, time) PK: surgeryNo, Date, Time AK: staffNo, Date, Time patNo, Date, Time FK: None FDs: surgeryNo, Date, Time ===> staffNo, patNo (All) staffNo, Date, Time ===> surgeryNo, patNo (All) patNo, Date, Time ===> staffNo, surgeryNo (All) (The determinants are NOT candidate keys) staffNo ===> dentistName (transitive on PK) patNo ===> patName (transitive on PK) staffNo, Date ===> surgeryNo (surgeryNo is a PK attribute!)

3 Different PK SurgeryRoomSchedule (staffNo, dentistName, patNo, patName, surgeryNo, date, time) PK: staffNo, date, time AK: surgeryNo, date, time patNo, date, time FK: None staffNo, Date, Time ===> patNo, surgeryNo (All) surgeryNo, Date, Time ===> staffNo, patNo (All) patNo, Date, Time ===> staffNo, surgeryNo (All) staffNo ===> dentistName (partial on PK) patNo ===> patName (transitive on PK) staffNo, Date ===> surgeryNo (partial on PK!)

4 SurgeryRoomSchedule (staffNo, dentistName, patNo, patName, surgeryNo, date, time) PK: surgeryNo, Date, Time FDs: surgeryNo, Date, Time ===> staffNo, patNo (All) staffNo, Date, Time ===> surgeryNo, patNo (All) patNo, Date, Time ===> staffNo, surgeryNo (All) staffNo ===> dentistName (determinant is NOT candidate key) patNo ===> patName (determinant is NOT candidate key) staffNo, Date ===> surgeryNo (determinant is NOT candidate key) New Tables in BCNF Staff (staffNo, dentistName) Patient (patNo, patName) RoomAllocation (staffNo, Date, surgeryNo) Schedule (staffNo, patNo, date, time) PK & FK!

5 Staff (staffNo, dentistName)
PK: staffNo AK: None FK: None FDs: staffNo ===> dentistName SurgeryRoomSchedule (staffNo, patNo, date, time) PK: staffNo, date, time AK: patNo, date, time FK: staffNo references Staff patNo references Patient staffNo, Date references Room FDs: staffNo, Date, Time ===> patNo patNo, Date, Time ===> staffNo PK and AK can be switched. Patient (patNo, patName) PK: patNo AK: None FK: None FDs: patNo ===> patName RoomAllocation (staffNo, Date, surgeryNo) PK: staffNo, Date AK: None FK: staffNo references Staff staffNo, Date ===> surgeryNo

6 Staff (staffNo, dentistName)
PK: staffNo AK: None FK: None FDs: staffNo ===> dentistName staffNo dentistName S Tony Smith S Helen Pearson S Robin Plevin S Tony Smith dentistName will be removed from the original table, But staffNo remains in the original table.

7 Patient (patNo, patName)
PK: patNo AK: None FK: None FDs: patNo ===> patName patNo patName P Gillian White P Jill Bell P Ian MacKay P John Walker patName will be removed from the original table, But patNo remains in the original table.

8 RoomAllocation (staffNo, Date, surgeryNo) PK: staffNo, Date AK: None FK: staffNo references Staff FDs: staffNo, Date ===> surgeryNo staffNo Date surgeryNo S Sep-04 S15 S Sep-04 S15 S Sep-04 S10 S Sep-04 S13 S Sep-04 S15 surgeryNo will be removed from the original table, But staffNo and Date remains in the original table.

9 SurgeryRoomSchedule (staffNo, patNo, date, time)
PK: patNo, date, time AK: staffNo, date, time FK: staffNo references Staff patNo references Patient staffNo, Date references RoomAllocation FDs: staffNo, Date, Time ===> patNo patNo, Date, Time ===> staffNo staffNo patNo date time S P Sep :00 S P Sep :00 S P Sep :00 S P Sep :00 S P Sep :30 S P Sep :00 S P Sep :00

10 SurgeryRoomSchedule (staffNo, patNo, date, time, surgeryNo)
PK: patNo, date, time AK: staffNo, date, time FK: staffNo references Staff patNo references Patient staffNo, Date references RoomAllocation FDs: staffNo, Date, Time ===> patNo patNo, Date, Time ===> staffNo staffNo, Date ===> surgeryNo

11 Schedule (staffNo, patNo, date, time)
PK: patNo, date, time AK: staffNo, date, time FK: staffNo references Staff patNo references Patient staffNo, Date references RoomAllocation FDs: staffNo, Date, Time ===> patNo patNo, Date, Time ===> staffNo staffNo patNo date time S P Sep :00 S P Sep :00 S P Sep :00 S P Sep :00 S P Sep :30 S P Sep :00 S P Sep :00


Download ppt "Boyce-Codd Normal Form (BCNF)"

Similar presentations


Ads by Google