我有一个网络表单来设置酒店房间可以在一周中的哪几天预订。
我的疑问:将其存储在我的数据库中的最佳方法是什么?
我想过为一周中的每一天创建 7 个布尔列。
编辑:我的表格是后端,是为酒店业主准备的。这听起来可能很奇怪,但他们想设置一周中的哪几天有空房间。
我有一个网络表单来设置酒店房间可以在一周中的哪几天预订。
我的疑问:将其存储在我的数据库中的最佳方法是什么?
我想过为一周中的每一天创建 7 个布尔列。
编辑:我的表格是后端,是为酒店业主准备的。这听起来可能很奇怪,但他们想设置一周中的哪几天有空房间。
我宁愿将预订存储在一个表格中,每个预订一行,列:visitor_id、房间号、开始和结束日期。然后执行查询以查看(每个房间或全部)哪些日期可用。
我会研究如下结构。它可能看起来很复杂,但它已经标准化并且很容易扩大规模。
Rooms
--------------------------
id
number
type (Suite, Standard, Twin)
floor
Room_Bookings
--------------------------
room_id
reservation_id
type (customer, hotel)
date
Reservations
--------------------------
id
customer_id
total_price
paid (yes/no)
created_by (staff member?)
number_of_nights
Room_Available_Days_Of_Week
--------------------------
room_id
day_id (0 = sunday, 1 = monday etc etc)
type
可能是客户或酒店。预订房间时的客户。酒店可用于在任何特定日期封锁房间。例如,如果房间正在进行维护工作。例如,入住 3 晚将由 in 中的一排和 in 中的Reservations
3 行组成Room_Bookings
。
对于您的可用性程序,如果房间没有被预订Room_Bookings
并且表格中有一行Room_Available_Days_Of_Week
与所需的工作日匹配,则该房间将是可用的。
为房间准备一张单独的桌子(即每个房间一排),然后是另一个单独的桌子,每个房间/日期排一排。预订房间时插入第二张桌子。要查找是否使用了房间,请从带有左连接的第一个表中选择指定日期的第二个表。如果第二个表中的列为空,则房间是空闲的(即,该房间/日期尚未预订任何内容)。