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ách
vàPhòng
phả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ách
vàPhòng
nê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ìRent
có primary key là key từKhách
và key từPhòng
: Rent có primary key làrid
(integer), khóa ngoại tớiKhách
làcid
, khóa ngoại tớiPhòng
làroomid
. Coi cáiRent
này như là tổng hợp của Khách và Phòng vậy. Córid
thì có thể truy ra chính xáccid
của khách thuê phòng, có thể truy raroomid
của phòng.1 dịch vụ có thể được nhiều
Rent
sử dụng, 1Rent
cũ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 Service
trong ERD, nhưng khi chuyển thành sql table thì gọi làServiceOrder
. MỗiServiceOrder
cần có 2 khóa ngoại tớiService
ví dụ làsid
vàRent
. vd làrid
.Mình cảm ơn bạn nhiều