最近有人问我一个关于假设的基于 Web 的预订系统的面试问题,以及我将如何设计数据库模式以最大限度地减少重复并最大限度地提高灵活性。
用例是管理员将属性的可用性输入系统。可以设置多个时间段。例如,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);
然后,您能否轻松地构建一个网页,显示一个可用日历,其中包含已预订的时段。从这个数据库模式构建报告会很容易吗?是否像看起来那么容易?