SQL - 规范化包含多个选项的表



我试图创建一个包含表格的数据库,该表格将包含多项选择题的答案。我的问题是,为每个问题创建一个列是否正常?

我的意思是,如果我有 100 个问题,我会为每个问题创建一个列吗?

最好的方法是什么?

谢谢

您可以参考此链接表:用户

  • user_id自动整数

  • 摄政时间日期时间

  • 用户名 varchar

  • 用户电子邮件 瓦尔查尔

  • 用户通行证 瓦尔查尔

表:问题

  • question_id自动整数

  • 问题瓦尔查尔

  • is_active枚举(0,1(

表:Question_choices

  • choice_id自动整数

  • question_id整数

  • is_correct_choice枚举(0,1(

  • 选择瓦尔查尔

表: User_question_answer

  • user_id整数

  • question_id整数

  • choice_id整数

  • is_correct枚举(0,1(

  • answer_time日期时间

https://www.quora.com/What-is-a-good-database-schema-using-MySQL-for-storing-multiple-choice-questions

为每个

问题创建一正常的(无论是在普通意义上还是在数据库规范化意义上(。在另一个表中为每个答案创建一

阅读有关数据库规范化的信息。

您的question表中可能包含具有如下值的列

question_id   question_text
          1   What color is the sky?
          2   What number comes after 1?

您的answer表可能包含具有类似值的列

answer_id   question_id  correct  answer_text
        1             1        0  Green
        2             1        1  Blue
        3             1        0  Orange
        4             2        0  -2
        5             2        1  2
        6             2        0  42
        7             2        0  π

通过这样的设计,您可以根据需要添加任意数量的问题和答案,而无需更改表的结构。

例如,您可以检索每个问题的正确答案

   SELECT question_text, answer_text
     FROM question
     JOIN answer ON question.question_id = answer.question_id
    WHERE answer.correct = 1

最新更新