Hỏi về phần hóa đơn (ERD)
Mọi người ơi cho mình hỏi 1 chút, mình đang làm bài tập về nhà về vẽ sơ đồ ERD như sau"
Hệ thống cho thuê phòng tổ chức sự kiện
Thông tin về phòng gồm mã phòng, loại phòng (phòng thường, phòng vip) , sức chứa
Thông tin về người thuê bao gồm mã người thuê, tên, cmnd,… thông tin của mỗi lần thuê phòng gồm vị trí thuê, thời gian bắt đầu, thời gian kết thúc.
Trong mỗi lần thuê, người thuê có thể có thêm các yêu cầu về dịch vụ (vệ sĩ, chương trình ca múa nhạc, ăn giữa tiệc), giá tiền của dịch vụ, người thuê phải trả thêm tiền cho các dịch vụ này.
Mỗi khách phải trả tiền cho khách sạn, thông tin về một lần thanh toán gồm
ngày thanh toán, số tiền phòng và số tiền dịch vụ."
Vậy chỗ thực thể hóa đơn thì em nối như thế này có hợp lý ko ạ
cái thứ 2 là: vì “thực thể dịch vụ” là thực thể yếu (phụ thuộc vào phòng, nếu thuê phòng mới dùng được dịch vụ thì mình nối từ dịch vụ sang “thực thể phòng” như thế nào ạ






mình thấy quan hệ giữa
KháchvàPhòngphải là n:n, 1 phòng có thể được người khác thuê nữa chứ (ko trùng quãng thời gian thuê).nếu là n:n thì
Thuêsẽ là 1 table riêng.Thuêsẽ tạo ra nhiều hóa đơn. 1 hóa đơn chỉ có 1 id củaThuênhư vậy là 1ThuênhiềuHóaĐơn. CácDịchVụthêm vào sẽ cần có 1 id củaThuêluôn (1ThuênDịchVụ). Làm như vậy thì có thể coi thuê phòng cũng là 1 dịch vụ. Tính toán hóa đơn dễ dàng, chỉ có lúc đặt phòng là phải kiểm tra trong bảngThuêsao cho ko bị trùng thôi.Thuêyêu cầu phải có id củaKháchvàPhòngnên dịch vụ cần có id củaThuênghĩa là thỏa mãn yêu cầu “nếu thuê phòng mới dùng được dịch vụ”.Hi bạn, vậy là “thuê dịch vụ” (mình gọi là “sử dụng dịch vụ” đi cho đỡ lộn) là mình đưa luôn cái id_phòng vô luôn hả bạn hay là phải tạo thêm liên kết từ Phòng đến “sử dụng dịch vụ”
đưa cái id của
Thuêấy.Thuê(rent) tuy là 1 relation nhưng nó là n:n relation nên là 1 table riêng. Mỗi table đều có 1 primary key là integer cho nó khỏe. Trong ERD thìRentcó primary key là key từKháchvà key từPhòng: Rent có primary key làrid(integer), khóa ngoại tớiKháchlàcid, khóa ngoại tớiPhònglàroomid. Coi cáiRentnày như là tổng hợp của Khách và Phòng vậy. Córidthì có thể truy ra chính xáccidcủa khách thuê phòng, có thể truy raroomidcủa phòng.1 dịch vụ có thể được nhiều
Rentsử dụng, 1Rentcũng có thể sử dụng lại 1 dịch vụ nhiều lần. Vậy là n:n relationship luôn. Gọi relation này làUse Servicetrong ERD, nhưng khi chuyển thành sql table thì gọi làServiceOrder. MỗiServiceOrdercần có 2 khóa ngoại tớiServiceví dụ làsidvàRent. vd làrid.Mình cảm ơn bạn nhiều