The closure of S = {A, B} includes A and B themselves. Using A → C, we add C. Using B → D, we add D. So, S+ = {A, B, C, D}.
By definition, the closure of an attribute set includes the attributes in the original set plus any attributes that can be functionally determined from it. So, it always contains the original set.
1. A → B
2. B → C
3. C → D
4. D → E
What is the closure of {A}?
Starting with {A}, apply A → B to add B. Then B → C adds C. Next, C → D adds D. Finally, D → E adds E. So closure is {A, B, C, D, E}.
1. A → B
2. B → C
Which attribute set has the larger closure?
Closure({A}) = {A, B, C} because A → B and B → C. Closure({B}) = {B, C} because B → C. So closure of {A} is larger.
1. A → B
2. B → C
3. C → A
Which of the following attribute sets is a candidate key for R?
Closure({A, D}) includes A, B (A→B), C (B→C), and D itself, so it covers all attributes. Similarly, {B, D} and {C, D} also cover all attributes due to cyclic dependencies among A, B, C. But {D} alone does not. However, minimality matters: {A, D} is minimal and a candidate key.