mysql - 数据库设计,列数可变

标签 mysql sql database-design

<分区>

我有一个简单的应用程序,用户可以在其中将数据提交到表中。

目前有 3 个字段可供用户传递值。我正在尝试找到一种解决方案,其中描述列的数量可能会有所不同,具体取决于用户创建的描述列表。

到目前为止我考虑过:

  1. 让 user_input 表有许多可为空的描述 字段,比如 1-15,从而限制了描述的数量 用户可以定义到 15 个字段。这个解决方案很容易 查询和维护,但是仅限于一定数量的字段。 (这通常是可行且可接受的解决方案吗?)
  2. 创建一个表,其中每一行对应 1 个描述 进入。这将允许用户创建无限数量的 描述字段,但是存储每个所有输入将代替 1 行现在有 n 行,其中 n 是链接的描述数 到当前的 description_list。用户可自由选择金额 的列,但是查询和维护并不容易。

我现在的表是这样的:

CREATE TABLE `user_input` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`description_list_id` int(11) NOT NULL,
`description1` int(11) NOT NULL,
`description2` int(11) NOT NULL,
`description3` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

还有其他解决办法吗?

最佳答案

绝对是选项#2。在这种情况下,规范化始终是最佳选择。确实需要更多工作,但当您需要超过 15 个描述时,您正在克服不可避免的问题。

关于mysql - 数据库设计,列数可变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19500771/

相关文章:

mysql - mysql node js模块不关闭mysql连接会不会有什么问题

php - 将值计算从 SQL 移到 PHP 层是否更好?

php - 用户在排行榜上的排名

php - 如何获取具有计数的 SQL 查询显示具有相同值的两条记录,其中存在 INNER JOIN

php - 需要使用 foreach 循环中的变量执行 SQL 查询

mysql - 哪种 MySQL 数据类型用于调度?

java - 在服务器中部署后出现错误的 SQL 语法异常

sql - Entity Framework 通过字符串sql过滤数据

database - 我如何定义这个约束?

sql - 如何实现一个 "Is Current"需求的一对多关系