Illustrative Example
Consider a set of Functional dependencies: F = {A -> BC, B -> C, AB -> C}.Here are the steps to find the canonical cover:
- Reduction: Combine dependencies with the same left-hand side: F = {A -> BC, B -> C}.
- Elimination: Remove extraneous attributes. In this case, C is an extraneous attribute in A → BC, also A → C is logically implied by A → B and B → C (by transitivity). F= { A → B, B → C }.
- Minimization: Since there are no redundant dependencies, the process is complete. The canonical cover is F = {A -> B, B -> C}.
Canonical Cover of Functional Dependencies in DBMS
Whenever a user updates the database, the system must check whether any of the functional dependencies are getting violated in this process. If there is a violation of dependencies in the new database state, the system must roll back. Working with a huge set of functional dependencies can cause unnecessary added computational time. This is where the canonical cover comes into play. A canonical cover of a set of functional dependencies F is a simplified set of functional dependencies that has the same closure as the original set F.
An attribute of a functional dependency is said to be extraneous if we can remove it without changing the closure of the set of functional dependencies