What Is Database Normalization? 1NF, 2NF, 3NF Explained
Database normalization organizes tables to reduce redundancy and avoid update anomalies. Learn the first three normal forms with simple examples.
Published September 19, 2026
Normalization is the process of structuring a relational database into multiple related tables to reduce data redundancy and prevent inconsistent updates. It's typically described in progressive stages called normal forms.
Common causes
- Storing repeated or composite data in a single flat table leads to update anomalies — changing one customer's address might require updating dozens of order rows instead of a single customer record
How to fix it
- 1NF: ensure every column holds a single, atomic value — no comma-separated lists or repeating groups in one field
- 2NF: ensure every non-key column depends on the entire primary key, not just part of a composite key — split out data that doesn't
- 3NF: ensure every non-key column depends only on the primary key, not on another non-key column — move transitive dependencies into their own table
Example
-- Before: repeated customer info on every order row
-- After normalizing: separate customers and orders tables
CREATE TABLE customers (id INT PRIMARY KEY, name VARCHAR(100));
CREATE TABLE orders (id INT PRIMARY KEY, customer_id INT, total DECIMAL(10,2));FAQ
Is more normalization always better?
No — highly normalized schemas can require many joins for common queries, which sometimes hurts read performance. Some systems deliberately denormalize specific tables for speed, at the cost of some redundancy.