我即将开始一个带有问题和答案的“测验”项目。在开始之前,我只想与专家核实数据库设计应该如何。
我用Google搜索并搜索了SO并找到了这个answer,它应该是两张桌子。一个有问题,一个有答案。
TABLE questions
FIELDS: id, text
TABLE answers
FIELDS: id, question_id, text, correct
我想我会有来自不同主题的大约100个问题。
所以我想添加一个主题行,以便排序,并显示特定主题的问题,如下所示:
question
表格如下所示:
+----+-----------+---------------------------------------+
| id | subject | text |
+----+-----------+---------------------------------------+
| 0 | beer | what is the best beer in the world? |
| 1 | mountains | what is the world's highest mountain? |
+----+-----------+---------------------------------------+
和answers
表,1是正确的答案:
+----+------+---------------+---------+
| id | q_id | text | correct |
+----+------+---------------+---------+
| 0 | 0 | carlsberg | 1 |
| 1 | 0 | heiniken | 0 |
| 2 | 0 | root beer | 0 |
| 3 | 0 | budweiser | 0 |
| 4 | 1 | k2 | 0 |
| 5 | 1 | Kangchenjunga | 0 |
| 6 | 1 | Mount Everest | 1 |
| 7 | 1 | Makalu | 0 |
+----+------+---------------+---------+
答案 0 :(得分:3)
这不是最好的解决方案..
我建议从q_id
中删除列answers
,然后创建一个名为questions_to_answers
的链接表,其中列为id (int autoincrement), question_id (int), answer_id (int) and correct_answer (tinyint)
。
通过这种方式,您可以重复使用多个问题(many-to-many relationship
)的答案,或者只是对同一个问题有重复的答案。在我看来,它为您提供了强大而强大的解决方案。