Normalization — Quick Reference
1NF (First Normal Form) — Every column holds a single, atomic value; no repeating groups or lists.
❌ A student's Courses field storing "DBMS, OS" together ✅ Split into separate rows: one row for DBMS, another for OS
2NF (Second Normal Form) — Must be in 1NF, and no attribute depends on only part of a composite key.
In a table keyed on (Student_ID, Course), if Student_Name depends only on Student_ID (not on Course too), that's a partial dependency. ✅ Fix: move Student_Name into its own Student table keyed on Student_ID alone.
3NF (Third Normal Form) — Must be in 2NF, and no non-key attribute depends on another non-key attribute.
Dept_Name depends on Dept_ID, and Dept_ID isn't the primary key — so Dept_Name is one step removed from the actual key (a transitive dependency). ✅ Fix: move Dept_ID and Dept_Name into their own Department table.
BCNF (Boyce-Codd Normal Form) — A stricter 3NF: every determinant (anything that determines another attribute) must itself be a candidate key.
If Professor → Department, but Professor alone isn't a candidate key of the table, that's a BCNF violation even though the table might already satisfy 3NF. ✅ Fix: separate the table so Professor→Department lives somewhere Professor is the key.
4NF (Fourth Normal Form) — Must be in BCNF, and no multivalued dependency exists (one attribute independently determining multiple unrelated values of another).
Swati has hobbies {Reading, Painting} and languages {English, Hindi} — unrelated to each other, but stored together they force every hobby to pair with every language. ✅ Fix: split into a Student_Hobby table and a separate Student_Language table.
5NF (Fifth Normal Form / Project-Join Normal Form) — Must be in 4NF, and every join dependency is implied by the candidate keys — meaning the data can be split into smaller tables and joined back together without creating extra, incorrect rows. Rare in practice.
🧠 One-Line Summary
Form | Rule |
|---|---|
1NF | Atomic values only |
2NF | No partial dependency |
3NF | No transitive dependency |
BCNF | Every determinant is a candidate key |
4NF | No multivalued dependency |
5NF | No unwanted join dependency |