【问题标题】:MySql database design for a quiz program用于测验程序的 MySql 数据库设计
【发布时间】:2012-08-19 15:49:05
【问题描述】:

我目前正在从事一个项目,我实际上是在创建一个测验应用程序。它将能够进行具有多项选择或简答题的测验,题目介于 10 到 20 个之间。它需要有能力将用户的答案与正确答案进行对比,然后对用户的答案进行评分。

稍后,我可能会实现一个后端功能来在线创建测验,但现在我将把它留给直接使用数据库。

现在我的问题.. 我很迷茫如何设计我的数据库和表以允许所有功能。这是我目前的设置方式:

测验表

  • 名称行
  • id 行

问题表

  • id 行
  • 对应的测验 id 行
  • 实际问题文本行

答案表

  • 对应的测验 id 行
  • 对应的问题 ID 行
  • 实际答案文本行
  • if_correct_answer 行

所以每个测验都有自己的 id,然后每个问题都有自己的 id 以及它的父测验 id,然后答案将有一个父测验 id 和一个父问题 id。

截至目前,我的“正确答案”问题以这种方式运行:如果他们选择正确答案,if_correct_answer 行的值将大于 0,那么最后他们所有答案的值将是加起来就是他们做对了多少。

这是设计我的数据库的好方法吗?我在这里的另一篇文章中看到了基本思想,但我不确定我是否完全理解或正确使用它。我基本上只是对如何协调所有不同的 id 感到困惑。 (我是 mySQL 和 PHP 的初学者,这可能没有帮助)

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    您的表格结构对我来说看起来不错。您还需要另一个表来存储用户的答案。

    用户答案表 - 粗略结构

    • 身份证
    • user_id
    • quiz_id
    • question_id
    • answer_id
    • 已回答日期

    您还需要另一个表来存储用户的基本信息,例如姓名、用户 ID、电话等。

    【讨论】:

      【解决方案2】:

      只是一个想法,您可以制作一个问题与测验的链接表,然后您可以建立一个问题集合,用于构建新的测验。粗略的轮廓:

      测验表

      • 名称行
      • id 行

      问答题

      • 测验编号
      • 问题编号

      问题表

      • id 行
      • 实际问题文本行

      答案表

      • id 行
      • 对应的问题 ID 行
      • 实际答案文本行

      用户答案表 - 粗略结构

      • 身份证
      • user_id
      • quiz_id
      • question_id
      • answer_id
      • 已回答日期
      • if_correct_answer 行

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-28
        • 2012-12-09
        • 1970-01-01
        • 2011-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多