Comparison of Normal Forms

Normal Form

Removes

Definition (Key Difference)

Lossless Decomposition?

Dependency Preservation?

1NF

Repeating groups / multivalued attributes

Relation has only atomic values (no arrays, no nested sets).

Trivial (just flattening)

Yes

2NF

Partial dependencies

Must be in 1NF AND no non-prime attribute depends on part of a candidate key.

Yes

Yes

3NF

Transitive dependencies

Must be in 2NF AND every non-prime attribute depends directly on a candidate key (no dependency via another non-prime attribute).

Yes

Yes

BCNF

All remaining redundancy from FDs

Must be in 3NF AND for every FD X → Y, X must be a superkey.

Yes

❌ Not always (dependency preservation may be lost)


Example to Illustrate

Suppose relation:

R(StudentID, CourseID, StudentName, DeptID, DeptName)

FDs:

  1. (StudentID, CourseID) → StudentName, DeptID

  2. DeptID → DeptName

  • 1NF: Relation already atomic.

  • 2NF: Remove partial dependency StudentID → StudentName.
    → Split into: Student(StudentID, StudentName), Enrollment(StudentID, CourseID, DeptID).

  • 3NF: Remove transitive dependency DeptID → DeptName.
    → Split into: Department(DeptID, DeptName), Enrollment(StudentID, CourseID, DeptID).

  • BCNF: If any FD still has determinant that’s not a superkey (e.g., DeptID → DeptName in some cases), further decomposition is needed.


Key Insights

  • 2NF handles partial dependencies.

  • 3NF handles transitive dependencies.

  • BCNF handles cases where even in 3NF, determinants aren’t superkeys.

  • All decompositions are lossless.

  • Dependency preservation:

    • 2NF ✅

    • 3NF ✅

    • BCNF ❌ (sometimes you lose some dependencies and need to check them by joining relations).

Updated on