0

我正在做一个测验。每个问题由一个问题、三个备选方案组成,其中一个是正确的。服务器应该输出 HTML(不是 JS 将要解析的 JSON),并且用户选择一个答案。

我怀疑的原因是进行测验的人正在通过 JSON 发送替代方案。如果您想稍后编辑任何替代方案,您只需解析 JSON,进行更改并将其发送到服务器。然后服务器将只更新替代“单元格”。

但是,当用户进行测验时,服务器必须遍历数组才能找到正确的答案。如果答案存储在它们自己的单独行中(多对多),则服务器可以只查询正确答案。

除此之外,如果使用多对多关系,与许多小型 VARCHARS 相比,JSON 会导致将替代项保存在 TEXT 列中。

最有效的方法是什么?(速度)什么是最方便的方式,也是最被接受的方式呢?

4

1 回答 1

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 方法。

于 2012-10-19T15:27:20.780 回答