如何在MySQL数据库中表示“重复事件”?

时间:2012-01-12 09:43:05

标签: mysql database-design

我正在开发一个应用程序,需要允许网站管理员安排“活动”,并允许访问者在活动中预订或预订地点。

为了尽量减少管理工作,我需要允许管理员创建一个事件并将其标记为按计划重复。在大多数情况下,这将是“每周”,但在某些时候也可能需要“每两周”,“每月”等。

我一直在疯狂地试图弄清楚(已经有很多Google和SO搜索)如何在MySQL中建模。

我知道我需要将“事件条目”项目分开,然后只在需要时将“事件实例”添加到日程表中(即第一个人预订地点,日期到达,实例编辑独立于系列等。)

我似乎无法理解这应该如何实际记录在数据库中,而不会感到讨厌。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:2)

我一直在考虑类似于爱好项目的东西。

我的结论是,维护一个单独的预定事件(实例)表和一个单独的重复事件表(即没有用实例事件的记录填充实例表)然后合并周期性事件会更容易对查询的响应。

这还需要您实现查询API,该API需要计划请求的开始和结束时间(或了解重复发生的事件和实例)。

并简化处理例如每周安排一个定期事件,然后将例外放入实例表中。

考虑 - 如果您为重复发生的事件创建实例 - 有人会安排一个没有结束日期的每周事件。你在实例表中放了多少条记录?你怎么知道他们什么时候用光了?当业主取消时间表时,您如何处理实例?

查看有关创意的ical / vcalendar文档。

您可能还想了解phpcalendar等应用程序如何处理它。