2012-01-12 13 views
0

私は、サイト管理者がイベントをスケジュールし、訪問者がイベントの場所を予約または予約できるようにするアプリケーションを開発しています。MySQLデータベースで "定期的なイベント"を表現する方法は?

管理作業を最小限に抑えるには、管理者が予定を作成してスケジュールに反復としてマークする必要があります。ほとんどの場合、これは「毎週」になりますが、「2週間ごとに」、「月に1回」なども必要になることがあります。

私は、MySQLでこれをモデル化する方法を(多くのGoogle & SO検索で)理解しようと夢中になってきました。

「イベントエントリ」アイテムを別々にしておき、必要に応じて「イベントインスタンス」をスケジュールに追加する必要があることを理解しています(つまり、最初の人が場所を予約し、日付が到着し、シリーズなど)

これはデータベースに実際にどのように記録されるべきか、頭がおかしくないようです。誰かが私を正しい方向に向けることができますか?

答えて

2

私はホビープロジェクトと同様のことを考えていました。

私の結論は、個々のスケジュールされたイベント(インスタンス)のテーブルと定期的なイベントのテーブル(イベントテーブルに繰り返しイベントのレコードを設定しない)を維持し、定期的なイベントをマージする方が簡単だということでしたクエリに応答して

これはまた、スケジュール要求の開始時間と終了時間(または定期的なイベントとインスタンスについての理解)を必要とするクエリAPIを実装することを意味します。

そして、例えば、定期的なイベントが毎週スケジュールされ、次に例外をインスタンス・テーブルに入れます。

考慮事項 - 定期的なイベントのインスタンスを作成する場合、誰かが終了日のない週ごとのイベントをスケジュールします。インスタンス・テーブルにいくつのレコードを入れますか?あなたは彼らが尽きたときにどのように検出するのですか?オーナーがスケジュールをキャンセルしたときのインスタンスの処理方法を教えてください。

アイデアはical/vcalendarのドキュメントをご覧ください。

また、phpcalendarなどのアプリケーションでこれがどのように処理されるかを見てみることもできます。

+0

私はもともと3つのテーブルを考えていましたが、私のダイアグラムを見たところ、それは正しく感じられませんでした。私はこれを答えとしてマークするつもりです。なぜなら、私のfrazzledな脳が思い付いているものよりも意味があるからです。ありがとう – Hades

関連する問題