Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在线测验的数据库设计_Sql_Database Design_Relational Database - Fatal编程技术网

Sql 在线测验的数据库设计

Sql 在线测验的数据库设计,sql,database-design,relational-database,Sql,Database Design,Relational Database,我正在为一个大学项目设计一个在线数学测验,在设计数据库时遇到了一些问题。 该网站的基本理念如下: 教师注册后可以登录并向其帐户添加问题。他们可以在问题的多项选择或对或错之间做出选择。他们也可以在公开或私下提问之间做出选择。(如果他们选择公开问题,其他教师可以查看问题。) 教师可随时使用私人银行的问题和/或公共银行的问题为学生创建测验。每个问题可以在多个测验中使用。 这样做的目的是让学生稍后登录并进行测验;他们的答案被存储起来,教师可以生成报告并检查学生的个人表现/得分最高和最低的问题等 我在决定

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

我在决定如何储存测验和问题时遇到了一些困难,我希望有人能帮助我。 到目前为止,我有以下几点:

具有以下属性的“问题”表:问题ID、主题区域、概念、问题文本、教师ID、问题类型、发布者

具有以下属性的“MCQuestions”表:QuestionID、AnsA、AnsB、AnsC、AnsD、AnsE、CorrectAns

具有以下属性的“TorFQuestions”表:问题ID,更正

具有以下属性的“测验”表:QuizID、CreationDate、TeacherID

我想我需要另一张表,如下所示: “QuizQuestions”和唯一的属性将是QuizID和QuestionID,它们一起构成一个串联主键

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

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

我想我对这个开放式问题的唯一看法是:

将MCQ问题和TorF问题结合起来,形成不同的格式。答案表有4列。QID,回答,回答,正确是/否

然后一个正确或错误的问题有两行-例如,QID=888,AID=1,Ans=true,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值填充一组单选按钮。然后在代码中匹配整数,而不是需要传递以进行匹配的长文本字符串。如果答案中有特殊字符或其他什么,并且你将测验结果与一个唯一的键匹配,可能会更容易一些

除了那个小小的改变,在不知道任何其他约束的情况下,很难提供帮助。。。
尼克

一个简单而灵活的设计应该是这样的:

  • 问题表格(id、文本、正确答案id、所有其他问题相关数据)
  • 答案表格(id、问题id文本、所有其他答案相关数据)
  • 测验表格(id、文本、所有其他测验相关数据)
  • 测验问题表格(也可以添加测验id、问题id、问题显示顺序、其他相关数据,如问题权重)
  • 测验结果表格(测验id、问题id、答案id、用户id、所有其他相关数据,如回答日期等)