Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have the following relation and function dependencies.

F: C->AB, D->A, BE->CE, E->B

I have to check whether this relation is in BCNF.

Wikipedia states:

...if and only if for every one of its dependencies X → Y, at least one of the following conditions hold:[4] X → Y is a trivial functional dependency (Y ⊆ X) X is a superkey for schema R

So first I went on to find the superkeys.

Since D is not on the right side, I'm assuming the superkey must contain D in it.

What I thought is that the only superkey is DE. Is this correct?

And if the only superkey is DE, then the relation is not in BCNF because none of the functional dependencies have the superkey on the left.

Can anyone point out if I'm mistaken?

share|improve this question
I guess you mean the DE is the only minimal superkey. But why isn't DC too? How did you get to this result? Why isn't DB or DA or DAB a superkey as well? – ypercubeᵀᴹ Dec 4 '12 at 13:34
Another question you should consider: is R in 3NF? Is it in 2NF? If not, it's surely not in BCNF either. – ypercubeᵀᴹ Dec 4 '12 at 13:45
DC is not for sure, because CLOSURE(DC, F) = DCAB. I got this result by trying out the combinations DA, DB, DC, DE and finding that only DE is the superkey. I'm curious whether my way to directly check if this relation is in BCNF is correct (I don't want to test for 3NF/2NF). – Tool Dec 4 '12 at 14:08
Again; you mean minimal superkey. The whole R ABCDE is trivially a superkey, too, so DE cannot be the only superkey. – ypercubeᵀᴹ Dec 4 '12 at 14:10
You're right - but I'm still curious about whether my conclusion that this relation IS NOT in BCNF - based on the fact that the minimal superkey is DE - is correct? Or can checking for BCNF be done differently? – Tool Dec 4 '12 at 14:12
  • R: ABCDE
  • F: C->AB, D->A, BE->CE, E->B

BE->CE can be split in BE->C and BE->E. The trivial functional dependenciy BE->E can be skipped. BE->C can be replaced by E->C becuause from BE->C and E->B one can deduce E->C. Therefor the set of functional dependencies can be reduced to

  • R: ABCDE
  • F: C->AB, D->A, E->C, E->B

A an B cannot be member of a key because they cannot be found on the left site of a functional dependency. So it is sufficient to search all keys of the relational system (remove the Attributes A B from R and all functional dependencies containing A and B)

  • R: CDE
  • F: E->C

C is not on the left side of a functional dependcy so again one can reduce the system to

  • R: DE
  • F:

so the list F of functional identities is empty. The only key of this relational sytem is DE which is also the only key of the unreduced systems. So your answer of your first question is true.

You can use this page to find your candidate keys

To check if the system is in BCNF it is not necessary to find all candidate keys. It is sufficient to find one functional dependency which has a left side that is no a key.

C->AB is such a functional dependency: C is not a key because the closure of C is C. This means that no further attributes can be generated by applying functional dependencies on C.

You can use this page to find check if a relation is in normal form.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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