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?

  1. A.

    {id→name, rollno,id→class, class→date, class→id, name→id, name→rollno}

  2. B.

    {id→name, rollno,id→(class,date), class→date, class→id, name→rollno}

  3. C.

    {id→name, rollno,→(class,date), class→date, name→id, name→rollno}

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

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

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

  3. Eliminate redundant FDs. Note that id→date is implied by id→class and class→date, so id→date is redundant and can be removed.

  4. The remaining minimal set (canonical cover) is:

    • id → name

    • id → class

    • class → date

    • class → id

    • name → id

    • name → rollno

Explore the full course: Btsc Lab Assistant

Loading lesson…