Giúp chọn thiết kế sơ đồ ER cho cơ sở dữ liệu?

Đang vẽ sơ đồ ER cho cơ sở dữ liệu đặt phòng khách sạn.
Chỗ đặt phòng vẽ có 2 hướng, theo mình thì sẽ chọn cái đầu tiên nhưng còn thắc mắc ngữ nghĩa giữa thực thể:Phòng và Phiếu Đặt Phòng có quan hệ . Không biết quan hệ có đúng không, hay Phiếu Đặt Phòng chỉ xuất hiện khi có khách hàng đặt phòng và không được quan hệ với Phòng.

Có kiểu vẽ này à? Nhìn như mixed của ERD và activity diagram ý nhỉ.

Đây là sơ đồ thực thể kết hợp(Entity Relationship Diagram - ERD) :smile:

1 Like

Sửa lại chút thôi, quan hệ thì nên sửa thế này.

  • KhachHang 1 - n PhieuDatPhong
  • PhieuDatPhong 1 - 1 Phong

Thông thường khi đặt hàng:

  • 1 Khách Hàng có thể đặt phòng nhiều lần, lúc này Phiếu Đặt Phòng sẽ được tạo ra. Vậy là mỗi 1 Khách Hàng sẽ có nhiều Phiếu Đặt Phòng.
  • Phiếu Đặt Phòng ko tồn tại nếu ko có Khách Hàng, vậy phải có ít nhất 1 Khách Hàng đặt phòng.

-> Chốt: 1 Khách Hàng sở hữu nhiều (N) Phiếu Đặt Phòng -> Quan hệ (1, N)

  • Có Phiếu Đặt Phòng thì buộc phải nhập thông tin Phòng.
  • Mỗi lần đặt Phòng thì chỉ được sử dụng 1 Phòng, vậy là Phiếu Đặt Phòng chỉ ghi thông tin duy nhất 1 Phòng hợp lệ

-> Chốt: 1 Phiếu Đặt Phòng phải có 1 Phòng -> Quan hệ (1, 1)

2 Likes

Cảm ơn bạn nhé. Lâu rồi chỉ nhớ mỗi style này gọi là ERD

Mấy cái kia không nhớ mấy :smiley:

1 Like

Trong mô hình ERD , thực thể nó phải tồn tại độc lập,
Phiếu Đặt Phòng được sinh ra khi có người đặt phòng, vì vậy nó thể hiển mối quan hệ giữ phòng với Khách Hàng, không phải là một thực thể trong ERD
Một Phòng có thể có nhiều khách hàng đặt, Khách hàng có thể đặt nhiều phóng -> mối quan hệ là (n,n)

2 Likes

T cũng nghĩ nếu phiếu đặt phòng không đúng về mặt ngữ nghĩa. Nhưng mà mình đang thắc mắc không biết nếu làm theo cái thứ 2 thì lúc chuyển qua csdl sẽ tạo ra bảng KH _PHG làm sao vừa lưu đc cung lúc mã phòng và số lượng phòng.(n-n tạo bảng mới)

Ai có làm phân mềm dạng đặt phòng gợi ý cách lưu trữ csdl vs :smile:

khi chuyển qua mô hình vật lý thi sẽ có table KH_PHG vói cái field là: MAKH,MAPHG, thời gian đặt, sô lượng đặt,vậy là đáp ứng được rồi.
Lưu ý là nếu môt lần khách đặt phòng sẽ phát sinh mã mới thì chỉ cần cặp key (MAKH,MAPHG) để xác đình 1 record duy nhất là đủ, cón nếu việc quản lý khách hàng là cố định thì cần “thời gian đặt” làm key nữa
tìm tham khảo trong đây : http://www.databaseanswers.org/data_models/ (Hotels and Accomodation) có thể có ích

2 Likes

Cảm ơn @nguyenhuuca . Trang trên có nhiều mẫu ghê :smile:

1 Like

Cho em hỏi là cái hình ERD vẽ bằng tool tên gì ạ?

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