0

我有一个网络表单来设置酒店房间可以在一周中的哪几天预订。

我的疑问:将其存储在我的数据库中的最佳方法是什么?

我想过为一周中的每一天创建 7 个布尔列。

编辑:我的表格是后端,是为酒店业主准备的。这听起来可能很奇怪,但他们想设置一周中的哪几天有空房间。

4

3 回答 3

1

我宁愿将预订存储在一个表格中,每个预订一行,列:visitor_id、房间号、开始和结束日期。然后执行查询以查看(每个房间或全部)哪些日期可用。

于 2012-12-05T10:16:23.700 回答
1

我会研究如下结构。它可能看起来很复杂,但它已经标准化并且很容易扩大规模。

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)
  • 房间- 酒店的每个房间都有一行,类型可以是 Suite、Standard、Twin 等(可以有一个 Room_Types 表并存储一个 ID)
  • Room_Bookings - 预订房间的每个日期对应一行,这链接到预订和房间表。type可能是客户或酒店。预订房间时的客户。酒店可用于在任何特定日期封锁房间。例如,如果房间正在进行维护工作。
  • 预订- 每次预订都排成一排,预订是指在酒店住宿,可能会有不同的晚数。
  • Room_Available_Days_Of_Week - 此表将满足您根据工作日指定房间可用性的要求。每个房间和可用的工作日排成一行。

例如,入住 3 晚将由 in 中的一排和 in 中的Reservations3 行组成Room_Bookings

对于您的可用性程序,如果房间没有被预订Room_Bookings并且表格中有一行Room_Available_Days_Of_Week与所需的工作日匹配,则该房间将是可用的。

于 2012-12-05T10:51:58.477 回答
0

为房间准备一张单独的桌子(即每个房间一排),然后是另一个单独的桌子,每个房间/日期排一排。预订房间时插入第二张桌子。要查找是否使用了房间,请从带有左连接的第一个表中选择指定日期的第二个表。如果第二个表中的列为空,则房间是空闲的(即,该房间/日期尚未预订任何内容)。

于 2012-12-05T10:16:09.567 回答