如何使用可重复的事件实现日历?

时间:2012-01-20 14:22:49

标签: python django database-design data-structures django-models

我正在尝试使用可重复的事件来实现日历。 简单的例子(在人类语言中)是:“在10:00到12:00之间每个工作日发生一些事情”

将此数据存储在数据库中以及在数据库之间进行搜索的最正确方法是什么。 搜索可能类似于“在2012年2月21日星期二给我所有活动”。

我打算使用关系数据库来存储它们。

P.S。我打算使用Python和Django,因此可以使用现有的库。

1 个答案:

答案 0 :(得分:3)

在确定存储数据的最佳方式时,您必须考虑如何实现此目标:

  • 用户是否应该能够重新安排或删除其中一个重复发生的事件
  • 同样,对周期性事件的更改是应该更改所有事件还是仅更改未来事件?
  • 你是否关心在数据库中创建大量记录?

如果答案是前两个答案是肯定而答案是最后一个答案是肯定的,最简单的方法是允许事件有一个父事件,然后创建一个名为Recurring的单独记录,该记录涉及基本事件如何重现。然后,每次重复发生的事件发生变化时,都会触发一个创建/重新创建事件的脚本。

搜索事件本身变得简单:因为它们是实际事件,所以你只需要搜索它们。