我有2个表:questions
和answers
,每个问题都有4个选项,只有1个选项是正确的。
有没有办法强制answers
表只接受每个问题的1个正确的替代方案,(比如唯一索引)?
answers
表设计示例:
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只能为question_id = 1 ...等存储1个正确答案吗?
感谢,
答案 0 :(得分:3)
没有触发器的一种方法是将信息存储在Questions
表而不是Answers
表中。
您可以只包含一个与CorrectAnswerId
表具有外键关系的列Answers
。
答案 1 :(得分:0)
由于您只想允许一个正确的答案,您可以将设计改为这个方向。
您可以删除列" is_correct"来自"答案"表并添加一列" correct_answer_id"问题"问题"表。 因此,根据定义,对于每个问题,您只有一个正确的答案。
这种设计具有明显的优势,可以轻松实施所要求的限制,因为它不能支持多个正确答案。
答案 2 :(得分:0)
2张表:
2列和PRIMARY KEY(question_id, correct_answer_id)
。 PK会阻止两个正确答案。
您当前的表格,但没有is_correct
列。
如果您需要JOIN
作为'正确答案',则text
可以{{1}}。