BOYCE CODD NORMAL FORM
Boyce-Codd Normal Form (BCNF) is an advanced version
of 3NF used to reduce redundancy in databases.
It ensures that for every functional dependency, the left
side must be a superkey.
This helps create cleaner and more consistent database
designs, especially when there are multiple candidate
keys.
To test whether a relation is in BCNF, we identify all the
determinants and make sure that they are candidate
keys.
Key Notes:
1. To verify BCNF, identify all determinants (left side of FDs)
and check whether each is a candidate key.
2. If a relation is in BCNF, it is automatically in 3NF, 2NF,
and 1NF as well.
The normal forms become stricter as we move from 1NF →
2NF → 3NF → BCNF:
1NF: Each field must hold atomic (indivisible) values.
2NF: No partial dependency on a primary key.
3NF: No transitive dependency on a primary key.
BCNF: Every determinant must be a candidate key.
This progression ensures better structure and removes
redundancy at each level.
Why Do We Need BCNF?
2NF and 3NF may allow anomalies if a functional
dependency exists where the determinant is not a
superkey.
BCNF handles edge cases where 3NF fails to remove all
redundancy, especially in tables with multiple candidate
keys.
Prevents update, insert, and delete anomalies by
ensuring every determinant is a superkey.
Makes database design more robust and easier to
maintain over time.
Improves data consistency and clarity by removing
hidden or indirect dependencies.
EXAMPLE 1
Consider a relation R with attributes (student, teacher,
subject).
FD: { (student, Teacher) -> subject, (student, subject) ->
Teacher, (Teacher) -> subject}
To test whether a relation is in BCNF, we identify
all the determinants and make sure that they are
can