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

D1 · Data Modeling – Thiết kế schema từ nghiệp vụ

Bắt đầu từ các danh từ trong nghiệp vụ → thực thể (User, Order, Product) và thuộc tính.

D1 · Junior · cốt lõi

Schema như sơ đồ tủ hồ sơ của công ty: ngăn nào đựng gì, hồ sơ nào dẫn chiếu sang hồ sơ nào. Sắp sai từ đầu thì càng về sau càng khó sắp lại.

Cốt lõi

  • Bắt đầu từ các danh từ trong nghiệp vụ → thực thể (User, Order, Product) và thuộc tính.
  • Quan hệ: 1–1, 1–n (khóa ngoại nằm ở phía "nhiều"), n–n (bảng trung gian).
  • Khóa chính, khóa ngoại, NOT NULL, UNIQUE, CHECK – để chính DB bảo vệ dữ liệu.
  • Kiểu dữ liệu đúng: tiền dùng DECIMAL (hoặc số nguyên theo đơn vị nhỏ nhất), thời gian lưu theo UTC hoặc kèm múi giờ.

Đánh đổi

Ràng buộc chặt giữ dữ liệu sạch nhưng giảm linh hoạt khi thay đổi; thiếu ràng buộc thì dữ liệu rác tích tụ âm thầm.

Trong thực tế

Đơn hàng lưu lại giá và tên sản phẩm tại thời điểm mua (snapshot) chứ không chỉ tham chiếu bảng sản phẩm – vì giá có thể đổi sau đó.

Bug thường gặp

Lưu tiền bằng FLOAT → cộng dồn lệch vài đồng; lưu thời gian không rõ múi giờ → báo cáo theo ngày lệch 7 tiếng.

Tự hỏi lại

Soft delete (cột deleted_at) có lợi và hại gì?

On this page