-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

您将希望将其分成三个表并使用一对多关系处理您的问题。您将需要一个“房间”表,其中仅包含一个 ID 号和一些关于该房间的简要信息(就像您在这里一样,名称和 ID 就可以了)。您将需要第二张表作为“用户”...就像房间一样,它将为每个用户保存一个 ID 字段以及您认为合适的有关该用户的一些信息。然后,您有一个预订表,其中存储了很长的“room_id、user_id、datetime_booked”行。预订表中的每一行代表一个预订。如果您想要附加功能,也可以添加诸如“持续时间”(可能是 start_date 和 end_date 以允许灵活的预订时长)或“人数”之类的内容。

用户信息实际上不必存储为它自己的单独表......“预订”可能包含用户信息,但每次该用户创建预订时,您都会在数据库中恢复他们的用户信息(冗余线路)。用户表消除了这种数据冗余,并用一个 ID 列替换它。

希望您了解该设置是如何工作的……对表规范化以及一对多关系如何工作进行一些研究(堆栈溢出是一个很好的资源)。

于 2013-09-18T21:58:10.327 回答