Boyce-Codd Normal Form (3.5 NF)
เนื่องจากว่า 3NF นั้นยังมีปัญหาในจุดที่ บางกรณีที่ relation มี candidate key มากกว่า 1 ตัว และเป็น 3NF แล้วยังมีข้อมูลที่ซ้ำซ้อนอยู่ เนื่องจากว่า FD ของ non-prime attribute ไปอธิบาย primary key ได้
กฎการเป็น BCNF
- ต้องไม่มี attribute (ทั้ง non-prime และ prime) อธิบาย primary key ได้ (Trivial Functional Dependency)
- ตัวที่ไปชี้อีก attribute ต้องเป็น superkey หรือ candidate key
Teach(Student_id, Course_code, Instructor_id)
Instructor_id
สามารถอธิบาย Key Attribute Course_code
ได้ ทำให้ relation นี้ไม่เป็น BCNF
การแก้ไข
ดังนั้นต้องทำการแตกตาราง โดยเอา Instructor_id
กับ Course_code
ไปอยู่ตารางใหม่
Enroll(Student_id, Instructor_id)
Teach(Instructor_id, Course_code