Calculating the Canonical Cover


{}
no explanations Deutsch English

Canonical Cover: The goal of this algorithm is to provide a minimal - in matters of redundancy - set of functional dependencies, equivalent to {A → B C, C → A D, E → A B C, F → C D, C D → B E F, A B → D}.

Reduction of the left side: For each attribute on the α-side of each functional dependency α → β we have to check if it is redundant, meaning that the same closure results also without that particular attribute.
The functional dependency {C D → B E F} can be reduced: The closure {A, B, C, D, E, F} on the α-side {C, D} with the functional dependencies also results without {D}. The new functional dependency is {C → B E F}.
The functional dependency {A B → D} can be reduced: The closure {A, B, C, D, E, F} on the α-side {A, B} with the functional dependencies also results without {B}. The new functional dependency is {A → D}.
Reduction of the right side: Based on the results of the left-reduction we have to check for each attribute on the β-side of the functional dependencies {A → B C, C → A D, E → A B C, F → C D, C → B E F, A → D} if it is redundant, meaning that the same closure results also without that particular attribute.
The functional dependency B = {A → B C} can be reduced: The closure {A, B, C, D, E, F} on the α-side {A} also results when the functional dependency is reduced by {B} on the β-side. The new functional dependency is {A → C}.
The functional dependency B = {C → A D} can be reduced: The closure {A, B, C, D, E, F} on the α-side {C} also results when the functional dependency is reduced by {A} on the β-side. The new functional dependency is {C → D}.
The functional dependency B = {C → D} can be reduced: The closure {A, B, C, D, E, F} on the α-side {C} also results when the functional dependency is reduced by {D} on the β-side. The new functional dependency is {C →∅}.
The functional dependency B = {E → B C} can be reduced: The closure {A, B, C, D, E, F} on the α-side {E} also results when the functional dependency is reduced by {C} on the β-side. The new functional dependency is {E → B}.
The functional dependency B = {C → B E F} can be reduced: The closure {A, B, C, D, E, F} on the α-side {C} also results when the functional dependency is reduced by {B} on the β-side. The new functional dependency is {C → E F}.
The functional dependency B = {A → D} can be reduced: The closure {A, B, C, D, E, F} on the α-side {A} also results when the functional dependency is reduced by {D} on the β-side. The new functional dependency is {A →∅}.
Removing of "empty" functional dependencies: In the last step with the result {A → C, C →∅, E → A B C, F → C D, C → E F, A →∅} there might've remained functional dependencies of the form α → ∅ that now have to be removed.
The functional dependency {C →∅} can be removed.
The functional dependency {A →∅} can be removed.
Combining: The new functional dependencies {A → C, E → A B C, F → C D, C → E F} with the same α-side have to be combined in this step.

Canonical Cover: {A → C, E → A B C, F → C D, C → E F}