Database Management System (DBMS) / Normalization in DBMS

BCNF

βœ… What is BCNF?

A table is in BCNF if:

  1. It is in 3NF

  2. Every determinant is a candidate key


πŸ’‘ What is a Determinant?

A determinant is an attribute (or set of attributes) on the left-hand side of a functional dependency.

For example:

If A β†’ B, then A is the determinant.

❗ BCNF handles a specific issue that 3NF doesn’t always catch β€” When a non-candidate key becomes a determinant.


🧾 Example (3NF but Not in BCNF):

🏫 Course_Teacher Table:

Course

Teacher

Room

DBMS

Roy

101

OS

Roy

101

AI

Khan

102

Functional Dependencies:

  • Course β†’ Teacher βœ…

  • Teacher β†’ Room ❌ Problem here!

Candidate Key = Course

But Teacher is not a candidate key, yet it determines Room.

❌ Violates BCNF (Teacher is a determinant but not a candidate key)



🧠 Key Concepts Recap:

Concept

In BCNF?

1NF + Atomic values

βœ… Yes

2NF + No partial dependencies

βœ… Yes

3NF + No transitive dependencies

βœ… Yes

Every determinant is a candidate key

βœ… Yes


πŸ› οΈ Why Use BCNF?

  • Fixes edge cases that 3NF misses

  • Ensures perfectly non-redundant design

  • Avoids data anomalies caused by hidden dependencies