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?)

1 Answer 1


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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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