4

定期的な時間枠を保存するための推奨される方法は何ですか?
例えば。毎日、毎週、または毎月の定期的なイベントに対応できるようにする必要があるカレンダー システムを使用している場合、どのような時間管理システムが最適ですか?

これはデータベースでどのように表現するのが最適ですか?

詳細
これの具体的な目標は、オープン タイム ウィンドウのセットを提供することです。これらのタイム ウィンドウを取得したら、コードは、システムに到着するメッセージがいずれかのタイム ウィンドウ内にあるかどうかをテストする必要があります。

4

2 に答える 2

1

カレンダーシステムがサポートする各タイプの繰り返しのレコードを保持するRecurrenceTypeテーブルを作成します。CalendarEventsテーブルの各イベントには、RecurrenceTypeテーブルのIDへの参照があります。

次に、コード内にRecurrenceRulesオブジェクトを作成します。このオブジェクトは、次の日付に現在の日付または開始日がいつ与えられるかを計算するビジネスロジックを保持するか、次のN個の日付を配列として取得します。

ほとんどの繰り返しロジックは、RecurrenceTypeテーブルのIDに基づく列挙値からコード化する必要があります。非常に単純なカレンダーシステムでない限り、すべてのデータ駆動型にすることができれば、私は驚きます。

お役に立てば幸いです。面白いプロジェクトのようですね。

于 2008-10-11T06:45:37.837 に答える
1

これはかなり遅れていますが、多くのテストと多くの心痛の後、これを機能させるための特定のスキームを決定しました. 私たちのシステムの必要性から、もしあったとしても、週単位で繰り返すことだけが要求されます。最終製品はそのように設計されます。

これがDBスキーマです

id : int(10)
window_name : varchar(100)
start_date : datetime
end_date : datetime
start_time : time
duration : int(10)
timezone: varchar(100)
monday : tinyint(1)
tuesday : tinyint(1)
...
sunday : tinyint(1)
  1. 時間の各「ウィンドウ」には、設定された開始日、終了日、開始時刻、および期間があります。
  2. ウィンドウは開始日と開始時刻に開き、「duration」秒間実行されます
  3. ウィンドウは指定された曜日にのみ開きます

これは、ウィンドウを毎週繰り返し開閉できる唯一のシステムであり、ウィンドウは翌朝まで続きます。定期的なウィンドウを実行するより複雑なシステムがあると確信していますが、柔軟で高速なものを探していて、毎月の定期的なイベントや年次のイベントは必要ありませんでした.

于 2009-06-11T22:10:26.863 に答える