Postgresql DB Design для проекта викторины - PullRequest
2 голосов
/ 23 октября 2011

Я думаю о том, как настроить мою базу данных для предстоящего проекта.Проект представляет собой одностраничное приложение для викторины компании.Пользователи отвечают на вопросы, вводят свое имя и адрес электронной почты, и, если они все получают правильно, они участвуют в «лотерее» для получения приза.

Существует 4 набора вопросов, которые выпускаются каждый месяц.Я хочу отслеживать все ответы на все вопросы для всех пользователей, чтобы я мог генерировать эти данные в разделе администратора.Есть 5 вопросов на каждый месяц, и каждый вопрос с несколькими вариантами ответов.

Моей первой мыслью было создать столбец для каждого вопроса и назвать его следующим образом: M1Q1, M1Q2, M1Q2, а затем в течение месяца два M2Q1 и т. Д. Это 20 столбцов для каждого пользователя и кажется ненужным.Должен ли я хранить «массив» ответов для каждого месяца?Или любым другим способом?

Здесь есть похожий вопрос: Дизайн базы данных MySql для теста Но мне не нужно хранить вопросы, мне просто нужно сохранять вопросы каждого пользователя на все месяцы,Я использую рельсы, поэтому у меня есть доступ к доменной логике и т. Д. По сравнению с вышеупомянутым вопросом.

Спасибо.

1 Ответ

1 голос
/ 23 октября 2011

Вы можете использовать две таблицы.Один из них имеет четыре столбца:

userid month question answer
1      1     1        A
1      1     2        C
1      1     3        B
etc...

Первичный ключ - (пользователь, месяц, вопрос).

ИД пользователя - это внешний ключ для пользовательской таблицы, в которой хранится информация о пользователе.

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