Lưu entity vào database như thế nào?

Dạ anh chị ơi cho em hỏi ví dụ em có đối tượng đơn hàng sẽ bao gồm :

  • Thông tin đơn hàng. (username người mua, tổng tiền, ngày mua, nơi mua, SĐT, …)
  • List chi tiết đơn hàng. (Danh sách sản phẩm đã mua, VD: mã sản phẩm, số lượng, đơn giá, …)

Em sẽ sử dụng bao nhiêu bảng để lưu trữ nó:

:one: Cách 1: Đơn hàng là một entity khi lưu sẽ có 2 bảng là bảng đơn hàng và bảng chi tiết đơn hàng, chi tiết đơn hàng có khóa ngoại là mã đơn hàng.
Class đơn hàng (java, C#, …) sẽ có thuộc tính list đơn hàng là một mảng. Lúc persistance thì ORM sẽ tự động implement commit & rollback nếu data insert vào bảng này success nhưng bảng kia fail.

Cách này có ưu điểm là tránh trường hợp xuất hiện đơn hàng rỗng không hợp lệ: có đơn hàng nhưng không có chi tiết đơn hàng tương ứng (Nhưng vẫn có thể dùng code làm thủ công để validate xem data có hợp lệ không trước khi insert vào database)

:two: Cách 2: Đơn hàng là một entity riêng biệt lưu một bảng riêng, chi tiết đơn hàng là một entity độc lập lưu một bảng riêng nên khi REST API response json có các field cùng cấp không lồng nhau.

Em thường sử dụng cách này nhưng không tìm ra được ưu điểm của nó.


Cho em hỏi 2 cách này có tên gọi không? trong thực tế người ta sử dụng cách nào?

Em cảm ơn!

cái này là vấn đề thiết kế thôi, bạn thiết kế sao cho phù hơp với bạn sử dụng là được rồi
phù hợp với nhu cầu sử dụng là giải pháp đúng

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?