When you store data in one big table, things go wrong fast — repeated data, update mistakes, wasted space. Normalisation fixes this by splitting data into linked tables.
Imagine a school stores everything in one spreadsheet: student name, tutor, tutor's email, subject, grade — all in one row. If a tutor changes email, you'd have to update it in every single row that mentions them. Miss one and you have conflicting data. Normalisation prevents this.
Rule: Every cell contains only one value (no lists, no multiple items crammed into one cell). Each row is unique.
Rule: Everything in 1NF + every non-key column depends on the whole primary key, not just part of it.
Rule: Everything in 2NF + non-key columns don't depend on other non-key columns. Every fact is stored in exactly one place.
| Form | Rule (plain English) | What it fixes |
|---|---|---|
| 1NF | No lists in cells. Each row is unique. | Repeating groups |
| 2NF | Every column relates to the WHOLE key. | Partial dependencies |
| 3NF | No column depends on another non-key column. | Transitive dependencies |