将错误问题的统计数据保存到数据库中

时间:2017-04-06 08:03:39

标签: php mysql

我正在制作一个问答游戏,我想对已经回答错误的问题进行统计。

我有一个包含3个表的数据库:问题(所有问题),答案(每个问题的替代方案),游戏(统计信息)关于每场比赛)。

现在我正在考虑两种替代方法来解决这个问题。

  1. 将每个问题ID保存到数组中,然后保存数组 在比赛结束时进入MySQL的一条记录。
  2. 在表格中为每个错误插入带有问题ID的新记录 答案。
  3. 哪些选项是解决我问题的最佳方法?如果我是正确的,当我要查询数据库以显示已经回答错误的问题时,最后一个会更容易。任何意见或建议将不胜感激!

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的问题。如果您需要每个问题/答案的详细信息,以下是答案表统计信息的可能解决方案:

CREATE TABLE GAME_STATS (ID INT NOT NULL, ID_QUEST INT, ID_ANSWER INT, NUM INT);

ID是一个序列(你可以省略它并制作PK ID_QUEST,ID_ANSWER) ID_QUEST是指表格问题的ID ID_ANSWER是指表Answers的ID。 NUM是选择答案的次数。

您可以考虑为表格预填充所有可能的问题/答案(NUM = 0)。 在每个答案结束时,您应该更新ID_QUEST,ID_ANSWERS的NUM(+1)。

如果要为每个会话/用户注册统计信息,则应添加适当的列(例如id_session和/或user_id)。 在这种情况下,您无法预填充表格。而且你只能注册错误的答案。

答案 1 :(得分:0)

我的建议是将每个答案保存到一个单独的行中,完全是出于您所说的原因。查询这样的结构比将多个答案存储在一行中容易得多。

我会按如下方式构建表格

Question
ID | Text | whatever else you may need

Answer
ID | QuestionID | Text | IsCorrect | whatever else you may need

Game
ID | User | StartTime | EndTime | whatever else you may need

Stats
ID | GameID | QuestionID | AnswerID | AnswerTime | whatever else you may need

这需要根据您计划对其进行的分析进行调整,但您明白了。

计算给出错误答案的次数就像

一样简单
select  t1.ID, count(*)
from    Answer t1
join    Stats t2
on      t1.ID = t2.AnswerID
where   t1.IsCorrect = 'N'
group by t1.ID