8

只是一个关于存储日历数据的快速架构问题。

基本上,我有一个出租服务数据库。在前端,有一个日历显示未来每个日期的“可用”或“不可用”。在后端,用户可以在 jQuery 日历上将任何日期/日期范围设置为可用或不可用(1 或 0)。

我的问题是您将如何将这些数据存储在 mysql 中并在前端检索它?

可能所有日期都可用并存储不可用的日期吗?然后,如果它们再次设置为可用,则删除该日期的记录?

干杯, RJ

4

2 回答 2

6

可能所有日期都可用并存储不可用的日期吗?然后,如果它们再次设置为可用,则删除该日期的记录?

是的,我会这样做,除非我不会在租用到期时删除记录 - 您很容易知道租用已过期,因为它已经过去了,因此您也会自动保留租用的历史记录。

毕竟,有无限数量的可用日期1,因此如果您反过来(并存储免费日期),则必须人为地限制支持的日期范围。

1未来。而且,在某种意义上,过去也是如此。

另外,我猜你想要一些额外的信息,以防服务被租用(例如租用者的姓名),如果租用由不存在的行表示,将无处可存储!


由于租用的粒度是一整天,我认为您正在查看类似于以下的数据库结构:

在此处输入图像描述

请注意 RENTING_DAY PK 如何自然地防止重叠。

或者,您可以放弃 RENTING_DAY 并直接在 RENTING 中设置 START_DATE 和 END_DATE,但这需要明确的范围重叠检查,这可能无法理想地扩展

于 2012-09-11T12:40:10.327 回答
1

确定默认值是Available还是Unavailable

可能所有日期都可用并存储不可用的日期吗?

所以默认是可用的?

然后你可以把unavailable_startunavailable_end存储为一个日期字段。对于单日,unavailable_start = _end. 然后很容易查询一个月或任何日期范围并返回该范围内的不可用时间段。然后让 jQuery 解析它以显示这些日期的日历详细信息。

于 2012-09-11T12:43:44.340 回答