In relational database design, Functional Dependency (FD) describes how one set of attributes determines another set in a table. If a set of attributes X functionally determines a set Y, it is written as:
X \to Y
Functional dependencies are the foundation of normalization in DBMS.
Among these dependencies, different types exist that help classify their behavior and guide schema design. Understanding these types makes it easier to remove redundancy and design clean, well-normalized tables.
1. Trivial Functional Dependency
A functional dependency:
X \to Y
is trivial if:
Y \subseteq X
In other words, the right-hand side attributes are already contained in the left-hand side.
A trivial FD is always true and does not add any meaningful information, but it is still valid from a formal point of view.
Example
In a STUDENT table with attributes:
{Roll_No, Name, Branch}
the dependency:
{Roll_No, Name} → {Name}
is a trivial functional dependency because Name is already present in the left side.
2. Non-Trivial Functional Dependency
A functional dependency:
X \to Y
is non-trivial if:
Y \nsubseteq X
This type is the most useful in database design because it represents a real dependency between attributes.
Example
In a COURSE table:
{Course_ID} → {Course_Name, Credits}
This is non-trivial because the right-hand side is not part of the left side.
3. Full Functional Dependency
An attribute set Y is fully functionally dependent on X if:
Ydepends on the whole ofXand not on any proper subset of
X
Full functional dependency is important in Second Normal Form (2NF), where partial dependencies must be eliminated.
Example
Consider a relation:
R(Roll_No, Course_ID, Marks)
If:
{Roll_No, Course_ID} → {Marks}
and Marks does not depend on:
Roll_Noaloneor
Course_IDalone
then Marks is fully functionally dependent on the composite key.
4. Partial Functional Dependency
A functional dependency:
X \to Y
is partial if Y can be determined by a proper subset of X rather than the whole of X.
Partial dependencies are avoided in normalized schemas, especially in 2NF.
Example
Consider a RESULT table:
(Roll_No, Course_ID, Branch, Marks)
If:
Roll_No → Branch
then even though:
{Roll_No, Course_ID} → {Branch}
holds, it is a partial functional dependency because Branch is determined by Roll_No alone.
5. Transitive Functional Dependency
A functional dependency:
X \to Z
is transitive if there exists some intermediate attribute Y such that:
X \to Y
and
Y \to Z
This means X determines Z indirectly through Y.
Transitive dependencies are removed in Third Normal Form (3NF).
Example
In a STUDENT table:
(Roll_No, Branch, HOD_Name)
If:
Roll_No → Branch
Branch → HOD_Name
then:
Roll_No → HOD_Name
is a transitive functional dependency.
6. Multivalued Dependency (MVD)
A Multivalued Dependency occurs when, for a given value of attribute X, there are multiple independent values of another attribute Y.
It is written as:
X \twoheadrightarrow Y
This type is important in Fourth Normal Form (4NF).
Example
Consider a COURSE table:
(Course_ID, Prof_Name, Textbook)
If a course can have:
multiple professors
multiple textbooks
and these are independent of each other, then there are multivalued dependencies like:
Course_ID ↠ Prof_Name
Course_ID ↠ Textbook
Why Types of Functional Dependencies Matter
Understanding these types of functional dependencies helps in:
Identifying keys and candidate keys from given FDs
Detecting redundant and anomalous data patterns
Applying normalization rules up to 3NF and 4NF
Ensuring data integrity and clean relational design
Summary
Functional dependencies in DBMS are classified into:
Trivial dependency
Non-trivial dependency
Full functional dependency
Partial functional dependency
Transitive dependency
Multivalued dependency
Each type plays a distinct role in schema design and normalization. Recognizing these patterns enables better database structure, reduced redundancy, and improved data consistency in relational databases.