Finding all possible minimal covers

database-designdependenciesnormalizationrelational-theory

I have a relation schema R = {A, B, C} and the following functional dependencies:

  • A → B
  • A → C
  • B → A
  • B → C
  • C → A
  • C → B

How many different minimal covers can I derive from this relation schema? I have found the following, but I am not really sure if those are all:

  • A → C
  • B → C
  • C → A
  • C → B

Also, I am not sure if there is some rule on how to know if one has found all possible minimal covers.

Thanks a lot for any help!

Best Answer

In general, there are different canonical covers of a set of functional dependencies, and a canonical cover is called minimal if it has less dependencies of any equivalent cover.

So, for instance, in your example the cover:

A → B
B → C
C → A

is minimal, because it has 3 dependencies and it is not possible to find a cover with less dependencies.

There are several definitions and algorithms of cover. For instance, the Chapter 5 of "The Theory of Relational Databases" of Maier, D. Computer Science Press, 1983, describes several kinds of cover (nonredundant, canonical, minimal, optimal, annular), and different algorithms to find them, but for what I know nobody has given a formal algorithm to find all the possible minimal cover.