Denormalization = chủ ý lặp lại dữ liệu (nhúng, sao chép cột, precompute) thay vì chuẩn hóa hoàn toàn, để đọc nhanh hơn bằng cách tránh join tốn kém ở quy mô lớn.
Khi nào dùng:
- Hệ đọc nhiều hơn ghi rất nhiều; join qua nhiều bảng/shard trở thành điểm nghẽn.
- NoSQL không có join → phải nhúng/lặp dữ liệu theo mẫu truy vấn.
- Cần precompute (đếm, tổng hợp, feed) để phục vụ ngay.
Đánh đổi:
- Tốn thêm dung lượng và ghi phức tạp hơn (một sự thật nằm ở nhiều nơi → phải cập nhật đồng bộ, dễ lệch).
- Thường kết hợp eventual consistency để đồng bộ các bản sao dẫn xuất.
Nguyên tắc: chuẩn hóa để đúng đắn trước, denormalize có kiểm soát khi số đo cho thấy đọc là điểm nghẽn.