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



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

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

您不希望为每个用户存储单独的表(除非在某些非常不寻常的要求下)。 您的表缺少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 旨在为大多数应用程序处理数百万行。 事实上,将数据拆分到多个表会带来一些主要的性能问题(特别是部分填充的页面),这可能会大大降低性能。

相关内容

最新更新