Как хранить ответы в высокой и узкой таблице MySQL - PullRequest
0 голосов
/ 07 марта 2019

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

тест:

quizID          (int)(primary key) Auto Increment
quizName        (varchar)

вопрос:

questionID      (int)(primary key) Auto Increment
quizID          (Foreign Key)
question        (varchar)
questionType    (enum) textbox, multiple choice, int, date, decimal, email, ...

пользователи:

userID          (int)(primary key) Auto Increment
firstname       (varchar)
surname         (varchar)
...
...

userAnswers:

questionID    (Foreign Key)
userID        (Foreign Key)
answerText
answerDec
answerDate
answerInt

PRIMARY KEY(questionID, userID)

множественный выбор

choiceID      (int)(primary key) Auto Increment
questionID    (Foreign Key)
choiceText    (varchar)

Моя проблема связана с таблицей ответов, некоторые ответы будут в виде текста в свободной форме, некоторые десятичные дроби и некоторые целые числа (внешние ключи)

Как мне подойти к этому?У меня есть 4 столбца, по 1 для каждого типа?Если да, то как мне эффективно выбрать правильный один из 3 при получении ответов, я хотел бы выполнить как можно больше «тяжелой работы» в SQL, не используя PHP для генерации динамических запросов.

1 Ответ

0 голосов
/ 07 марта 2019

Если вам не нужно искать по ответам, я бы порекомендовал хранить их в объекте JSON или аналогичном, а не использовать отдельные таблицы.

quiz | question   | answers     | multipleChoice
---- | ---------- | ----------- | --------------
1    | "Country?" | [           | true
     |            |   "France", |
     |            |   "Germany" |
     |            | ]           |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...