在MySQL中存储日历数据

时间:2012-09-11 10:49:41

标签: mysql database-design architecture

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

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

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

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

干杯, RJ

2 个答案:

答案 0 :(得分:6)

  

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

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

毕竟,有无数的可用日期 1 ,所以如果你反过来(并存储免费日期),你必须人为地限制支持的日期范围。 / p>

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

此外,我猜你想要租用服务时需要一些额外的信息(例如租客的名字),如果租房由不存在的行代表,那么无处可存储!


由于租赁的粒度是一整天,我认为您正在寻找类似于此的数据库结构:

enter image description here

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

或者,您可能会放弃RENTING_DAY并直接在RENTING中设置START_DATE和END_DATE,但这需要明确的range overlap checksmay not scale ideally

答案 1 :(得分:1)

确定默认值是Available还是Unavailable

  

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

所以默认是可用的吗?

然后您可以将unavailable_startunavailable_end - 存储为日期字段。单日,unavailable_start = _end。然后,您可以轻松查询一个月或任何日期范围,并在该范围内返回不可用期。然后让jQuery解析它以显示这些日期的日历详细信息。