Question 2


{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.


  • 2A -1.0 Each valid key missing.
  • 2B -1.0 Included an extra invalid key.


    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.


  • 1 point for each of the 4 parts



    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).


  • All or nothing.