-1

ユーザーが時間、期間、および部屋が予約されているときに2つの部屋の1つを選択して部屋を予約できるフォームを作成しましたが、フォームには部屋が予約済みとして表示されますが、これは1回の予約後に発生し、たとえば、20 人のユーザーがたとえば 1:00 に部屋を予約できるようにする

これは、何かを変更する必要があると思うところですが、確かではありません。

$sql = "
CREATE TABLE IF NOT EXISTS table_list (
id int(11) NOT NULL AUTO_INCREMENT,
title varchar(255) NOT NULL,
status int(11) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;";
dbDelta( $sql );

$sql= "INSERT INTO table_list (id, title, status) VALUES
(1, 'Room 1', 0),
(2, 'Room 2', 0);";
dbDelta( $sql );

複数のユーザーが同じ部屋を同時に予約できるようにするにはどうすればよいですか?

4

1 に答える 1

1

これを 3 つのテーブルに分割し、1 対多の関係で問題を処理します。ID 番号とその部屋に関する簡単な情報 (ここにあるように、名前と ID で十分です) を保持するだけの「rooms」テーブルが必要になります。'users' として 2 番目のテーブルが必要になります。これは、room と同様に、各ユーザーの ID フィールドと、そのユーザーに関するいくつかの情報を保持します。次に、「room_id、user_id、datetime_booked」という長い行を格納する予約テーブルがあります。bookings テーブルの各行は、1 つの予約を表します。追加の機能が必要な場合は、「期間」(柔軟な予約期間を可能にするための start_date と end_date など) や「人数」などを追加することもできます。

ユーザー情報は、実際には別のテーブルに保存する必要はありません...「予約」にはユーザー情報を含めることができますが、そのユーザーが予約を作成するたびに、ユーザー情報がデータベースに復元されます(冗長行)。ユーザー テーブルは、このデータの冗長性を排除し、ID 列に置き換えます。

うまくいけば、その設定がどのように機能するかがわかります... テーブルの正規化と 1 対多の関係がどのように機能するかについて、いくつかの調査 (スタック オーバーフローは優れたリソースです) を行ってください。

于 2013-09-18T21:58:10.327 に答える