特定のイベントのアラームを特定の日時に設定できるアプリケーションがあります。例えばのために: - :毎週日曜日、月曜日と水曜日午前7時と午後9時に発生する -データベースに格納されているユーザー定義のスケジュールでタスクを実行する次回の検索
イベントA は& Bと、これらのイベントは次のように行って、これらのイベントの週間スケジュールの特定の日に繰り返し発生イベントを紹介2があります。
イベントB - 午前6時および午後8時に日曜日と火曜日に発生します。
イベントC - 月曜日、水曜日、木曜日の午前8時9分に発生します。
ユーザは、選択したすべての日に同じ曜日を選択してタイミングを入力できるフォームが表示されます。必要な数のイベントを作成できます。
今のDBでは、日ごとに7列、タイミングの列が1つ作成されています。私はそれが不必要に複雑になるかもしれないことを知っています。上記のデータは、私は、イベントが例えばのために発生したときに次の最寄りの日と時間を見つけなければならないいくつかの理由で今
EventNAME SUN MON TUE WED THU FRI SAT Timings
A 1 1 0 1 0 0 0 7,21
B 1 0 1 0 0 0 0 6,20
C 0 1 0 1 1 0 0 8,21
として表される:今日は水曜日の朝6時であれば、私は次の最も近いイベントなどを取得する必要がありますイベントa - 朝7時。そして水曜日の午前8時に、次の最も近いイベントを午前8時にイベントCとして取得する必要があります。
このようなスキーマから次に近い日時を取得するにはどうすればよいですか?テーブルを設計する良い方法はありますか?スケジュール表にイベントを追加するたびに、(event_id, next_run_time)
それは火なければならない次の時間を計算する:
ありがとう@Mat for editing – Rasmus
これを正しく理解すれば、月曜日のリマインダを設定できません午前12時にのみ、午後4時には金曜日に同じことを通知します。 毎日と時間を単一の行に詰め込むのではなく、行+日+イベントIDを行ごとに取るようにデータベースを再設計します。 私がこれについてさらに展開したい場合は、おそらくいくつかのコード例が私に教えてくれます。 – Erik
@Erikこれにもっと光を当てることができれば素晴らしいだろう。 – Rasmus