mysql true / false / mc问题表

时间:2016-03-28 20:25:41

标签: mysql

我是mysql的新手,但我正在尝试将测验网站作为php中的宠物项目,并在mysql中存储问题和答案。我想现在有多种选择和真假问题。什么是最好的方法来做到这一点。我应该为问题类型创建一个或两个表。关于如何写这个的任何提示?

3 个答案:

答案 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来获取特定测验的问题。