SQL ยท Chapter 40 of 42
SQL Normalization
NORMALIZATION is designing tables to reduce redundancy. Common target: THIRD NORMAL FORM (3NF).
1NF: atomic values (no lists in a cell). 2NF: no partial dependency on part of a composite key. 3NF: no transitive dependency.
Denormalize for speed
For analytics/reporting, controlled denormalization (extra columns or summary tables) can dramatically speed reads.
Example 1 (sql)
-- Not 1NF: comma-separated tags
tags VARCHAR(255) -- 'python,sql,ml'
-- 1NF: separate table
CREATE TABLE post_tags(post_id INT, tag VARCHAR(50));Output
Better schemaAtomic values, one row per tag.
Example 2 (sql)
-- Not 3NF: city depends on zip, not order
orders(id, zip, city)
-- 3NF: split it out
orders(id, zip)
zips(zip PK, city)Output
3NF versionRemove transitive dependency.
Key points
- Reduce data redundancy.
- Common goal: 3NF.
- 1NF: atomic values only.
- Denormalize deliberately for performance.
๐ก Note: Rule of thumb: normalize for OLTP (transactional apps), denormalize for OLAP (analytics/reporting).
