这是问答的好习惯吗?

Posted

技术标签:

【中文标题】这是问答的好习惯吗?【英文标题】:Is this good practices for questions and answers? 【发布时间】:2016-06-27 23:56:36 【问题描述】:

我即将开始一个带有问题和答案的“测验”项目。在我开始之前,我只想和各位专家一起了解一下数据库设计应该是怎样的。

我用谷歌搜索并搜索了这个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 |
+----+------+---------------+---------+

我的问题:

还有其他更高效(甚至更简单)的做事方式吗?

【问题讨论】:

但是嘉士伯不是最好的熊(我相信雪花瓷是按销量计算的),珠穆朗玛峰甚至离世界上最高的山峰都不近……它可能是地面上最高的......我相信莫纳克亚山从基地到山顶都是最高的。幽默>虽然你的方法是直截了当的,但它确实会导致答案可能重复。 不错的设计,虽然 SUGGESTION: 添加另一个 SUBJECTS 表并将 subject_id 添加到 QUESTIONS 表。 (@divix 提到的点不是必需的,但您可以更改数据类型(例如,正确为真/假或 0/1) 【参考方案1】:

这不是最好的解决方案..

我建议从answers 中删除列q_id,并创建一个名为:questions_to_answers 的链接表,并改为使用列:id (int autoincrement), question_id (int), answer_id (int) and correct_answer (tinyint)

这样您就可以重复使用多个问题的答案 (many-to-many relationship),或者只是重复使用同一问题的答案。在我看来,它为您提供了强大而健壮的移动解决方案。

【讨论】:

这就是我要做的。 抱歉,我编辑自己的 cmets 的能力今天真的崩溃了 :-( 感谢您的回答!您能否提供数据库方案和示例?不太清楚链接表是如何工作的

以上是关于这是问答的好习惯吗?的主要内容,如果未能解决你的问题,请参考以下文章

在java中对每个方法使用一个大的try-catch是一种已知的好习惯吗? [关闭]

AAA 是 Coded UI 测试的好习惯吗?

这是在mysql中的同一个表上创建多个视图的好习惯(性能方面)吗

PHP:类型检查返回值是弥补 PHP 缺乏泛型的好习惯吗?

创业成功8大习惯

Python中的好习惯或坏习惯:在文件中间导入[重复]