Correct Answer - Option 3 : {AB} → C and B → C
Concept:
Rules for defining functional dependencies(FD) :
1) If LHS of FD are all different, then we can directly say that FD holds true.
2) If LHS of FD are same, then check the corresponding value of RHS, that should be same for all the matching value of LHS. Otherwise FD will not hold true.
Explanation:
Option 1: {AB} → D and D → A
Here, first consider AB -> D
Check AB first, all the values of AB are different, so AB-> D holds true.
Now check D-> A, in D two values are same i.e. d3. So, we have to check the corresponding RHS of d3.
These are different. As for one d3, value of A is a2 and for another d3 value of A is a3. So, D-> A does not hold true.
Option 2: AB-> C and B-> D
AB -> C holds true. As all the values of AB are different.
For B-> D, first check LHS, all the values of B are not same. There are two b2 in B.
So, check RHS for b2 in D. Both values are different : one is d2 and another is d3. So, B -> D does not hold true.
Option 3: AB -> C and B-> C
AB -> C holds true. As all the values of AB are different.
Now check B-> C, in B all the values are not same. So, we have to check value of C corresponds to b2. Both the values in C are same for b2. So, B -> C holds true.
So, in this both the FD holds true.
Option 4: AB -> D and A -> D
AB -> D holds true. Check A -> D. All the values are not same in A i.e. a1. SO check the values in D for a1 Values in D for a1 are different one is d1 and another is d2. So, A-> D does not hold true.