I have the following functional dependencies for the schema R=(a,b,c,d,e,g):

  • {b→c, dg→ce, bc→dg, e→a, g→bd}.

I want to decompose R into two schema's: R1=(a,b,c,e) and R2=(b,d,g) and make sure the functional dependencies are still preserved.

For this schema the candidate keys are b and g. Therefore R1 will contain these dependencies: b→ace and ce→a while R2 will contain bg→d.

I think that the decomposition preserves all the dependencies because:

  1. We can remove ae from b→ace and get b→c (b is a candidate key so b→c holds). This way we get our first original dependency.
  2. We can represent bg→d also as dg→b because g is a candidate key and the closure of G contains B (certainly after the addition of another attribute to G dg→b still holds). Because b is a candidate key then b→ce because B+ contains CE then by the rule of transitivity: dg→b→cedg→ce which proves that another original dependency is preserved.

Using similar tricks preservation of all other original dependencies can be proven. I'm wondering if my logic is correct and transitivity tricks are allowed to prove preservation.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.