## Question 2

### (a)

{A, C, D}, {A, D, F}, {A, B, D}

Basically you have to compute the closure of all subsets of attributes
testing which ones are minimal keys. You can take some shortcuts
however. Note every key must contain A and D since neither of these
attributes appear on the right side of any FDs. Working incrementally
starting with {A, D} yields the three keys above.

Grading:

2A -1.0 Each valid key missing.
2B -1.0 Included an extra invalid key.
### (b)

AC->B yields R1(A, B, C) [Yes] and R2(A, C, D, E, F) [No]

BD->F yields R1(B, D, F) [Yes] and R2(A, B, C, D, E) [No]

F->CE yields R1(C, E, F) [Yes] and R2(A, B, D, F) [No]

This follows directly from sections 3.6.3 and 3.6.4 from the book.

Grading:

1 point for each of the 4 parts
### (c)

ACD->E

This follows directly from section 3.5.7 from the book. Starting with AC
gets you B. Adding D gets you F, and therefore C and E. So on R you have
ACD->BFCE. Projecting this onto S removes B and F, yielding the
solution. (You can also remove C since it is trivially implied by the
left side).

Grading:

All or nothing.