1
$\begingroup$

Any schema that satisfies BCNF also satisfies 3NF. But how can this be true if BCNF does not necessarily guarantee dependency preservation, whereas 3NF guarantees dependency preservation?

$\endgroup$
2
$\begingroup$

Because they are two different concepts.

A schema satisfies 3NF iff for every functional dependency in the relation such as X -> A, X is a key or A is prime (part of the key).

A schema satisfies BCNF iff for every functional dependency in the relation such as X -> A, X is a key.

You can clearly see from these definitions that every BCNF must also satisfy 3NF. However, precisely for the reason that to achieve BCNF you may need some extra splitting on the relations, it could be impossible to preserve all the FDs.

I'll give you an example: say you have a relation

R(A, B, C, D, E)

With FDs:

ABCD -> E
E -> BCD

This relation is in 3NF since E depends on the key and BCD is prime; however, since BCNF doesn't have the prime clause, the relation fails BCNF due to E -> BCD.

On the other hand, when you break down the relation to meet BCNF

R1(E, B, C, D), R2(A, E)

the FD ABCD -> E is lost because of the over-splitting we had to do.

$\endgroup$

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.