# Finding all possible minimal covers

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!

## 1 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.

• Thank you very much. Does that mean that all possible covers are simply the different combinations? Because of the specific FDs of the Relation I thought that using any one of them could result in a minimal cover. So having A -> B would also cover C by having B -> C. I might be wrong but then any singly FD could be a minimal cover by itself? Oct 10, 2019 at 8:04
• @BlackPearl, to find a canonical cover one should use one of the algorithms. Those algorithms examines the FDs in a certain order. If you change the order you can obtain different canonical covers. Maybe changing the order of the FDs in all the possible ways can produce all the possible canonical covers, but this algorithm would be exponential. Oct 10, 2019 at 16:15