Why does 3NF Normal form allow transitive dependency of prime attributes

database-designrelational-theory

I'm a beginner in Relational Design, and I came across the definitions of 3NF and BCNF.

According to 3NF, Any non-trivial functional dependency X-> A shouldn't exist unless X is a super key or A is a prime attribute (Where as the BCNF doesn't allow the latter).

Is there a reason for this? How does this interpret? (i.e What does it mean?)

Best Answer

Normal forms are used to eliminate or at least reduce redundancy in data, as well as to eliminate the so called insertion/deletion anomalies.

The BCNF eliminates redundancies and anomalies, but decomposing a relation in BCNF sometimes has the unpleasant effect of causing the loss of one or more functional dependencies during the process.

For this reason the 3NF is used instead of the BCNF in practice, since a decomposition of a relation in this form always mantains data and dependencies, and reduces anomalies and redundancy (even if to a lesser extent that the BCNF).

Another reason is that the decomposition in 3NF can be obtained with a polynomial-time algorithm, while the decomposition in BCNF requires an exponential algorithm.