Docs học tập
Backend nền tảng

D6 · Normalization và Denormalization

Normalization (1NF, 2NF, 3NF): giảm dư thừa, ít trùng lặp, tránh bất thường khi cập nhật.

D6 · Middle

Normalization: mỗi thông tin chỉ ghi ở một chỗ (sửa một lần là xong). Denormalization: chép sẵn ở nhiều chỗ để đọc nhanh, nhưng sửa phải sửa nhiều chỗ.

Cốt lõi

  • Normalization (1NF, 2NF, 3NF): giảm dư thừa, ít trùng lặp, tránh bất thường khi cập nhật.
  • Denormalization: thêm dư thừa có chủ đích để đọc nhanh hơn, tránh JOIN.

Đánh đổi

OLTP (giao dịch) dùng normalized; OLAP (phân tích/báo cáo) dùng denormalized.

Trong thực tế

Thiết kế DB của Flipkart.

Bug thường gặp

Chép tên sản phẩm sang bảng khác để đọc nhanh, đổi tên thì hai nơi không khớp; hoặc ngược lại, đơn hàng cũ JOIN sang giá hiện tại nên hiển thị sai giá lúc mua.

Tự hỏi lại

Khi denormalize, giữ dữ liệu đồng bộ bằng cách nào (trigger, event, job)?

On this page