在数据库中预订系统日期

时间:2009-11-07 13:04:53

标签: database date

我需要以下方面的帮助:

我正在设置预订系统(酒店预订种类),我已将支票日期和退房日期插入数据库,如何检查房间是否已预订?

我不知道如何管理数据库中已经预订的天数。有没有人可以告诉我这是如何工作的?也许我可以在哪里找到更多信息?

3 个答案:

答案 0 :(得分:1)

好吧,我不太了解你的问题,但我建议你添加一个状态字段,在其中你可以控制“预订”项目的当前状态。

之类的东西
  • 可用
  • 维护中
  • 占用

或者适合你的任何状态。

[编辑] 我用于该案例的分析如下: 例如,您的房间目前预订了这些日期范围:

  • 初始日期:2月8日
  • 结束日期:2月14日

成功预订示例

  • 初始日期:2月2日
  • 结束日期:2月6日

  • 初始日期:2月15日

  • 结束日期:2月24日

您应该检查预订尝试是否满足以下条件:

  1. “预订初始日期”和“预订结束日期”均不在已预订日期内。
  2. 示例:

    • 初始日期:2月2日
    • 结束日期:2月10日(在当前范围内(2月8日至14日))

    • 初始日期:2月12日(在当前范围内(2月8日至14日))

    • 结束日期:2月27日

      1. 如果“预订初始日期”小于当前初始日期,“预订结束日期”也应小于当前初始日期
    • 初始日期:2月2日。

    • 结束日期:2月27日(之前的初始日期,但之后的结束日期)

答案 1 :(得分:0)

这是一个有趣的问题 - 尤其是因为我不相信有一个理想的答案,因为它在某种程度上取决于“酒店”的性质以及人们入住房间的方式和在更大程度上的问题范围。

在最基本的层面上,您有两种方法可以跟踪房间的占用情况:

  1. 每个房间每天可以有一张桌子,用于定义该日期间该房间的状态(如果被占用,可能还有相关的预订)
  2. 对于每个房间,您都会保留一份“预订”清单(已经建议必须包含房间无法维修时的状态)。
  3. 之所以有一个有趣的问题是,这些都会在维护数据和搜索占用情况时立即向您提出某些挑战,前者您持有大量可能不需要的数据并且在后者发现新订单占用空白的情况可能更有趣。

    然后(在这两种情况下)您都有更多的资源分配问题 - 如果您的预订往往是两天,并且您的系统导致预订之间有1天的差距,则您需要重新安排入住率优化使用...但是您必须小心需要明确绑定到特定房间的预订。

    理想情况下,您会推迟尽可能长时间地将预订分配到房间(这就是为什么它取决于酒店 - 对于400个模块化房间来说很好,而对于十几个独特的房间则更少) - 只要有足够的房间在目标期间,您可以预订所需的标准(您可以转换,只要预订的房间数量少于真实房间)。当然,你仍然需要代表房间的状态,所以这是你必须管理的数据的补充。

    所有这些都使它变得有趣 - 问题有相当深度,你需要对特定问题有一个相当不错的理解才能产生适当的解决方案。

答案 2 :(得分:0)

我从避免人口密集的表格的角度来看待预订问题,假设库存是数千而不是数百。

解决方案一 - 间隔

解决方案2 - 仅在使用最小单位(1天)占用时填充插槽

解决方案三 - 为每个资源预先生成时隙并管理状态

解决方案一个尺寸最小,但由于你不能猜测你的搜索范围是否已经在一个区间内 - 你必须阅读并比较整个表格。

解决方案2解决了这个问题,您只能搜索特定的时间范围,但该表包含更多行。然而,由于空位不写在任何地方,高空位会减小桌子的大小。 另一个优点是可以将旧预订转移到单独的表格中。

解决方案三将表的大小增加到最大minSlot 资源时间,并且这些行是预先生成的。我能想到的唯一优势是通过简单的选择找到空槽的成本。 但是,提前生成插槽看起来对我来说是一个糟糕的主意。