Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:只存储1个正确答案(索引)_Mysql_Sql_Indexing - Fatal编程技术网

MySQL:只存储1个正确答案(索引)

MySQL:只存储1个正确答案(索引),mysql,sql,indexing,Mysql,Sql,Indexing,我有两个表格:问题和答案,每个问题有4个选项,只有1个选项是正确的 有没有办法强迫答案表格对每个问题只接受一个正确的备选答案(类似于唯一索引) 答案表格设计示例: id question_id is_correct text 0 1 true blue1 1 1 false blue2 2 1 false blue3 3

我有两个表格:
问题
答案
,每个问题有4个选项,只有1个选项是正确的

有没有办法强迫
答案
表格对每个问题只接受一个正确的备选答案(类似于唯一索引)

答案
表格设计示例:

id    question_id    is_correct    text
0         1            true        blue1
1         1            false       blue2
2         1            false       blue3
3         1            false       blue4
4         2            true        blue5
5         2            false       blue6
6         2            false       blue7
7         2            false       blue8
8         3            true        blue9
9         3            false       blue10
有没有办法告诉DB只存储问题1的正确答案。。。等等


谢谢,

无需触发器即可完成此操作的一种方法是将信息存储在
问题
表中,而不是
答案
表中


您可以只包含一个列
CorrectAnswerId
,该列与
Answers
表具有外键关系。

由于您只允许一个正确答案,因此可以将设计更改为此方向

您可以从“答案”表中删除“是否正确”列,并将“正确答案id”列添加到“问题”表中。 因此,根据定义,每个问题只有一个正确答案

这种设计具有明显的优点,可以轻松实施请求的限制,因为它不能支持多个正确答案。

2表:

  • 两列和
    主键(问题id、正确答案id)
    。PK将阻止获得两个正确答案

  • 您当前的表,但没有
    是正确的


如果您需要“正确答案”的
文本,您可以
连接这两个表。

在MySQL中,没有触发器很难做到这一点。在触发器之前验证是否已经存在正确答案?(对于问题)使用null代替false,并且是唯一的(问题id,是正确的)。我认为
null
不会帮助我存储3个错误的备选方案。当然,它不会帮助您存储3个错误的备选方案,您仍然需要自己完成这项工作。。。但它会确保你最多为每个问题存储一个正确答案。