【问题标题】:Database Architecture Recurring Events数据库架构重复事件
【发布时间】:2015-10-26 12:18:40
【问题描述】:

我正在构建一个基于开放和众包数据的数据库。 数据涉及重复的预定事件。一个事件最长为 7 天。

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

在特定的时间和地点总会发生一个独特的事件。 (你不能有 0 个事件,也不能有 2 个)

这是我面临的问题:

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

  • 第二期: 由于众包功能,数据可以随时更改。用户可以说事件从 9 到 11 而不是 8 到 10。 由于事件相互跟随,这将影响在同一地点和同一天发生的其他事件。

您将如何根据这些元素构建您的数据库?

【问题讨论】:

    标签: database-design architecture restful-architecture


    【解决方案1】:
    1. 使用 RFC 5545 (iCalendar) RRules。将它们存储在您的事件表中

    2. 使用物化视图从 RRules 生成实际事件,例如 +-1 个月或 +-1 年

    如果您使用 PostgreSQL 作为数据库,则可以使用 pg_rrule 扩展来根据 RRules 计算日期。

    【讨论】:

    • 感谢您的回答!我确实使用 Postgre,我现在正在检查链接。那么对于众包数据,我需要更改所有受影响的规则吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    相关资源
    最近更新 更多