如何在MySQL数据库中表示“递归事件”



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

为了尽量减少管理工作,我需要允许管理员创建一个事件,并将其标记为在时间表上重复出现。在大多数情况下,这将是"每周",但在某些时候也可能需要"每2周"、"每月"等。

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

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

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

我一直在考虑一个类似的爱好项目。

我的结论是,维护一个单独的计划事件(实例)表和一个重复事件的单独表(即不在实例表中填充重复事件的记录),然后在对查询的响应中合并重复事件会更容易。

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

为了简化处理每周安排一次重复事件的情况,请将异常放入实例表中。

考虑一下——如果你为重复发生的事件创建实例——有人会安排一个没有结束日期的每周事件。您在实例表中放入了多少条记录?你如何检测它们何时用完?当所有者取消计划时,您如何处理这些情况?

请查看ical/vcalendar文档以获取想法。

您可能还想了解phpcalendar等应用程序是如何处理这一问题的。

最新更新