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 schema

Atomic 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 version

Remove 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).

๐Ÿ“ Quick Quiz

1. 1NF requires:

2. Common normalization target is:

3. Denormalization is used for: