複数日の予定プログラム用のデータベースの設計に取り組んでいます。これが私がやっていることです。クライアントが x 日間予約できる 40 の「スポット」があります。この情報を保存する最善の方法を決定するのに苦労しています。特定の日に「スポット」の行が作成されていない場合、この「スポット」は無料であることがわかると考えています。おそらく1年間、毎日の「スポット」ごとに行を作成し、「スポット」が空いている場合はブール列を作成するのとは対照的です。私の次の問題は、特定の予約ストアを複数日にわたって作成する方法です。前日の主キーを格納する列を検討しています。この列が空の場合、この予定が多数の予定の最初の日か、1 日だけの予定であることがわかります。
1544 次
1 に答える
2
スポットは常に終日予約する必要があるため、次のように最初のアプローチを使用します。
BOOKING.DAY は時間のない日付です。
特定の日に特定のスポットが予約されているかどうかを確認するには、BOOKING で対応する行の存在を検索します。複数日の予約を行うには、1 つの行を APPOINTMENT に挿入し、対応する複数の行を BOOKING に挿入します。
注: このモデルは、同じ予定の日の連続性を強制しません。これが重要な場合は、非宣言的な手段 (トリガーやアプリケーション レベルなど) で強制する必要があります。
注: クライアント以外の予定に関連付けられた情報がない場合は、APPOINTMENT テーブルを完全に削除して、CLIENT を直接 BOOKING に接続できます。
BOOKING に (1 日だけでなく) 期間が含まれる代替設計も実行できますが、期間の重複を避けることが複雑になります (おそらく、トリガーと慎重なロックの組み合わせが必要になります)。
于 2012-06-21T15:35:21.933 に答える