(COMPLETE ANSWERS)
2025 (865742) - DUE 5
September 2025
For assistance contact
Email:
, A 3NF relation is in BCNF (Boyce-Codd Normal Form) when every determinant in the table is a
candidate key. It's not in BCNF when there is at least one determinant that is not a candidate key.
3NF to BCNF: When it is not
A table can be in 3NF but not in BCNF if it has a composite primary key and a non-key
attribute that depends on part of the primary key, or if it has overlapping candidate keys where
one key depends on a non-key attribute. The canonical example is a table with overlapping
candidate keys.
Let's imagine a small training company's database with a table called
COURSE_REGISTRATION.
Example:
Table: COURSE_REGISTRATION (StudentID, CourseName, Instructor)
Functional Dependencies:
o StudentID, CourseName -> Instructor (A specific student registers for a specific
course, and that course is taught by a specific instructor).
o Instructor, CourseName -> StudentID (A specific instructor teaches a specific
course, and that is a unique combination for a student).
o CourseName -> Instructor (Each course has only one instructor).
In this case:
1. The candidate keys are (StudentID, CourseName) and (Instructor, CourseName).
2. The table is in 3NF because there are no non-key attributes that depend on other non-key
attributes (transitive dependency). The functional dependency CourseName -> Instructor
is allowed in 3NF because Instructor is not a non-key attribute; it's part of a candidate
key.
3. However, the table is not in BCNF because we have a determinant, CourseName, that is
not a candidate key, but determines Instructor. The BCNF rule is stricter: every
determinant must be a candidate key. The redundancy is obvious: if Math is taught by Dr.
Nxumalo, this information is repeated for every student taking the Math course.