Trung BìnhSystem Design iconSystem Design

Normalization và Denormalization là gì? Trade-off và khi nào dùng mỗi kỹ thuật? (What are Normalization and Denormalization? Trade-offs and when to use each?)

Normalization là quá trình tổ chức database để giảm data redundancy và dependency thông qua các Normal Forms (1NF, 2NF, 3NF, BCNF) – chia data thành nhiều tables liên quan, tránh duplicate data.

Lợi ích: storage hiệu quả, dễ maintain consistency khi update (chỉ cần update một chỗ), ít risk inconsistency.

Nhược điểm: cần nhiều JOINs để reconstruct data, JOINs tốn kém ở scale lớn. Denormalization là cố tình thêm redundant data để tăng read performance – ví dụ lưu username trong bảng posts thay vì JOIN với bảng users mỗi lần query.

Lợi ích: read queries nhanh hơn đáng kể, đơn giản hóa query.

Nhược điểm: duplicate data tốn storage, phức tạp khi update (phải update nhiều chỗ), risk inconsistency. Quyết định: OLTP (transaction processing) thường normalize để đảm bảo data integrity; OLAP (analytics, data warehouse) thường denormalize (star/snowflake schema) để tăng query speed. Với NoSQL Document DB, denormalization là mặc định – embed related data vào document nếu luôn được đọc cùng nhau.

Xem toàn bộ System Design cùng filter theo level & chủ đề con.

Mở danh sách System Design