Get in touch
or send us a question?
CONTACT

Những Sai Lầm Thường Gặp Khi Thiết Kế Database – Và Cách Tránh Chúng

Thiết kế database là một trong những kỹ năng quan trọng nhất của lập trình backend, nhưng đây cũng là nơi dễ tạo ra technical debt nhiều nhất. Dưới đây là những sai lầm phổ biến nhất khi thiết kế DB mà nhiều dự án gặp phải.

1. Dùng sai Data Type

Nhiều người sử dụng VARCHAR(255) cho mọi trường hoặc dùng string trong ORM mà không hiểu DB mapping phía dưới. Sai type gây:

  • Lãng phí bộ nhớ

  • Chậm query

  • Không index tối ưu

Ví dụ:

  • Trường boolean nhưng lại dùng TINYINT(1) không chuẩn

  • Trường JSON lưu string thuần → khó parse

  • Ngày tháng dùng varchar → không thể query theo range

Gợi ý: Luôn ưu tiên đúng kiểu dữ liệu: INT, DATETIME, JSON, BOOLEAN, ENUM

2. Không chuẩn hóa (Normalization)

Nhiều bảng chứa data trùng lặp, ví dụ:

  • Table Orders có cột CustomerName, CustomerAddress → violate 3NF

  • Danh mục (category) bị duplicate do không tách bảng

Hệ quả:

  • Dữ liệu khó maintain

  • Chỉnh sửa phải sửa nhiều nơi

  • Dễ gây mismatch data

3. Quên index hoặc index sai

Không có index → query chậm, CPU tăng cao.
Index quá nhiều → insert/update chậm.

Những sai lầm phổ biến:

  • Index text dài

  • Index nhưng không dùng vì sai thứ tự (index composite)

  • Quên index foreign key

Tip:
Index theo tần suất truy vấn, không phải theo số lượng trường.

4. Không thiết kế soft delete đúng cách

Nhiều hệ thống dùng deleted_at nhưng không:

  • Thêm điều kiện ... WHERE deleted_at IS NULL

  • Tạo index cho deleted_at

  • Xử lý trường hợp restore dữ liệu

5. Thiếu migration chuẩn

  • Sửa trực tiếp trên DB mà không generate migration

  • Không test migration rollback

  • Deploy nhiều service nhưng migration chạy sai thứ tự

Hậu quả: Lỗi production khó phục hồi.