我是mysql的新手,但我正在尝试将测验网站作为php中的宠物项目,并在mysql中存储问题和答案。我想现在有多种选择和真假问题。什么是最好的方法来做到这一点。我应该为问题类型创建一个或两个表。关于如何写这个的任何提示?
答案 0 :(得分:0)
我不认为使用一个表是个好主意。 我会说创建2个表会很好。与您打算构建的内容相比,您的问题很轻松。但如果我猜对了,你会想要在提交后打印结果......然后是答案表。如果你没有使用cookies,那么“参与者”应该有一个表格也是不可取的。 Goodluck对你的项目来说是一个好的开始。
答案 1 :(得分:0)
我想提出3个表格。
1)包含有关问题及其类型的信息的表
2)用于存储TF和问题ID的表
3)用于存储多项选择和问题ID的表
1) challenge_question table:
id
challenge_id
question (text of the question)
required (some questions will be required to be displayed per each challenge)
question_type (here I indicate what type of question: Mult. choice, T/F)
2) challenge_question_mc (multiple choice)
question_id = FK/PK to challenge_question
option = text of the option
is_correct = Boolean to indicate the answer
3) challenge_question_tf (true or false)
question_id = FK/PK to challenge_question
is_correct = Boolean
答案 2 :(得分:0)
如果您想要真/假和多项选择题(并且不希望每种类型的问题都有单独的表),您可以制作以下三个表。
问题:
QuestionId: int unsigned primary key
Text: varchar
答案:
AnswerId: int unsigned primary key
Text: varchar
问题答案:
QuestionId: int unsigned
AnswerId: int unsigned
IsCorrect: boolean
如果您想显示问题的可能答案,可以JOIN
最后两个表:
SELECT Answer.AnswerId, Answer.Text FROM Answer JOIN QuestionAnswer ON
Answer.AnswerId = QuestionAnswer.AnswerId WHERE QuestionId = ?
如果你想检查一个给定的答案是否正确,你可以使用:
SELECT IsCorrect FROM QuestionAnswer WHERE QuestionId = ? AND AnswerId = ?
对于正确答案将返回1,对于错误答案将返回0。
如果您不想创建一组新的行,则可以重复使用“答案”表格中的行每个问题的真/假答案。只需确保将问题与QuestionAnswer表中的可能答案联系起来,并将组合标记为true或false(1 = true,0 = false)。
如果您不关心在不同问题中重复使用可能的答案,我想如果您将Answer和QuestionAnswer合并到一个表格中就可以使用两个表格。
如果您想将问题分开到特定测验,您可能希望稍后会有其他表格。这可以通过使用QuizId和Name:
制作测验表来实现QuizId: int unsigned primary key
Name: varchar
和另一个表格QuizQuestion,你将QuizId和QuestionId结合在一起:
QuizId: int unsigned
QuestionId: int unsigned
然后,您可以在表格上使用JOIN
来获取特定测验的问题。