4

繰り返し機能のような Google カレンダーに最適な方法でテーブル構造を設計するにはどうすればよいですか?

Google カレンダーを使用すると、ユーザーはイベントの繰り返しを無期限または一定期間スケジュールできます。これを行う場合、これらのタイプの将来のデータをデータベース テーブルで管理する最善の方法は何でしょうか?

例: events という名前のテーブルがあり、繰り返しのないタイプで、ある日時にスケジュールされているすべての通常のイベントを保存します。繰り返し発生するイベントに関しては、別のテーブルを作成してテンプレートとして保存しますか?

たとえば、非常に単純に考えてみましょう。

**Events**
id
title
description
datetime_from
datetime_to
status


**Event_Schedule**
id
title 
description
time_from
time_to
repeats_on (Daily, Weekly, Monthly)
repeat_config ____serialized array or object

フィールドは完全ではありませんが、これはアイデアを提供するためのものであり、ここでできることは、cron ジョブまたはスケジューラーが次のイベントごとにイベントを作成できることです。カレンダーに表示する場合は、Event_Scheduleテーブルからデータを生成することで実行できます。ユーザーが将来のイベントのデータを編集すると、そのイベントのデータをEventsテーブルに保存できます。それは正しい方法ですか、それともより良い方法で行うことができますか? テンプレートと同じテーブルに保存することも考えられますが、別のテーブルの方が良い方法だと思います。

4

1 に答える 1

5

データベースがすべてを行う必要はありません。プログラム コードは、カレンダーのレンダリングの一部を担当する場合があります。

イベント データベース テーブルの 1 つのバージョンを次に示します。

Event
-----
Event ID
Event Title
Event Location
Event Description
Event Start Time Stamp
Event End Time Stamp
Repeat Frequency (None, Daily, Weekly, Monthly, Quarterly, Yearly, 
    every nth day (every 3rd Tuesday)
    other odd frequencies 
        (the Tuesday following the first Monday in November, the Sunday 
         following the paschal full moon, which is the full moon that 
         falls on or after the vernal (spring) equinox)

あなたのプログラムは、Event テーブルのイベント行を調べて、どれが繰り返し頻度があるかを確認し、表示されている月にどのイベントが表示されるかを計算する責任があります。

基本的に、プログラム コードは次のプログラム オブジェクトを計算する必要があります。これはデータベース テーブルではありません。

Calendar Event
--------------
Event Date
Event Start Time
Event End Time
Event Title
Event Location
Event Description.

その月のカレンダー イベントのリストまたは配列が表示されます。

于 2013-02-25T14:10:05.423 に答える