Canonical cover


A canonical cover for F is a set of dependencies such that F logically implies all dependencies in, and logically implies all dependencies in F.
The set has two important properties:
  1. No functional dependency in contains an extraneous attribute.
  2. Each left side of a functional dependency in is unique. That is, there are no two dependencies and in such that.
A canonical cover is not unique for a given set of functional dependencies, therefore one set F can have multiple covers.

Algorithm for computing a canonical cover ''Database system concepts'' by Abraham Silberschatz et al

  1. Repeat:
  2. # Use the union rule to replace any dependencies in of the form and with ..
  3. # Find a functional dependency in with an extraneous attribute and delete it from
  4. ... until does not change