A Functional dependency is a relationship between attributes.
In functional dependency we can obtain the value of another attribute from given attribute.
For example,
If we know the value of student roll number, we can obtain student address, marks etc. By this, we say that student address and marks is functionally dependent on student roll number.
Types of functional dependency:
- Single Valued Functional Dependency
- Fully Functional Dependency
- Partial Functional Dependency
- Transitive Functional Dependency
- Trivial Functional Dependency
1) Single Valued Functional Dependency
A simple example of single value functional dependency is when Roll_Number is the primary key of an entity and Student_Name is some single valued attribute of the entity. Then, Roll_Number → Student_Name
Roll_Number | Student_Name | Student_Address |
011 | Jayesh Umre | Burhanpur |
012 | Kunal Batra | Burhanpur |
013 | Nilesh Nimbhorkar | Ichchapur |
014 | Aryan Jagdale | Ujjain |
2) Fully Functional Dependency
A functional dependency P → Q is full functional dependency if removal of any attribute A from P means that the dependency does not hold any more.
Roll_Number | Subject_Name | Paper_Hours |
011 | DBMS | 3 |
012 | Python | 1 |
013 | AWT | 3 |
025 | DBMS | 2 |
From above table,{Roll_Number, Subject_Name} –> Paper_HourSince neither Roll_Number –> Paper_Hour nor Subject_Name –> Paper_Hour hold.
3) Partial Functional Dependency
A Functional Dependency in which one or more non key attributes are functionally depending on a part of the primary key is called partial functional dependency.
Roll_Number | Subject_Name | Student_Name |
011 | DBMS | Jayesh Umre |
012 | Python | Kunal Batra |
013 | AWT | Nilesh Nimbhorkar |
014 | DBMS | Aryan Jagdale |
From above table,{Roll_Number, Subject_Name} –> Student_Name is not a full FD.Since Roll_Number –> Student_Name also hold.
4) Transitive Functional Dependency
Given a relation R(A,B,C) then dependency like A–>B, B–>C is a transitive dependency, since A–>C is implied
Roll_Number | Pin_Code | City_Name |
011 | 450331 | Burhanpur |
012 | 450001 | Khandwa |
013 | 456001 | Ujjain |
014 | 452020 | Indore |
From above table,Roll_Number –> Pin_Code and Pin_Code –> City_Name hold.Than Roll_Number –> City_Name is a transitive FD.
5) Trivial Functional Dependency
Functional dependency of the form A–>B is trivial if B subset of A or B = A.
Roll_Number | Student_Name |
011 | Jayesh Umre |
012 | Kunal Batra |
013 | Nilesh Nimbhorkar |
014 | Aryan Jagdale |
From above table,{Roll_Nuber, Student_Name} –> Roll_Number is a trivial functional dependency as Roll_Number is a subset of {Roll_Number,Student_Name}.