设计用于在房间预订应用中存储不可用日期的数据库

时间:2016-11-07 18:56:11

标签: sql ruby-on-rails postgresql database-design

我正在处理room booking申请。我正在使用rails 5postgres。模型就是这样。

Hotel has_many room_types

RoomTypes表格看起来像这样

RoomTypes

id: 1

name: "a specific room"

no_of_rooms_of_this_type: 5  

酒店老板可以标记一天不可用。因此,我将每个不可用日期保存为单个记录。  选项1

我可以想到为每个不可用的日期创建一个单独的表。这是最好的方法吗?如果是这样的情况我就像这样构建房间

UnAvailabiltyTable

id: 1

room_id: 1

unavailable_day: Date

由于一个房间有许多不同类型的房间:no_of_rooms_of_this_type,每个房间都有自己的可用性,我将最终创建具有相同room_id的多个记录。那可以吗?

选项2(不确定这是多么有效)

将不可用的值存储为每个房间的jsonb列

有人能否对这个话题有所了解?

1 个答案:

答案 0 :(得分:0)

我看不出你的模型非常清楚,但我认为它应该是这样的:

Hotel has_many rooms
Room has_and_belongs_to_many bookings
Booking has_and_belongs_to_many rooms

room_type只是Room属性。不过,这可能会因您的需求而有所不同。

另外start_dateend_date用于预订。您可以为房间和日期添加验证。

通过这种方式,您可以加入type ='whatever'的房间和预订,还可以为房间创建新的预订。我认为不需要更复杂。