Imagine a university table where one cell lists all of a student’s courses separated by commas, and phone and address are mixed together. If someone changes their last name or moves, you would have to find and fix that chain in many places. Normalization is the deliberate splitting of data into tables and relationships to remove duplication, prevent contradictions, and simplify database maintenance.
The 1NF rule is simple: each cell holds one indivisible value from a domain. No “comma-separated lists” in one field — use separate rows or a separate table for that.
2NF matters when the primary key is composite. Every non-key attribute must depend on the entire key, not part of it. If the key is the pair “student + course,” then course duration depends only on the course: storing it on the enrollment row means copying the same value and risking drift.
3NF forbids transitive dependencies: a non-key column must not depend on another non-key column. If a student has `cityid` and `cityname` is duplicated next to it, the city name depends on the city identifier, not on the student’s primary key. The name should live in a separate lookup table.