データベースで複雑なスケジュールデータを表現しようとすると、興味深い問題が発生します。ics
ガイドラインとして、iCalendar---形式で表現できるもの全体をデータベースで表現できる必要があります。私は実際にはに関連するものを実装していませんがics
、特定のプロジェクトのためにモデル化できるようにする必要があるルールのタイプの良い範囲を提供します。
1日の複数回、曜日、月、月、年、またはそれらの組み合わせに基づいて、単一のイベントまたは定期的なイベントの表現を許可する必要があります。たとえば、毎年11月の第3木曜日、毎年12月25日、または11月2日から翌年の9月8日まで2週間ごとです。
挿入効率は気にしませんが、クエリ効率は重要です。私が最も頻繁に行う操作は、単一の日付/時刻または日付/時刻範囲のいずれかを提供し、定義されたスケジュールが日付/時刻範囲のいずれかの部分と一致するかどうかを判断しようとすることです。他の操作は遅くなる可能性があります。たとえば、2010年1月15日の午前10時から2010年1月15日の午前11時までの場合、その時間の少なくとも一部に一致するすべてのスケジュールを検索します。(つまり、10:30〜11:00をカバーするスケジュールは引き続き一致します。)
助言がありますか?RDBMSでスケジュールされたイベントをどのように表すかを見ました。しかし、それは私がモデル化したい再発ルールのタイプの範囲をカバーしていません。