Database functional dependency BCNF help

normalization

I understand most of BCNF and have been able to complete numerous problems with it, I'm just having trouble applying it to the following situation:

R(A,B,C,D,E) FDs: { A->D; BE->A; CD->E }

Here's what I have so far:

Relationship1: (A,D)
Relationship2: (A,B,E)
Relationship3: (B,C,E)

However with this setup the CD->E functional dependency isn't considered. Should that be taken into account in a new relationship, or should D (or maybe even A?) be added to Relationship 3?

For what it's worth, I determined that:

BCE+ = ABCDE
BE+ = ABDE
AC+ = ACDE

I'm just not sure where to go from here. Thanks in advance for the help.

Best Answer

Look up "dependency preservation".

It is a known phenomenon that when decomposing relation schemas (along some given FD), certain other FD's can become inexpressible.

In a complete logical design, they have to be reinstated as a constraint on the database. However, normalization theory does not cover constraints. Normalization theory deals only with relation schemas, not with constraints between them.

If you first decompose over CD->E (leaving ABCD / CDE), you can still further decompose over A->D (leaving AD / ABC / CDE), but you will now have "lost" the BE->A dependency.