【问题标题】:How to implement calendar with repeatable events?如何实现带有可重复事件的日历?
【发布时间】:2012-01-20 14:22:49
【问题描述】:
我正在尝试实现具有可重复事件的日历。
简单的例子(用人类语言)是:“每个工作日的 10:00 到 12:00 之间都会发生一些事情”
将这些数据存储在数据库中并在它们之间进行搜索的最正确方法是什么。
搜索可能类似于“给我 2012 年 2 月 21 日星期二的所有事件”。
我打算使用关系数据库来存储它们。
附:我打算使用 Python 和 Django,以便可以使用现有的库。
【问题讨论】:
标签:
python
django
database-design
data-structures
django-models
【解决方案1】:
在确定存储数据的最佳方式时,您必须考虑如何实现这一点:
- 用户是否应该能够重新安排或删除其中一项重复活动
- 同样,对周期性事件的更改应该更改所有事件还是仅更改未来事件?
- 您是否关心在数据库中创建大量记录?
如果前两个答案是肯定的,最后一个答案是否定的,实现这一点的最简单方法是允许事件有一个父事件,然后创建一个名为 Recurring 的单独记录,它涉及基本事件如何重复发生.然后每次重复事件发生变化时,都会触发一个创建/重新创建事件的脚本。
搜索事件本身就变得很简单:因为它们是实际事件,所以您只需搜索它们。