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:

  • Y depends on the whole of X

  • and 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_No alone

  • or Course_ID alone

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.