私のアプリケーションでは、スケジュールからスケジュールを予約しているクライアントがあります。私は次の機能が必要です。予定表(reoccurringとsingle)を可能にする可用性カレンダーの最適なデータベーススキーマは何ですか
プロバイダー: - 再発の可能性を指定することができます。たとえば、月9-5、火10-3など - データをブラックアウトすることができます。たとえば、この月には利用できません。 - 再発行する日付/時間スロットではなく、単一のものを追加することができます。たとえば - This Sat 9-5。
お客様: - 1つのアポイントメントを予約することができます。 - 再発する予約を予約することができます。 (毎月9〜4月)。 30分間隔に
- 分割スケジュールおよび各間隔/プロバイダペアのデータベースエントリを作成します。
は、これまでのところ私は3つのオプションを思い付きました。各区間は無料または予約可能です。顧客が予約を予約すると、予約された間隔をマークします。このアプローチの問題は、多くのスペースを無駄にすることです。また、再発する予約のために検索パフォーマンスがどれくらい良いかわかりません。
- 各有効期間を「イベント」として保存します。再発する場合は、イベントを複製してください。空きスロットを検索する際に、予約テーブルを検索して、超過ラッピング予約がないことを確認します。この場合、再発するスロットを探すのはちょっと面倒です。来年1月9日に利用可能なすべてのプロバイダを見つけるには、一致するすべての「イベント」を検索し、一致する52のイベントを持つすべてのプロバイダを見つける必要があります。
- 各有効期間を「イベント」として保存します。フリースロットを検索する際に予約テーブルを検索して、オーバーラッピング予約がないことを確認します。これにより、再発する予定を簡単に検索することができます。再発すると思われるスロットを「ブラックアウト」するには、偽の予約を挿入するだけです。
Reccuring Even ts表スキームになります。上記から合計で理解できませんでした –