我正在构建一个基于开放和众包数据的数据库。 数据涉及重复的预定事件。一项活动最长为7天。
用户根据他们的位置和日期时间询问当前事件和下一个事件。 (他们不能要求在2个月内发生的事件,只有当前的事件和下一个事件发生)
在特定时间和地点总会有一个独特的事件发生。 (你不能有0个事件,也不能有2个事件)
以下是我面临的问题:
第一期: 在收集的开放数据中,事件没有开始和结束日期时间。 他们有一天(1到7)和一周(1到5)身份证。开始时间和结束时间。 所以,如果一个事件发生在每个星期二,我将有5行(第1周到第5周和第2天)。 如果活动从周一晚上10点到周二凌晨2点。我会有两行。 一个星期一从晚上10点到午夜。一个星期二从午夜到凌晨2点。
第二期: 由于众包功能,数据可以随时改变。用户可以说事件从9变为11而不是8到10。 由于事件相互关联,这将影响在同一地点和同一天发生的其他事件。
您将如何根据这些元素构建数据库?
答案 0 :(得分:1)
使用RFC 5545(iCalendar)RRules。将它们存储在事件表中
使用物化视图从RRules生成实际事件,例如+ -1个月或+ 1年
如果您使用PostgreSQL作为数据库,则可以使用pg_rrule扩展名根据RRules计算日期。