2

在我提出问题之前,我只想感谢昨天回答我问题的所有人 ->使用 javascript 倒计时

主意:

我使用 php 创建了一个测验,但我想创建一个 MySQL 数据库并有一个表,其中存储了所有问题、答案和多项选择。

问题:

由于测验是多项选择,我不知道如何将多项选择存储在表格中。我可以存储选项并让每个答案用特殊字符分隔,然后让 php 获取字符串并分隔选项吗?

例如:问题:你最喜欢的颜色是什么?选项:蓝色=红色=紫色=黄色。(数据库视图)

你们认为这种情况的最佳做法是什么?

4

6 回答 6

2

我认为最好的做法是使用多个表。一个用于问题,一个用于答案。该answer表将包含question_id一个标志,它是否是正确的答案

它可能看起来像这样

TABLE questions
FIELDS: id, text

TABLE answers
FIELDS: id, question_id, text, correct

将一个字段用于所有答案的问题在于,您可能会不小心使用用于拆分答案文本的字符

于 2013-03-28T12:12:52.773 回答
2

简单地说,创建两个表:

  • 问题

    question_id,问题

  • 答案

    answer_id, question_id, 答案

现在,您可以使用question_id链接这两个表

于 2013-03-28T12:13:39.687 回答
2

表:

测验

quiz id (pk)
quiz info (other columns)

问题

question id(pk)
quiz id
question text

答案

answer id(pk)
question id
answer text

要显示给定的问题,请加入测验、问题和答案。

编辑:您可以为“正确/错误答案(0/1)”添加一列,也可以有另一个表:

解决方案

解决方案 id(pk)
问题 id
答案 id

我没有将“正确答案”放在answers表中,因为这不是很好的标准化。

于 2013-03-28T12:13:43.037 回答
2

有几种方法可以解决这个问题:

  • “正确”的方法是创建另一个表(这样您就有一个名为“questions”的表,每个表都有一个唯一的 id,另一个称为“answers”,每个表都有问题 id)
  • “简单”的方式,即使用 JSON(参见json_encodejson_decode),它负责在字段中使用特殊字符等
于 2013-03-28T12:13:57.547 回答
2

可能有很多可能的架构设计,但我的建议是这样的:

永远不要在表格上存储用逗号分隔的值。

这张桌子有测验。

测验表

  • 测验ID(PK)
  • 其他栏目..

这包含每个测验的问题。

问题表

  • 问题 ID (PK)
  • 问题详情
  • 测验ID (FK)
  • 其他栏目...

这包含了答案。

答案表

  • 答案ID (PK)
  • 答案详情

这包含每个测验中每个问题的正确答案,或者换句话说,这是答案的关键。

Question_Answer_Correct Table

  • QuestionID (FK) -- 也是带有 AnswerID 的复合主键
  • 答案 ID (FK)

这包含用户列表。

用户表

  • 用户 ID (PK)
  • 用户名
  • 其他栏目...

这包含用户对指定问题的回答。这里没有QuizID,因为问题已经连接到测验表上。

User_Answers 表

  • 用户 ID (FK)
  • 问题 ID (FK)
  • 答案 ID (FK)
于 2013-03-28T12:14:12.557 回答
2

你会有一张questions桌子,像这样:

id  |            question
0             Do you even lift?

id会 会INT(11) PRIMARY_KEY AUTO_INCREMENTquestion会 只是TEXT。然后,您将有一张answers桌子:

id  | question_id | answer
0          0         Yes
1          0         No
2          0         Maybe

这里,question_id指的是questions表中问题的ID。这些答案都属于一个问题。这被称为Has many关系,因为一个问题有很多答案。

这就是它通常的做法。实现它并不难,即使您没有使用框架(其中大多数为您完成工作)。

希望这可以帮助

于 2013-03-28T12:15:49.110 回答