我有一個有趣的問題,試圖在數據庫中表示覆雜的計劃數據。作爲指導原則,我需要能夠表示iCalendar - ics
- 格式可以表示的全部內容,但需要表示在數據庫中。我沒有實際執行任何與ics
有關的任何事情,但它提供了我需要能夠爲我的特定項目建模的規則類型的良好範圍。代表數據庫中的複雜計劃重現
我需要允許基於每天多次,一週中的幾天,一個月中的某一週,一個月中的某一週,或這些組合中的某個組合來允許表示單個事件或重複事件。例如,每年11月的第三個星期四或每年12月25日,或從11月2日開始的每兩個星期,直到第二年的9月8日。
我不在乎插入效率,但查詢效率是至關重要的。我最常做的操作是提供單個日期/時間或日期/時間範圍,並嘗試確定定義的時間表是否與日期/時間範圍的任何部分相匹配。其他操作可能會更慢。例如,從2010年1月15日上午10點到2010年1月15日上午11:00,找到至少部分時間匹配的所有時間表。 (即時間表涵蓋10:30 - 11:00仍然匹配。)
有什麼建議嗎?我查看了How would one represent scheduled events in an RDBMS?,但它並未涵蓋我想要建模的重複規則類型的範圍。