我正在做一个测验。每个问题都包含一个问题,三个备选方案,其中一个是正确的。服务器应该输出HTML(而不是JS要解析的JSON),并且用户选择答案。
我怀疑的原因是进行测验的人是通过JSON发送替代品。如果您想稍后编辑任何替代方案,只需解析JSON,进行更改并将其发送到服务器。然后服务器将只更新备选方案“cell”。
但是,当用户参加测验时,服务器必须运行数组才能找到正确的答案。如果答案存储在他们自己的分隔行(多对多)中,则服务器可以只查询正确的答案。
除此之外,如果使用多对多关系,JSON将导致在TEXT列中保存备选项与许多小型VARCHARS相比。
最有效的方法是什么? (速度) 什么是最方便的方式,也是最常用的方式?
答案 0 :(得分:1)
好吧,我会说你的桌子应该是这样的:
+------+------------+--------+--------+--------+--------------+
| ID | Question | Ans1 | Ans2 | Ans3 | CorrectAns |
+------+------------+--------+--------+--------+--------------+
| PKey | text | text | text | text | text |
+------+------------+--------+--------+--------+--------------+
| 1 | π = ? | 3.1415 | 2.2465 | 5.6598 | 3.1415 |
+------+------------+--------+--------+--------+--------------+
您的查询将是:
SELECT (CorrectAns = %enteredanswer%) FROM QuizTable WHERE ID=%questionid%
很容易将json转换为此表,反之亦然。
编辑:对于未定义数量的替代方案:
您可以拥有Question
表和Options
表,如下所示:
Question:
+-------+------------+---------------+
| QID | Question | CorrectAnsID |
+-------+------------+---------------+
| PKey | text | FKey,integer |
+-------+------------+---------------+
| 1 | π = ? | 2 |
+-------+------------+---------------+
Options:
+-------+--------------+--------------+
| OID | OptionText | QuestionID |
+-------+--------------+--------------+
| PKey | text | FKey,Integer |
+-------+--------------+--------------+
| 1 | 3.5600 | 1 |
+-------+--------------+--------------+
| 2 | 3.1415 | 1 |
+-------+--------------+--------------+
| 3 | 3.4567 | 1 |
+-------+--------------+--------------+
| 4 | 3.7894 | 1 |
+-------+--------------+--------------+
| 5 | 3.9874 | 1 |
+-------+--------------+--------------+
这可能比json方法更快,但实现起来更困难(连接和写东西),所以如果它是一个快速,小规模的项目,我会选择json方法。