7

私のアプリケーションでは、スケジュールからスケジュールを予約しているクライアントがあります。私は次の機能が必要です。予定表(reoccurringとsingle)を可能にする可用性カレンダーの最適なデータベーススキーマは何ですか

プロバイダー: - 再発の可能性を指定することができます。たとえば、月9-5、火10-3など - データをブラックアウトすることができます。たとえば、この月には利用できません。 - 再発行する日付/時間スロットではなく、単一のものを追加することができます。たとえば - This Sat 9-5。

お客様: - 1つのアポイントメントを予約することができます。 - 再発する予約を予約することができます。 (毎月9〜4月)。 30分間隔に

  1. 分割スケジュールおよび各間隔/プロバイダペアのデータベースエントリを作成します。

    は、これまでのところ私は3つのオプションを思い付きました。各区間は無料または予約可能です。顧客が予約を予約すると、予約された間隔をマークします。このアプローチの問題は、多くのスペースを無駄にすることです。また、再発する予約のために検索パフォーマンスがどれくらい良いかわかりません。

  2. 各有効期間を「イベント」として保存します。再発する場合は、イベントを複製してください。空きスロットを検索する際に、予約テーブルを検索して、超過ラッピング予約がないことを確認します。この場合、再発するスロットを探すのはちょっと面倒です。来年1月9日に利用可能なすべてのプロバイダを見つけるには、一致するすべての「イベント」を検索し、一致する52のイベントを持つすべてのプロバイダを見つける必要があります。
  3. 各有効期間を「イベント」として保存します。フリースロットを検索する際に予約テーブルを検索して、オーバーラッピング予約がないことを確認します。これにより、再発する予定を簡単に検索することができます。再発すると思われるスロットを「ブラックアウト」するには、偽の予約を挿入するだけです。

答えて

6

1.Createイベントテーブル:基本的な列に

a)は、イベントのためのその他の詳細とSTARTTIME、終了時刻を、EVENTDATE - これらは忙しい時間ですので、あなたはカレンダーに遮るものです

b)のイベント定期 - 列を追加: - isrecurring - 0 デフォルト - recurrencetype(毎日、毎週、毎月) - recurevery(再発が発生するときのカウント) - 月曜、火曜、結婚を、 thur、fri、sat、sun - 週間の再発のための曜日 - 月と曜日の月次再発の場合

2.カレンダーに定期的な予定を作成するときに問題が発生します。 - すべてを一度に作成する場合(次の6か月間)、編集するたびに他のものを更新する必要があります - 前回のイベントの作成時にのみイベントを作成する場合、将来の予定を表示する複雑なロジックが必要です

3.イベントが許可されるかどうかを管理するルールも必要です互いに重複している、どのリソースが使用されているか、どのくらい先にイベントを予定できるか

+0

Reccuring Even ts表スキームになります。上記から合計で理解できませんでした –

関連する問題