我想为酒店预订系统设计一个数据库结构。
我的架构:
client (
client_id,
lastname
)
reservation (
reservation_id,
client_id,
checkIndate,
roomno
)
我的问题出在办理登机手续的部分。我已经预订了;我还需要创建一个签入表吗?如果是这样,它的架构应该是什么?
客户可以通过两种方式进入酒店:
如何存储在酒店登记入的记录?
答案 0 :(得分:4)
只是几个想法。我注意到“roomno”是“预订”表中的一个字段。我假设您还有一个“房间”表,其中有“roomno”作为其主键以及您可能在房间内跟踪的任何其他数据(phone_number,number_of_beds等等)。
我会做的是创建一个名为“占用”的表。该表将有三个字段“client_id”,“roomno”和checkin_time。 “client_id”和“roomno”都是外键(分别对应客户端和房间表)。为了确保唯一性,我将它们连接起来制作主键(毕竟,你可以让一个客户购买两个房间)。
当客户端结账时,您将从“占用”表中删除该行。你想要将该行存档在另一个表(“历史”,“pastStays”......类似的东西)中,你还要记录“checkout_time”。
就我所建议或假设的变化而言,以下是他们的看法:
table: Room
roomno INT
phone_number INT
number_of_beds INT
smoking_allowed BOOLEAN
table: Occupancy
client_id BIGINT (FK referencing Client) (part of PK)
roomno INT (FK referencing Room) (part of PK)
checkin_time DATETIME
table: pastStays
client_id BIGINT (FK referencing Client) (part of PK)
roomno INT (FK referencing Room) (part of PK)
checkin_time DATETIME
checkout_time DATETIME
答案 1 :(得分:0)
我认为最好将预订与办理登机手续分开。也可以通过第三方预订系统(分配给他们的房间块)进行预订。单人预订也可以为多位客人预订,但单人入住则需支付。此外,您可能需要单独的roomBooking表 - 每个房间一个入口。对于单次入住的客人,通常也可以使用多个房间(持续时间不同)。因此,从入住率解除登记入住可能是有用的。此外,您可能需要单独保留库存(房间可用性)。这意味着以下表格。
预订(id,reserverId,fromDate,toDate) - 每个保留请求一个条目
RoomBooking(id,resId,roomNo,fromDate,toDate) - 每次预订每个房间一个条目
签到(id,resId,guestId,checkInDate,checkOutDate) - 每位客人一个条目
Occupancies(id,checkInId,fromDate,toDate) - 每个房间一个条目指定的持续时间(这类似于房间预订,但这是实际的,RoomBooking是按计划的)