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个错误的备选方案,您仍然需要自己完成这项工作。。。但它会确保你最多为每个问题存储一个正确答案。