我正在为多天预约计划设计数据库。这就是我在做的事情。我有40个“点”,客户可以预订x天。我在确定存储此信息的最佳方式时遇到了麻烦。我正在考虑如果在某一天没有为某个“点”创建一行,那么我就知道这个“点”是免费的。如果“点”是免费的,那么每天为每个“点”创建一行可能一年,然后有一个布尔列。我的下一个问题是如何在多天内建立一个特定的预约商店。我正在考虑有一个列,它将存储前一天的主键。如果这个专栏是空的,我会知道这个预约是为了许多人的第一天,还是仅仅是为期一天的预约。如果需要,这很难翻译成我可以改写的词。
答案 0 :(得分:2)
由于必须一整天预订一个地点,我会采用第一种方法,类似于此:
BOOKING.DAY是一个没有时间的日期。
要检查给定日期是否预订了给定的地点,只需在BOOKING中搜索相应行的存在。要预约多天,请在APPOINTMENT中插入一行,在BOOKING中插入几个相应的行。
注意:此模型不会强制执行同一约会的连续日期。如果这很重要,您必须通过非声明性方式(例如触发器或在应用程序级别)强制执行它。
注意:如果您没有与客户之外的约会相关的任何信息,您可以完全删除APPOINTMENT表并将客户端直接连接到BOOKING。
替代设计,其中BOOKING包含一个句点(而不仅仅是一天)也可以完成,但这会避免重叠句点(它可能需要触发器和小心锁定的组合)。