2015-10-19 48 views
1

我正在构建基于开放和众包数据的数据库。数据涉及重复计划的事件。一件事最多7天。数据库体系结构重复性事件

用户根据位置和日期时间询问当前事件和下一个事件。 (他们不能要求在2个月内发生的事件,只有当前的和下一个发生的事件)

在某个时间和地点总会有一个独特的事件正在进行。 (你不能有0的事件,也没有2)

这里是我所面临的问题:

  • 第一个问题: 在收集到的公开数据,该事件没有开始和结束日期时间。 他们有一天(1至7)和一周(1至5)id。开始时间和结束时间。 所以如果一个事件发生在每个星期二,我会有5行(第1周到第5天,第2天)。 如果活动从周一晚上10点到周二凌晨2点。我会有两条线。 周一从晚上10点到午夜。一个星期二从午夜到凌晨2点。

  • 第二期: 感谢众包功能,数据随时都可能发生变化。用户可以说事件从9到11而不是8到10. 由于事件相互关联,这会影响在同一地点和同一天发生的其他事件。

如何基于这些元素构建数据库?

回答

1
  1. 使用RFC 5545(iCalendar)RRules。将它们储存在你的事件表

  2. 使用物化视图来从RRules实际事件,说+ -1个月或+ -1年

如果您使用PostgreSQL作为数据库,你可以使用基于RRules计算日期的pg_rrule扩展。

+0

感谢您的回答! 我确实使用Postgre,我正在检查链接。 因此,对于众包数据,我需要更改每个受影响的规则? –