How to solve multiple minimal covers for functional dependencies? I have the schema: a,b,c,d,e,g and the following functional dependencies:

b-&gt;c, dg-&gt;ce, bc-&gt;dg, e-&gt;a, g-&gt;bd

for which I want to find the minimal cover. It seems that more than one scenario is possible.

First I represent the dependencies by splitting the right-hand side:

b-&gt;c, dg-&gt;c, dg-&gt;e, bd-&gt;d, bc-&gt;g, e-&gt;a, g-&gt;b, g-&gt;d

For dg-&gt;c there's one extraneous attributed. Same goes for dg-&gt;e.

For bc-&gt;d the attribute c is extraneous as well as for bc-&gt;g.

For g-&gt;bd the attribute d is extraneous because if we have g-&gt;b then g+ = {gbcd} which contains d. 

So we have 4 possible minimal covers:

b-&gt;c, g-&gt;c OR g-&gt;e, b-&gt;d OR b-&gt;g, g-&gt;b, e-&gt;a.

The correct answer is g--&gt;c; g--&gt;e; b--&gt;g; e--&gt;a; g--&gt;b; g--&gt;d according to this tool.

I cannot get the same answer from simplifying my minimal cover. What am I doing wrong?
Starting from the dependencies:

b-&gt;c, dg-&gt;ce, bc-&gt;dg, e-&gt;a, g-&gt;bd


and splitting the right hand side, one obtain:

b-&gt;c, dg-&gt;c, dg-&gt;e, bc-&gt;d, bc-&gt;g, e-&gt;a, g-&gt;b, g-&gt;d


(Note that you have written bd-&gt;d instead of bc-&gt;d).

Then you have correctly found that the attribute d is  extraneous both in dg-&gt;c and dg-&gt;e, while c is extraneous both in bc-&gt;d and in bc-&gt;g. So that the set of dependencies is now:

b-&gt;c, g-&gt;c, g-&gt;e, b-&gt;d, b-&gt;g, e-&gt;a, g-&gt;b, g-&gt;d


Then you say:


  For g-&gt;bd the attribute d is extraneous because if we have g-&gt;b then g+ = {gbcd} which contains d


but no dependency g-&gt;bd exists (it has already been split in the two dependencies g-&gt;d and g-&gt;b).

The last step is to find the superfluous dependencies in:

b-&gt;c, g-&gt;c, g-&gt;e, b-&gt;d, b-&gt;g, e-&gt;a, g-&gt;b, g-&gt;d


that are b-&gt;d and b-&gt;c. So at the end we have:

g-&gt;c, g-&gt;e, b-&gt;g, e-&gt;a, g-&gt;b, g-&gt;d


which is exactly the answer given by the tool.

Finally, consider that actually a set of functional dependencies could have more than one minimal cover: this depends on the order in which the attributes and the dependencies are considered for the elimination.