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 a relation

R = { A, B, C, D, E, F, G, H, I }

And functional dependencies

F ={
E -> C
AB -> F
C -> G
F -> H
H -> IJ
F -> B

I am able to do simple BCNF decomposition but I can't decompose this. I have ABC as the only candidate key. Then I split it into two relations to get rid of the first FD that breaks BCNF, E -> C, giving me the relations

{ A, B, D, E, F, G, H, I, J } and { E, C }

But now straight away I have lost the candidate key from the first relation. So does this mean I have now have to find a new candidate key for the first relation and then continue with the process of decomposing it until we are left with no relations that violate BCNF? Could someone show me how to work out this decomposition?

share|improve this question
Are you sure ABC is the only candidate? Why not ABE or AFC? – ypercubeᵀᴹ Mar 19 '13 at 18:38
Yes, you're right. What is the best way of determining the candidate keys from functional dependencies? Doing it by observation is too prone to mistakes it seems. – csss Mar 19 '13 at 19:29

Your Answer


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

Browse other questions tagged or ask your own question.