I was just studying about the 3NF and the BCNF and then encountered a statement that:

3NF ensures lossless decomposition while BCNF does not.

How can we verify this using the basic definition of BCNF and 3NF?

1 Answer 1


The statement:

3NF ensures lossless decomposition while BCNF does not.

is incorrect, since both BCNF and 3NF produce decompositions that have the Lossless-join Decomposition property, that says that:

(R1,R2) is a lossless-join decomposition of R with respect to a set of FDs F if for every instance r of R that satisfies F:

πR1(r) ⋈ πR2(r) = r.

This can be seen since there is a theorem that says that a simple criterion for checking whether a decomposition (R1,R2) is lossless-join is that either:

R1 ∩ R2 → R1 ∈ F+, or

R1 ∩ R2 → R2 ∈ F+,

and both the algorithms for BCNF and 3NF produce decompositions that satisfies this property (see the literature on the subject, for instance the demonstration on Chapter 3 of: “Garcia-Molina, Hector. Database Systems: The Complete Book, Pearson Prentice Hall”).

What is true, and that differentiate 3NF from BCNF, is that the synthesis algorithm that produces the 3NF always preserves the dependencies of the original relation, while the analysis algorithm for the BCNF does not.

A decomposition (R1, R2) of R, given

FR1 ={X → Y | X → Y ∈ F+ ∧ XY ⊆ R1}, and

FR2 ={X → Y | X → Y ∈ F+ ∧ XY ⊆ R2}

preserves a dependency f iff f ∈ (FR1 ∪ FR2)+.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.