Consider the relation and following functional dependencies: R(id,name,date,rollno,class) FD: {id→name,
Consider the relation and following functional dependencies:
R(id,name,date,rollno,class)
FD: {
id→name,
rollno,id→(class,date) ,
class→date,class→id,
name→id,
name→rollno}
Which of the following is the canonical cover of FD?
- A.
{id→name, rollno,id→class, class→date, class→id, name→id, name→rollno}
- B.
{id→name, rollno,id→(class,date), class→date, class→id, name→rollno}
- C.
{id→name, rollno,→(class,date), class→date, name→id, name→rollno}
- D.
{id→name, class→id, name→id, name→rollno}
Attempted by 91 students.
Show answer & explanation
Correct answer: A
Correct canonical cover: {id→name, id→class, class→date, class→id, name→id, name→rollno}
Derivation (concise):
Start from the given FDs and split any RHS with multiple attributes into single-attribute FDs:
id → name
rollno, id → class
rollno, id → date
class → date
class → id
name → id
name → rollno
Remove extraneous attributes on left-hand sides. For rollno,id → class check whether rollno is extraneous by computing closure of {id}:
id+ contains name (from id→name), then rollno (from name→rollno), and then class (using rollno and id together on the original FD). Since id+ already includes class, rollno is extraneous.
Therefore rollno,id→class reduces to id→class. Similarly rollno,id→date reduces to id→date.
Eliminate redundant FDs. Note that id→date is implied by id→class and class→date, so id→date is redundant and can be removed.
The remaining minimal set (canonical cover) is:
id → name
id → class
class → date
class → id
name → id
name → rollno