# Lossless join in 3NF

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?

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)+.