10

データベースで複雑なスケジュールデータを表現しようとすると、興味深い問題が発生します。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でスケジュールされたイベントをどのように表すかを見ました。しかし、それは私がモデル化したい再発ルールのタイプの範囲をカバーしていません。

4

3 に答える 3

4

最後に、この投稿が最も役に立ちました。

iCal「フィールド」リスト (iCal 標準に基づくデータベース スキーマ用)

私たちは iCal モデルをほぼ正確に踏襲することに決めました。なぜなら、その標準を書いた人たちは、問題の領域に対して素晴らしい感覚を持っていたからです。

于 2010-06-18T23:34:12.653 に答える
1

私がこれに似たことをした方法は、2 つのテーブルを持つことでした。イベントに定期的なパターンがない場合は、日付、開始時刻、および終了時刻のみを保存します。クエリは、検索する時間がエントリの開始時間よりも長く、同じイベントの終了時間以下であるかどうかを確認します。

定期的なイベントの場合、iCalendar が繰り返しを保存する方法についてはあまり詳しくありませんが、各イベントを曜日ごとに保存する場合 (1 つのイベントが 1 週間に複数日繰り返される場合は、1 つのイベントに対して複数の行が必要になる場合があります)。 、上表とほぼ同じ方法で検索してください。週の第 3 火曜日のような見知らぬ再発の場合は、特定の状態を説明する列を追加できます。ics がそのような再発をどのように表しているかについて詳しく教えていただければ、これについてより良い答えを出せるかもしれません。

それが役立つことを願っています。今はあまり時間がありません。これについて話したい場合は、後で私に連絡してください。私は現在ミズーリ州にいるので、来週の空き状況は不安定になるでしょう.

于 2010-06-13T14:43:37.150 に答える
-1

これは些細な解決策かもしれませんが、イベントの繰り返し ( x週間ごと、毎年、毎週など) を定義する列を追加し、それを結果基準として使用することの欠点は何でしょうか?

于 2010-06-13T18:44:08.367 に答える