BCNF (Boyce‑Codd Normal Form) is a stricter normalization level than 3NF. A relation is in BCNF if it is already in 3NF and every functional dependency X → Y is such that X is a super key (i.e., X contains a candidate key).

In simpler terms, in BCNF, only keys should determine non‑key attributes; no non‑key attribute should determine anything else.

Why BCNF Exists

BCNF fixes some subtle problems that 3NF may still allow:

  • 3NF permits a functional dependency where the determinant is a non‑key attribute, as long as the determined attribute is part of a candidate key.

  • BCNF removes even this case, making dependencies cleaner and more predictable.

Rules of BCNF

A table is in BCNF when:

  • It is in 3NF.

  • For every functional dependency XYX \to Y, the set XX is a super key (i.e., X+X^+ includes all attributes of the table).

If a functional dependency violates this, the table must be decomposed to remove the violation.

Example of BCNF

Consider a TEACHES table:

  • Course_ID, Professor_ID, Course_Name

Assume functional dependencies:

  • Course_ID → Course_Name

  • Course_Name → Course_ID

  • {Course_ID, Professor_ID} is the primary key.

Here, both Course_ID → Course_Name and Course_Name → Course_ID are allowed under 3NF but not under BCNF if neither Course_ID alone nor Course_Name alone is a key.

To bring this into BCNF, split into:

  • COURSE(Course_ID, Course_Name)

  • TEACHES(Course_ID, Professor_ID)

Now, each table contains only dependencies where the left side is a key.

How to Achieve BCNF

  1. Check each functional dependency XYX \to Y:

    • If XX is not a super key, the table is not in BCNF.

  2. Decompose the table using the violating FD to create smaller relations.

  3. Repeat until all tables satisfy BCNF.

Why BCNF Matters?

  • It is stricter than 3NF and removes more subtle anomalies.

  • It ensures that only super keys determine attributes, making the schema very clean.

  • BCNF schemas are often used when data integrity is critical, even though they may introduce more tables and joins.

Summary

BCNF in DBMS requires that every functional dependency has a determinant that is a super key. It is a tighter normalization level than 3NF and is used to eliminate certain types of dependencies that can still cause anomalies. For beginners, BCNF represents a “stronger” form of normalization that ensures keys are the only drivers of dependencies in the database.