to a canonical cover
.
is a set of dependencies such that
logically
implies all dependencies in
, and vice versa.
must also have the following properties:
in
contains no extraneous attributes in
(ones that can be
removed from
without changing
).
So
is extraneous in
if
and 
logically implies
.
in
contains no extraneous attributes in
(ones that can be
removed from
without changing
).
So
is extraneous in
if
and 
logically implies
.
is unique.
That is there are no two dependencies
and
in
such that
.
for
,
and
with
.
to see
if there is an extraneous attribute in
.
to see
if there is an extraneous attribute in
.
, and the set
of
functional dependencies

we will compute
.

We can replace these two with just A
BC .
is extraneous in AB
C because
B
C logically implies AB
C .

is extraneous in A
BC because
A
B and B
C logically imply that
A
BC .
