Let's say we have a relation $R$ with a set of functional and multivalued dependencies $F$, and we found a dependency that violates some normal form. Then we decompose $R$ into $R_1$ and $R_2$. How to compute the corresponding sets of dependencies $D_1$ and $D_2$?

I'm not sure if we can just take all dependencies (probably inferred by Armstrong's axioms) from $D$ which work only on attributes in a corresponding new relation, because we can lose one of the original FDs or MVDs.

Like in the famous example, $R(A, B, C)$ with $\{AB \rightarrow C, C \rightarrow B\}$ and candidate keys $AC, AB$.
The $C \rightarrow B$ violates the BCNF, since $C$ is not a superkey.
We can't just decompose it into $R_1(C, B)$ and $R_2(C, A)$, because we then lose the $AB \rightarrow C$.

So the question is how to make sure the decomposition doesn't break our original set of dependencies and how to infer new ones for new relations?

UPDATE: I have found this is called dependency preserving decomposition. There are some algorithms I'm looking for, but I can't find them with proofs so I can understand how they work. Are there any?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.