这是问答的好方法吗?

时间:2016-03-12 19:21:51

标签: mysql

我即将开始一个带有问题和答案的“测验”项目。在开始之前,我只想与专家核实数据库设计应该如何。

我用Google搜索并搜索了SO并找到了这个answer,它应该是两张桌子。一个有问题,一个有答案。

TABLE questions
FIELDS: id, text

TABLE answers
FIELDS: id, question_id, text, correct

我想我会有来自不同主题的大约100个问题。

所以我想添加一个主题行,以便排序,并显示特定主题的问题,如下所示:

enter image description here

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 |
+----+------+---------------+---------+

我的问题:

  • 还有另一种更有效(或更简单)的做事方式吗?

1 个答案:

答案 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)的答案,或者只是对同一个问题有重复的答案。在我看来,它为您提供了强大而强大的解决方案。