What is Multi-valued dependency?
When existence of one or more rows in a table implies one or more other rows in the same table, then the Multi-valued dependencies occur.
If a table has attributes P, Q and R, then Q and R are multi-valued facts of P.
It is represented by double arrow −
| ->-> |
For our example:
| P->->Q P->->R |
In the above case, Multivalued Dependency exists only if Q and R are independent attributes.
A table with multivalued dependency violates the 4NF.
Example
Let us see an example &mins;
<Student>
| StudentName | CourseDiscipline | Activities |
| Amit | Mathematics | Singing |
| Amit | Mathematics | Dancing |
| Yuvraj | Computers | Cricket |
| Akash | Literature | Dancing |
| Akash | Literature | Cricket |
| Akash | Literature | Singing |
In the above table, we can see Students Amit and Akash have interest in more than one activity.
This is multivalued dependency because CourseDiscipline of a student are independent of Activities, but are dependent on the student.
Therefore, multivalued dependency −
| StudentName ->-> CourseDiscipline StudentName ->-> Activities |
The above relation violates Fourth Normal Form in Normalization.
To correct it, divide the table into two separate tables and break Multivalued Dependency −
<StudentCourse>
| StudentName | CourseDiscipline |
| Amit | Mathematics |
| Amit | Mathematics |
| Yuvraj | Computers |
| Akash | Literature |
| Akash | Literature |
| Akash | Literature |
<StudentActivities>
| StudentName | Activities |
| Amit | Singing |
| Amit | Dancing |
| Yuvraj | Cricket |
| Akash | Dancing |
| Akash | Cricket |
| Akash | Singing |
This breaks the multivalued dependency and now we have two functional dependencies −
| StudentName -> CourseDiscipline StudentName - > Activities |