数据库设计,列数可变

neo*_*112 9 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;
Run Code Online (Sandbox Code Playgroud)

还有其他解决方案吗?

Joe*_*Joe 12

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

  • +1当`description3`是唯一填写的那个时,也是不可避免的问题. (3认同)