# How to check if functional dependencies are preserved?

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→ce``dg→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.