在线测验的数据库设计

时间:2013-09-27 17:38:50

标签: sql database-design relational-database

我正在设计一个大学项目的在线数学测验,并且在设计我的数据库时遇到一些麻烦。 该网站的基本理念如下: 教师一旦注册,就可以登录并向他们的帐户添加问题。他们可以在选择问题之间做出多项选择,也可以选择是真是假。他们还可以选择公开或私下提问。 (如果他们选择公开提问,其他教师可以查看问题。) 教师可以随时使用私人银行的问题和/或公共银行的问题为学生创建测验。每个问题都可以用于多个测验。 这个想法是学生们稍后会登录并进行测验;他们的答案被存储起来,教师可以生成报告并检查学生如何单独/最高和最低得分问题等。

我在决定如何存储我希望有人可以帮助我的测验和问题时遇到一些麻烦。 到目前为止,我有以下内容:

带有属性的

'问题'表: QuestionID ,SubjectArea,Concept,QuestionText,TeacherID,QuestionType,PublicYorN

带有属性的

'MCQuestions'表: QuestionID ,AnsA,AnsB,AnsC,AnsD,AnsE,CorrectAns

带有属性的'TorFQuestions'表: QuestionID ,CorrectAns

带有属性的

'测验'表: QuizID ,CreationDate,TeacherID

我想我需要另一张表如下: “QuizQuestions”和唯一的属性将是 QuizID,QuestionID ,它们共同构成一个连锁的主键。

我觉得我应该有一个单独的表来存储问题的答案,我不确定我是否需要像上面那样将真假问题和多项选择问题分开。

(显然还有其他表包含用户数据等,但这是我关注的部分。) 非常感谢任何建议/意见!

2 个答案:

答案 0 :(得分:0)

我认为我对这个开放式问题的唯一输入是:

将MCQuestions和TorF问题结合使用以获得不同的格式。答案表有4个cols。 QID,AnswerID,答案,正确的Y / N.

然后一个真假问题有2行 - 例如。 QID = 888,AID = 1,Ans = TRUE,为真。下一行是QID = 888,AID = 2,Ans = FALSE,false。

多项选择有几个 - 所以哪个是明亮的黄色的东西? QID = 889,AID = 3,Ans = Moon,false。 QID = 889,AID = 4,Ans = Sun,为真。 QID = 889,AID = 5,Ans = Mars,false。

然后,您可以获取答案列表,并可以使用QID和AID值填充一组单选按钮。然后,您将在代码中匹配整数,而不是需要传递以进行匹配的长文本字符串。如果答案中的特殊字符或其他任何字符,您可能会更容易一些,并且您将测验结果与唯一键匹配。

除了那些微小的改变之外,在不知道任何其他限制的情况下很难提供帮助...... 尼克

答案 1 :(得分:0)

简单而灵活的设计将是这样的:

  1. 问题表(ID,文字,正确答案ID,所有其他问题相关数据)
  2. 答案表(ID,问题ID文字,所有其他答案相关数据)
  3. 测验表格(ID,文字,所有其他测验相关数据)
  4. 测验问题表格(测验ID,问题ID,问题显示顺序,其他相关数据,例如问题权重)也可能会被添加)
  5. 测验结果表格(测验ID,问题ID,答案ID,用户ID,所有其他相关数据,如答案日期等)。