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ó:
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)
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!