Canonical cover
A canonical cover  for F (a set of functional dependencies on a relation scheme) 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:
 No functional dependency in  contains an extraneous attribute. 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 

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

Canonical cover example 
In the following example, Fc is the canonical cover of F.

Given the following, we can find the canonical cover: R = (A, B, C, G, H, I) F = {A→BC, B→C, A→B, AB→C}

 {A→BC, B→C, A→B, AB→C}
 {A → BC, B →C, AB → C}
 {A → BC, B → C}
 {A → B, B →C}

Fc =  {A → B, B →C}

Extraneous Attributes 
An attribute is extraneous in a functional dependency if its removal from that functional dependency does not alter the closure of any attributes. Extraneous Determinant Attributes 
Given a set of functional dependencies  and a functional dependency  in , the attribute  is extraneous in  if  and any of the functional dependencies in  can be implied by  using Armstrong's Axioms. Using an alternate method, given the set of functional dependencies , and a functional dependency X → A in , attribute Y is extraneous in X if , and . For example:

 If F = {A → C, AB → C}, B is extraneous in AB → C because A → C can be inferred even after deleting B. This is true because if A functionally determines C, then AB also functionally determines C.
 If F = {A → D, D → C, AB → C}, B is extraneous in AB → C because {A → D, D → C, AB → C} logically implies A → C.

Extraneous Dependent Attributes 
Given a set of functional dependencies  and a functional dependency  in , the attribute  is extraneous in  if  and any of the functional dependencies in  can be implied by  using Armstrong's Axioms. A dependent attribute of a functional dependency is extraneous if we can remove it without changing the closure of the set of determinant attributes in that functional dependency. For example:

 If F = {A → C, AB → CD}, C is extraneous in AB → CD because AB → C can be inferred even after deleting C.
 If F = {A → BC, B → C}, C is extraneous in A → BC because A → C can be inferred even after deleting C.

References 

Database theory
Mathematical concepts
Database algorithms