gpt4 book ai didi

数据库架构 - 预订/可用性系统

转载 作者:太空狗 更新时间:2023-10-30 01:44:44 27 4
gpt4 key购买 nike

我最近被问及一个关于假设的基于 Web 的预订系统的面试问题,以及我将如何设计数据库架构以最大限度地减少重复并最大限度地提高灵 active 。

用例是管理员将属性的可用性输入系统。可以设置多个时间段。例如,2009 年 4 月 1 日至 2009 年 4 月 14 日和 2009 年 7 月 3 日至 2009 年 7 月 21 日。

然后,用户只能在相同或更短的可用期间内进行预订。

您将如何将这些信息存储在数据库中?

你会使用像这样简单(真正简化)的东西吗?

AVAILABILITY(property_id, start_date, end_date);
BOOKING(property_id, start_date, end_date);

然后,您能否轻松地构建一个网页,显示可用性日历,其中已预订的时段被删除。从这个数据库模式构建报告会容易吗?它像看起来那么容易吗?

最佳答案

使用单个表来处理可用性和预订可能会更容易,粒度为 1 天:

property_date (property_id, date, status);

列状态将具有(至少)以下 2 个值:

  • 可用
  • 已预订

输入可用时间段,例如4 月 1 日至 14 日需要(应用程序)将 14 行插入 property_date,每行状态为“可用”。 (对于用户来说,它应该看起来像是一个单一的 Action )。

预订 4 月 3 日至 11 日期间的住宿需要检查每天是否存在“可用”行,并将状态更改为“已预订”。

这个模型可能看起来有点“冗长”,但它有一些优点:

  1. 检查任何日期的可用性很容易
  2. 添加预订会自动更新可用性,没有单独的可用性表来保持同步。
  3. 在网页中显示可用性非常简单
  4. 很容易添加新的状态来记录不同类型的不可用性 - 例如关闭进行维护。

注意如果“可用”是属性最常见的状态,则最好反转逻辑以便存在“不可用”状态,并且没有日期行意味着它可用。

关于数据库架构 - 预订/可用性系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/358913/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com