Структура базы данных с вопросами и ответами - PullRequest
1 голос
/ 16 января 2011

Я разрабатываю базу данных, которая содержит вопросы, ответы и категории.

Один вопрос может принадлежать многим категориям, а одна категория может иметь много вопросов.Таким образом, это отношение многие ко многим.

Одна таблица вопросов
Одна таблица категорий
Одна таблица, содержащая первичные ключи двух таблиц выше

Так что теперь мой вопросНужно или «лучше» хранить ответы (a, b, c, d, e) в собственной таблице с именами ответов?Тогда таблица ответов имеет внешний ключ к первичному ключу в таблице вопросов.

Или я должен просто иметь 5 столбцов в таблице вопросов, содержащих также ответы с правильным ответом?

После того, что я прочитал, ненормально иметь отношения один к одному.

Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 16 января 2011

Составьте отдельную таблицу answers. Есть два преимущества:

  1. Это соответствует реляционной парадигме - один вопрос связан со многими ответами.
  2. У вас будет гибкость, если варианты ответов превысят 5.

Таблица ответов должна выглядеть следующим образом:

ANSWERS
  answer_id (PK)
  answer_text
  is_correct
  serial_number
  question_id (FK)

Теперь вы храните один ответ в одной строке ... и для serial_number (a, b, c .. или 1,2,3 .. или i, ii, iii, ... что угодно) вы используете serial_number поле. is_correct указывает на правильный ответ / с.

Вы можете выбрать список ответов по

  select * from `answers` where question_id = 123 order by serial_number asc
1 голос
/ 16 января 2011

Если вы точно знаете, что всегда будут точно давать ответы (ни больше, ни меньше), то целесообразно сделать их столбцами в таблице вопросов.Это упростит процесс поиска и в целом будет более эффективным.Однако, если у вас иногда будет разное количество ответов или, возможно, в будущем, ваши ответы должны иметь свою собственную таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...