11

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

目前用户可以将值传递给 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;

还有其他解决方案吗?

4

2 回答 2

14

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

于 2013-10-21T17:23:36.247 回答
4

就灵活性而言,第二种解决方案是优选的。如果明天您需要在第一个解决方案中添加更多描述字段,您将需要修改表和代码来管理它。

第二种解决方案现在可能需要更多的工作,但随后它将处理 2 个类似 200 个描述。

第一种方法是一个小问题的快速而肮脏的解决方案,如果你有时间尝试新事物,第二种方法也是一个很好的练习。

于 2013-10-21T17:34:45.007 回答