3NF (Third Normal Form) is a normalization level where a relation is already in 2NF and has no transitive functional dependencies. A table is in 3NF if:
It is in 2NF (no partial dependencies).
Every non-key attribute is non-transitively dependent on the primary key.
In simple terms, in 3NF, each non-key attribute should depend directly on the primary key, not through another non-key attribute.
What Is a Transitive Dependency?
A transitive dependency exists when:
X → Y and Y → Z
but X does not directly determine Z by itself.
Then:
X → Z
is said to be transitive through Y.
Example
Suppose a STUDENT table has:
Roll_No, Branch, HOD_Name
If:
Roll_No → Branch
Branch → HOD_Name
then:
Roll_No → HOD_Name
is a transitive dependency.
This is not allowed in 3NF.
How to Achieve 3NF
To bring a 2NF table into 3NF:
Identify transitive dependencies (non-key attributes that determine other non-key attributes).
Create new tables so that each non-key attribute depends only on the key.
Using the STUDENT example:
Original 2NF Table (with Transitive Dependency)
| Roll_No | Branch | HOD_Name |
|---|---|---|
| 101 | CSE | Dr. A |
| 102 | ECE | Dr. B |
| 103 | CSE | Dr. A |
Here, Branch → HOD_Name, so HOD_Name transitively depends on Roll_No via Branch.
Split Into
BRANCH(Branch, HOD_Name)
STUDENT(Roll_No, Branch)
Now:
In
BRANCH,Branch → HOD_Name(direct, allowed).In
STUDENT, non-key attributeBranchdepends only onRoll_No.
Both tables are in 3NF.
Why 3NF Matters?
It removes more redundancy (same HOD repeated for every student in a branch).
It reduces update and deletion anomalies when the HOD changes.
It is considered sufficient for most practical database designs.
Summary
3NF in DBMS requires a table to be in 2NF and to have no transitive dependencies: non-key attributes must depend only on the primary key, not on other non-key attributes. By splitting tables that contain transitive dependencies, 3NF further cleans up the design and improves data consistency, making it one of the most important normal forms for beginners.