ホテルの部屋を予約できる曜日を設定する Web フォームがあります。
私の疑問: それをデータベースに保存する最良の方法は何ですか?
曜日ごとに1つずつ、7つのブール列を作成することを考えました。
EDIT : 私のフォームはバックエンドで、ホテルのオーナー向けです。奇妙に聞こえるかもしれませんが、部屋が空いている曜日を設定したいと考えています。
ホテルの部屋を予約できる曜日を設定する Web フォームがあります。
私の疑問: それをデータベースに保存する最良の方法は何ですか?
曜日ごとに1つずつ、7つのブール列を作成することを考えました。
EDIT : 私のフォームはバックエンドで、ホテルのオーナー向けです。奇妙に聞こえるかもしれませんが、部屋が空いている曜日を設定したいと考えています。
以下のような構造を調べます。複雑に見えるかもしれませんが、正規化されており、簡単にスケールアップできます。
Rooms
--------------------------
id
number
type (Suite, Standard, Twin)
floor
Room_Bookings
--------------------------
room_id
reservation_id
type (customer, hotel)
date
Reservations
--------------------------
id
customer_id
total_price
paid (yes/no)
created_by (staff member?)
number_of_nights
Room_Available_Days_Of_Week
--------------------------
room_id
day_id (0 = sunday, 1 = monday etc etc)
type
可能性があります。部屋が滞在のために予約されたときの顧客。ホテルは、特定の日に部屋をブロックするために使用される可能性があります。たとえば、部屋にメンテナンス作業がある場合。たとえば、3泊の滞在は、の1行Reservations
との3行で構成されRoom_Bookings
ます。
空室状況については、予約されておらず、必要な平日に一致Room_Bookings
する行がテーブルにある場合に、部屋が空室になります。Room_Available_Days_Of_Week
予約をテーブルに保存し、予約ごとに 1 つの行を、列: visitor_id、部屋番号、開始日と終了日で保存します。次に、クエリを実行して (部屋ごとまたは全体で) 利用可能な日付を確認します。
部屋ごとに別のテーブル (つまり、部屋ごとに 1 つの行) を作成し、次に部屋/日付ごとに別の別のテーブルを作成します。部屋が予約されている場合は、2番目のテーブルに挿入します。部屋が使用されているかどうかを確認するには、最初のテーブルから選択し、日付を指定して 2 番目のテーブルに左結合します。2 番目のテーブルの列が null の場合、その部屋は空いています (つまり、その部屋 / 日付にはまだ何も予約されていません)。