数据库架构 重复发生的事件
Database Architecture Recurring Events
我正在构建一个基于开放和众包数据的数据库。
数据涉及重复发生的预定事件。一场活动最长 7 天。
用户根据他们的位置和日期时间询问当前事件和下一个事件。 (他们不能要求 2 个月内发生的事件,只能要求当前的事件和下一个)
总有一个独特的事件在特定的时间和地点发生。 (您不能有 0 个事件,也不能有 2 个)
以下是我面临的问题:
第一期:
在收集的公开数据中,事件没有开始和结束日期时间。
他们有一天(1 到 7)和一周(1 到 5)的 ID。开始时间和结束时间。
因此,如果每个星期二发生事件,我将有 5 行(第 1 周到第 5 周以及第 2 天)。
如果活动从周一晚上 10 点持续到周二凌晨 2 点。我会有两条线。
一个星期一晚上 10 点到午夜。一个星期二从午夜到凌晨 2 点。
第二期:
由于众包功能,数据可以随时更改。用户可以说事件从 9 到 11 而不是 8 到 10。
由于事件是相继发生的,这将影响在同一地点和同一天发生的其他事件。
您将如何基于这些元素构建数据库?
使用 RFC 5545 (iCalendar) 规则。将它们存储在您的活动中 table
使用实体化视图从 RRules 生成实际事件,比如 +-1 个月或 +-1 年
如果您使用 PostgreSQL 作为数据库,则可以使用 pg_rrule 扩展来根据 RRules 计算日期。
我正在构建一个基于开放和众包数据的数据库。 数据涉及重复发生的预定事件。一场活动最长 7 天。
用户根据他们的位置和日期时间询问当前事件和下一个事件。 (他们不能要求 2 个月内发生的事件,只能要求当前的事件和下一个)
总有一个独特的事件在特定的时间和地点发生。 (您不能有 0 个事件,也不能有 2 个)
以下是我面临的问题:
第一期: 在收集的公开数据中,事件没有开始和结束日期时间。 他们有一天(1 到 7)和一周(1 到 5)的 ID。开始时间和结束时间。 因此,如果每个星期二发生事件,我将有 5 行(第 1 周到第 5 周以及第 2 天)。 如果活动从周一晚上 10 点持续到周二凌晨 2 点。我会有两条线。 一个星期一晚上 10 点到午夜。一个星期二从午夜到凌晨 2 点。
第二期: 由于众包功能,数据可以随时更改。用户可以说事件从 9 到 11 而不是 8 到 10。 由于事件是相继发生的,这将影响在同一地点和同一天发生的其他事件。
您将如何基于这些元素构建数据库?
使用 RFC 5545 (iCalendar) 规则。将它们存储在您的活动中 table
使用实体化视图从 RRules 生成实际事件,比如 +-1 个月或 +-1 年
如果您使用 PostgreSQL 作为数据库,则可以使用 pg_rrule 扩展来根据 RRules 计算日期。