我正在制作一个问答游戏,我想对已经回答错误的问题进行统计。
我有一个包含3个表的数据库:问题(所有问题),答案(每个问题的替代方案),游戏(统计信息)关于每场比赛)。
现在我正在考虑两种替代方法来解决这个问题。
哪些选项是解决我问题的最佳方法?如果我是正确的,当我要查询数据库以显示已经回答错误的问题时,最后一个会更容易。任何意见或建议将不胜感激!
答案 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