【问题标题】:designing database for storing unavailable dates in a room booking app设计用于在客房预订应用程序中存储不可用日期的数据库
【发布时间】:2017-03-21 05:30:24
【问题描述】:

我正在开发一个room booking 应用程序。我正在使用rails 5postgres。模型是这样的。

一个Hotelhas_manyroom_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 列

有人能解释一下这个话题吗?

【问题讨论】:

  • 您是否考虑过创建一个预订模型,该模型具有belongs_to 房间并具有start 日期时间和stop 日期时间以及它需要的任何其他信息?
  • @Okomikeruko 该方法适用于预订的房间。但我正在寻找一种方法,房间所有者可以将某些日期标记为不可用
  • 这些是重复日期吗?
  • 不。它不会重复出现。它是一个市场应用程序。所以计划让业主选择设置不可用的日期。我打算展示一个 jquery 日历,以便他们可以选择不可用的日期。但是如何用我的后端构建这些信息是我正在努力解决的问题......

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


【解决方案1】:

我看不太清楚你的模型,但我认为应该是这样的:

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',还可以为房间创建新的预订。我认为不需要更复杂。

【讨论】:

  • 抱歉,如果问题不是很清楚,并认为您的问题有误,因为您建议的方法适用于预订的房间。我正在寻找让房主在日历上将一个或多个日期标记为不可用的选项。他们还可以使用 jquery 日历等将多个日期标记为不可用。但我想不出一种将这些日期保存在数据库中的可靠方法。
  • 我认为它应该工作相同。只需将Booking 更改为您认为更合适的任何其他词即可。
猜你喜欢
  • 1970-01-01
  • 2012-03-06
  • 2017-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-07
  • 2020-04-15
相关资源
最近更新 更多