Canonical cover explained
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.
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
[1] 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 =
Fc =
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.[2]
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
(F-(A → B)\cup{(A-a) → B})
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
.
[3] For example:
- If F =, 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 =, B is extraneous in AB → C because 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
(F-(A → B)\cup\{A → (B-a)\})
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 =, C is extraneous in AB → CD because AB → C can be inferred even after deleting C.
- If F =, C is extraneous in A → BC because A → C can be inferred even after deleting C.
Notes and References
- Book: Silberschatz . Abraham . Database system concepts . 2011 . McGraw-Hill . New York . 978-0073523323 . Sixth . https://web.archive.org/web/20201108175024/https://mucse44.net/wp-content/uploads/2019/09/Database-System-Concepts-7th-Edition.pdf . 2020-11-08.
- Book: Elmasri, Ramez . Fundamentals of database systems . 2016 . Sham Navathe . 978-0-13-397077-7 . Seventh . Pearson . Hoboken, NJ . 913842106.
- Web site: K . Saravanakumar . asamy . How to find extraneous attribute? An example. . 2023-03-14 . en.