SQL - нормализация таблицы, содержащей несколько вариантов - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь создать базу данных, которая включает таблицу, в которой будут ответы на вопросы с несколькими вариантами ответов. Моя проблема в том, нормально ли создавать столбец для каждого вопроса?

Я имею в видунапример, если у меня есть 100 вопросов, могу ли я создать столбец для каждого из них?

Каков наилучший подход для этого?

Спасибо

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Это нормально (как в обычном смысле, так и в смысле нормализации базы данных), чтобы создать строку для каждого вопроса.А в другой таблице создайте строку для каждого ответа.

Прочтите о нормализации базы данных.

Ваша таблица 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
0 голосов
/ 07 февраля 2019

Вы можете обратиться по этой ссылке Таблица: Пользователь

  • user_id auto integer

  • regtime datetime

  • имя пользователя varchar

  • useremail varchar

  • userpass varchar

Таблица: Вопросы

  • question_id авто целое число

  • вопрос varchar

  • is_active enum (0,1)

Таблица: Выборы вопросов

  • choice_id авто целое число

  • question_id целое число

  • is_correct_choice enum (0,1)

  • choice varchar

Таблица: User_question_answer

  • user_idцелое число

  • вопрос_ид целое число

  • выбор_ид целое число

  • is_correct enum (0,1)

  • answer_time datetime

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

...