用于测验程序的MySql数据库设计

时间:2012-08-24 04:53:09

标签: php mysql

我目前正在开展一个项目,我实际上是在创建一个测验应用程序。它将能够在10-20个问题之间进行具有多项选择或简答题的测验。它需要能够根据正确的答案检查用户的答案,然后保持用户答案的​​分数。

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

现在我的问题..我很遗憾如何设计我的数据库和表以允许所有功能。以下是我目前如何设置它:

测验表

  • 名称行
  • id row

问题表

  • id row
  • 相应的测验ID行
  • 实际问题文字行

答案表

  • 相应的测验ID行
  • 相应的问题ID行
  • 实际答案文字行
  • if_correct_answer行

因此,每个测验都有自己的ID,然后每个问题都有自己的ID以及其父测验ID,然后答案将包含父测验ID和父问题ID。

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

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

2 个答案:

答案 0 :(得分:2)

你的桌面结构对我来说很好看。您还需要另一个表来存储用户的答案。

用户的答案表 - 粗略结构

  • id
  • USER_ID
  • quiz_id
  • question_id
  • answer_id
  • answered_date

你还需要另一个表来存储用户的基本信息,如name,user_id,phone等。

答案 1 :(得分:0)

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

测验表

  • 名称行
  • id row

问题测验表

  • 测验ID
  • 问题ID

问题表

  • id row
  • 实际问题文字行

答案表

  • id row
  • 相应的问题ID行
  • 实际答案文字行

用户的答案表 - 粗略结构

  • ID
  • USER_ID
  • quiz_id
  • question_id
  • answer_id
  • answers_date
  • if_correct_answer行