我正在考虑在注册我的服务时存储客户详细信息,有问题的服务是预订系统,每个用户都需要有他/她自己的日历系统,记录所有预订(到达数据/时间,名称) ,价格等)我可以想象一种方法将所有这些独特的用户信息存储在仅由userID链接的单个表中?
CREATE TABLE IF NOT EXISTS `bookings` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`room_number` varchar(50) NOT NULL,
`name` varchar(20) NOT NULL,
`arrival` date NOT NULL,
`depart` date NOT NULL,
`nights` int(11) NOT NULL,
`price` decimal(11,2) NOT NULL,
`date_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
)
每个用户都需要存储此信息?我当然需要为每个用户创建一个全新的表格? (我知道这只是简单的慢和错误。)
答案 0 :(得分:3)
您不希望为每个用户存储单独的表(除非某些非常特殊的要求非常不寻常)。您的表格缺少userId
。类似的东西:
CREATE TABLE IF NOT EXISTS `bookings` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`UserId` int(11) NOT NULL,
`room_number` varchar(50) NOT NULL,
`name` varchar(20) NOT NULL,
`arrival` date NOT NULL,
`depart` date NOT NULL,
`nights` int(11) NOT NULL,
`price` decimal(11,2) NOT NULL,
`date_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
FOREIGN KEY (UserId) references users(UserId)
);
不要担心表中的行数。 SQL旨在为大多数应用程序处理数百万行。实际上,在多个表之间拆分数据会引入性能上的一些主要问题(特别是部分填充的页面),这可能会大大降低性能。