Canonical Cover of Functional Dependencies
The canonical cover of functional dependencies is a minimal set of FDs which is equivalent to the original set of functional dependencies. It is needed for normalizing into 3NF via the synthesis algorithm.
Please note that there can exist multiple canonical covers depending on the order of operations!
The solution given here may not be the only valid one.
III. Remove FDs with empty sets
IV. Combine FDs with same domain
Synthesis Algorithm (3NF)
The synthesis algorithm converts any relation losslessly and dependency-preserving into (at least) 3NF.
Please note that different relations can be synthesized depending on the order of operations!
The solution given here may not be the only valid one.
I. Calculate the canonical cover of FDs
II. Convert every FD into its own relation
III. Add a relation with a candidate key if no relation already includes it
IV. Remove all relations which are already included in other relations
Decomposition Algorithm (BCNF, 4NF)
The decomposition algorithm converts any relation losslessly into any desired normal form up to 4NF. The algorithm splits every non-conforming relation into two until every relation fulfills the target normal form. Note that the decomposition may not produce dependency-preserving relations, unlike the synthesis algorithm!
Please note that different relations can be synthesized depending on the order of operations!
The solution given here may not be the only valid one.
Decomposition into BCNF
Decomposition into 4NF