在我的应用程序中,我有一个提供者,它有一个时间表和从时间表中预约的客户。我需要以下功能。
提供者: - 能够指定重复出现的可用性。例如周一 9-5、周二 10-3 等 - 能够涂黑数据。例如 - 在这个星期一不可用。- 能够添加单一的、不重复的日期/时间段。例如 - 这个星期六 9-5。
客户: - 能够预订单次约会。- 能够预订重复的约会。(每个星期一 9-4)。
到目前为止,我提出了 3 个选项:
- 将时间表划分为 30 分钟间隔,并为每个间隔/提供者对创建一个数据库条目。每个间隔可以是免费的,也可以是预订的。当客户预订约会时,我们将间隔标记为已预订。这种方法的问题是它浪费了很多空间,而且我不确定搜索性能对于重复预订会有多好。
- 将每个可用时间段保存为“事件”。如果它再次发生,请复制该事件。在搜索免费时段时,请搜索预订表以确保没有重叠预订。在这种情况下,搜索重复出现的插槽似乎有点尴尬。要查找明年周一 9-5 可用的所有提供者,我们将必须搜索所有匹配的“事件”并找到具有 52 个匹配事件的所有提供者。
- 将每个可用时间段保存为“事件”。如果再次出现,请添加一个标志。搜索空闲时段时,请搜索预订表以确保没有重叠预订。它使搜索重复约会变得更加容易。对于假设会再次发生的“停电”时段,我们可以插入一个假预订。