There is an MVD question in HW3 Part 3 that asks you to tell which dependency
does not follow from given FD's A->->B, B->->D,and D->E.
People tend to think that almost nothing follows from these, but in fact more
follows than you might think.  Here's a general technique that can help you
conclude that an FD, say M->N, follows from some given dependencies.
Start with a relation that has only two tuples, which agree in M and disagree in N
and all other attributes, say (m,n1,o1,p1,...) and (m,n2,o2,p2,...).
Use the given MVD's to conclude that certain other tuples need to be in the
relation.  With these new tuples, you find that there are now in the
relation certain pairs
of tuples that agree on other attributes besides M.  Now you can
use the given FD's to conclude certain symbols that you thought were different
are really the same.   If you conclude that n1=n2, then you have proved M->N
follows from the given dependencies.
In the most general case, you need to jump back and forth between using MVD's
to add tuples and FD's to equate symbols, but I don't think it is necessary here.


1. Suppose the relation R(A,B,C,D,E) satisfies MVD's A->->B and B->->D, 
and the FD D->E. Which of the following dependencies does R not 
necessarily satisfy?    
 a)  A->->D 
 b)  A->->CE 
 c)  B->D 
 d)  A->E 

Through the transitive property, we know that since A->->B and B->->D, 
A->->D should also exist. So the answer is not (a).
 
Take an example:

(a1, b1, c1, d1, e1)
(a1, b2, c2, d2, e2)

Note that d1->e1 and d2->e2

Applying A->->D, we get:

(a1, b1, c1, d2, e1)
(a1, b2, c2, d1, e2)

Now we get: d1 -> e1, d1 -> e2, d2 -> e2, and d2 -> e1, which means that 
e1 = e2.

This implies that A -> E as a1->e1 and a1->e2, but e1 = e2.

So (d) is not the answer.

Applying A->->B, we get:

From the original tuples:
(a1, b1, c2, d2, e2)
(a1, b2, c1, d1, e1)

From the tuples derived through A->->D
(a1, b1, c2, d1, e2)
(a1, b2, c1, d2, e1)

From the above four tuples:
(a1, b1, c1, d1, e1) -- already exists
(a1, b1, c1, d2, e1)
(a1, b2, c2, d2, e2) -- already exists
(a1, b2, c2, d1, e2)


Note here that A->->CE exists and so does A->E.

This leads us to conclude that B->D does not necessarily exist in this 
case. This is because all FD's are MVD's, not vice-versa.