enter image description here

For the question above, I am confused with how to approach simplifying the left hand side of BDCE->A. Do I get rid of E, as D depends on it, or do I get rid of CD as well, as CD->A?

Here's what I thought I did: Computed the closure of B,C,D,E,BC,BD,DE,CD,CE,BCD,BCE,BDE,CDE, then saw which closures actually use the dependency BCDE->A, and which dependencies actually get A. So far, CD is the smallest amount of attributes that get A.

The above leaves me with CD->A. Is this correct?


1 Answer 1


The algorithm to compute the minimal cover of a set of dependencies requires that, when there are multiple attributes on the left part, we should eliminate the extraneous ones, that is the attributes such that the remaining ones still determine the right part.

In other words, if you have a dependency like BCDE → A, you should in turn try to eliminate each attribute on the left part, and see if A is contained in the closure of the remaining attributes.

Let’s try the algorithm in your case:

1. Try to eliminate B, and see if A ∈ CDE⁺; CDE⁺ = ABCDE, so B can be eliminated
2. Try to eliminate C from CDE, and see if A ∈ DE⁺; DE⁺ = ABCDE, so C can be eliminated
3. Try to eliminate D from DE, and see if A ∈ E⁺; E⁺ = BCE, so D cannot be eliminated
4. Try to eliminate E from DE, and see if A ∈ D⁺; D⁺ = ABCDE, so E can be eliminated

So, the dependency BCDE → A can be substituted by D → A. Applying this algorithm to all the dependencies (remember to check at the end if there are superfluous dependencies), produces the following canonical cover:

D → A
D → E
E → B
E → C

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.