BCNF vs 3NF
Fast recall
Quick revision
Core answer
X → Y, X must be a superkey. 3NF allows a dependency with a non-superkey determinant when the dependent attribute is prime. BCNF removes that exception, although a lossless BCNF decomposition may fail to preserve every functional dependency.Depth of normalization knowledge beyond the standard three normal forms
Saying BCNF is the same as 3NF or not being able to construct an example where a table is in 3NF but not BCNF
Explain that BCNF can sometimes not be achieved without losing functional dependencies
Interview-ready guide
Interview answer
BCNF is stricter than 3NF: every determinant must be a superkey. Suppose (student, subject) determines teacher, while each teacher determines one subject. The candidate keys are (student, subject) and (student, teacher). Because subject is part of a candidate key, teacher → subject can satisfy 3NF, but it violates BCNF because teacher is not a superkey. Split the relation into teaches(teacher, subject) and takes(student, teacher) so each determinant is a key in its own relation. The split is lossless, but in general a BCNF decomposition may make some dependencies impossible to enforce in one table, so dependency preservation must also be checked.
BCNF vs 3NF
Direct Answer
BCNF is stricter than 3NF: for every non-trivial functional dependency X → Y, X must be a superkey. 3NF allows a dependency with a non-superkey determinant when the dependent attribute is prime. BCNF removes that exception, although a lossless BCNF decomposition may fail to preserve every functional dependency.
Common Mistakes & Pitfalls
- Treating BCNF as automatically superior: A lossless BCNF decomposition can still lose dependency preservation, so check both properties.
- Checking only the primary key: Normal-form analysis uses every candidate key and every relevant functional dependency.
- Calling every determinant a candidate key: BCNF requires the determinant to be a superkey; it need not be minimal.
Check your understanding
Answer these without looking back at the article.
- Can you give an example of a table that is in 3NF but not in BCNF?
- Is it always better to achieve BCNF in a production schema?
Looking for a structured roadmap?
Every module on this page is also part of the full Java backend interview track.