Check if relation is in BCNF I have the following relation and function dependencies.

R = ABCDE
F: C-&gt;AB, D-&gt;A, BE-&gt;CE, E-&gt;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?
"Armstrong's axioms are a set of axioms (or, more precisely, inference rules) used to infer all the functional dependencies on a relational database"(link).


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 dependency BE->E can be skipped. BE->C can be replaced by E->C because from BE->C and E->B one can deduce E->C. Therefore the set of functional dependencies can be reduced to: 


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


A and 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 system 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.