1

我有一个 PHP 脚本,您可以(作为管理员)在其中选择问题表单中有多少个输入字段。有些字段是非可选的,但有些是(任意数量)。

MySQL 中用于收集答案的表如下所示:

id | userid | fname | ename | seat | optional

如果管理员希望它是两个可选的输入字段,那么一个填写表格的结果将在表中占用三个拖曳:

| 5 | 3 | Peter | Pan | 4 |            |
|   | 3 |       |     |   | opt.value1 |
|   | 3 |       |     |   | opt.value2 |

这真的是存储它的最佳方式吗?你会怎么解决?

而且,我怎样才能确保用户 ID 对用户来说是唯一的?我不能在 MySQL 中使用自动递增键值的东西,因为相同的值在三行上......

4

2 回答 2

1

最佳做法是将“id”和“可选”值存储在单独的表中。然后为每个“id”从中提取您想要的信息。

于 2013-03-17T10:58:50.297 回答
1

我学到的方式是你必须使用多个表。像这样:

表格1:

id | userid | fname | ename | seat

表2:

userid | optional

Table2.userid 是对 Table1.userid 的引用

然后可以将必须​​归档的字段放入第一个表中,并将所有可选字段放入第二个表中。

如果我按照您的示例进行操作,您的数据库应如下所示:

表格1:

id | userid | fname | ename | seat
 5 |      3 | Peter |   Pan |    4

表2:

userid | optional
     3 | opt.value1
     3 | opt.value2

顺便问一下,为什么Table1中同时有id和userid?

于 2013-03-17T11:05:04.070 回答