我正在使用php和mysql进行在线测验,需要一些帮助来决定如何设计数据库以优化插入问题/答案并为测验选择问题.该表将分别包含80个问题,包括4个可能的选项和正确的答案.
从数据库中检索问题和选项时,我将随机选择25个问题及其选项.
为所有问题,选项和正确答案制作一个专栏是否更好?例如:
ID | Q | OPT1 | OPT2 | OPT3 | OPT4 | ANS
Run Code Online (Sandbox Code Playgroud)
或者为每个问题,选项和正确的答案制作专栏会更好吗?例如:
Q1 | Q1_OPT1 | Q1_OPT2 | Q1_OPT3 | Q1_OPT5 | Q1_ANS | Q2 | Q2_OPT1 | Q2_OPT2...
Run Code Online (Sandbox Code Playgroud)
Ree*_*e45 11
最好将可能的答案存储在一个单独的表中.这使您可以在每个问题中获得任意数量的答案,而不仅仅是4.它还允许问题具有不同数量的答案.如果您有多个测验,您可能还需要一个Quizes表.
Quizes:
id
name
Questions:
id
quiz
prompt
Answers:
id
question
prompt
QuizResult (someone taking a quiz)
id
quiz
// other information about the quiz taker, possibly including the time
Run Code Online (Sandbox Code Playgroud)
现在正确答案的事情变得更加棘手.我更喜欢这里更高的实现:
每个问题都有一个值,每个答案都有价值
我最近与您合作的系统可以为每个问题和每个答案分配一个分值.不正确的答案通常得到0,正确的答案得到了全额.您也可以使用此方法获得部分正确的答案.这是我要采用的方法.
您可以去说每个问题值10分,或者您可以为不同的问题分配不同的权重:
Questions:
id
quiz
prompt
value (you can make this question worth more or less)
Answers:
question
prompt
value (you can make this answer worth more or less)
Run Code Online (Sandbox Code Playgroud)
将正确答案存储在答案表中
一个更简单(但不太健壮)的解决方案是简单地说出Answers表中哪个答案是正确的.
Answers:
question
prompt
is_correct
Run Code Online (Sandbox Code Playgroud)
将正确答案存储在问题表中
我不推荐它.创建问题时,在插入问题之前,它将没有正确的答案.这意味着至少有3个查询才能正确提出问题.如果您使用外键依赖项,这将很快变得烦人.
| 归档时间: |
|
| 查看次数: |
6743 次 |
| 最近记录: |