如何在一个数据库行中保存多个值

时间:2013-09-18 21:21:55

标签: php sql database rows

我已经制作了一个表格,允许用户通过选择时间,持续时间和两个房间中的一个来预订房间,当房间被预订时,表格将显示房间被预订,但这发生在预订后我希望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 );

如何设置它以便我可以让多个用户同时预订同一个房间?

1 个答案:

答案 0 :(得分:1)

您需要将其划分为三个表,并使用一对多关系处理您的问题。您将需要一个“房间”表,其中只包含一个ID号和一些关于该房间的简要信息(就像您在这里,名称和ID一样好)。您将需要第二个表作为“用户”...就像房间一样,这将为每个用户保存一个ID字段,并根据您的需要为该用户提供一些信息。然后,您有一个预订表,存储了'room_id,user_id,datetime_booked'这一行的长线。预订表中的每一行代表一次预订。如果您想要其他功能,也可以添加“持续时间”(可能是start_date和end_date以允许灵活的预订长度)或“人数”等内容。

用户信息实际上并不需要存储,因为它自己的单独表格...“预订”可能包含用户信息,但每次用户创建预订时,您都会恢复其用户信息数据库(冗余线)。用户表消除了此数据冗余,并将其替换为ID列。

希望你看到这个设置是如何工作的......把一些研究(堆栈溢出是一个很好的资源)放到表规范化中以及一对多关系如何工作。