2015-10-19 92 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,我正在檢查鏈接。 因此,對於衆包數據,我需要更改每個受影響的規則? –