在MYSQL中存储客户特定的详细信息?没有新表

时间:2014-02-11 12:42:11

标签: mysql sql

我正在考虑在注册我的服务时存储客户详细信息,有问题的服务是预订系统,每个用户都需要有他/她自己的日历系统,记录所有预订(到达数据/时间,名称) ,价格等)我可以想象一种方法将所有这些独特的用户信息存储在仅由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`)
)

每个用户都需要存储此信息?我当然需要为每个用户创建一个全新的表格? (我知道这只是简单的慢和错误。)

1 个答案:

答案 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旨在为大多数应用程序处理数百万行。实际上,在多个表之间拆分数据会引入性能上的一些主要问题(特别是部分填充的页面),这可能会大大降低性能。