Normalization loại bỏ redundancy và update anomalies. 1NF: mỗi cell atomic, không repeating groups — vi phạm: tags: 'nodejs,react' một cell nhiều values → tách thành bảng user_tags(user_id, tag). 2NF (composite PK): mọi non-key column depend vào TOÀN BỘ PK — vi phạm: order_items(order_id, product_id, product_name) — product_name chỉ depend vào product_id → tách ra bảng products. 3NF: không có transitive dependency — vi phạm: employees(id, dept_id, dept_name) — dept_name depend vào dept_id chứ không phải id → tách thành bảng departments.
- Tại sao quan trọng: update anomaly — đổi tên department phải update N rows, dễ inconsistency; insert anomaly — không thể thêm department nếu chưa có employee; delete anomaly — xóa employee cuối xóa luôn thông tin dept.
- Thực tế: normalize đến 3NF là standard; BCNF/4NF cho edge cases; denormalize có chủ đích khi có profiling evidence.