2015-04-28 4 views
0

Я разрабатываю базу данных для проекта, над которым я работаю. У меня есть 3 задачи (которые пользователь может выбрать из)Разработка эффективной базы данных для регистрации данных

  • Первая задача дает 10 вопросов
  • Вторая задача дает 20 вопросов
  • Третья задача дает 30 вопросов

нотабене точность результата теста будет возрастать по мере увеличения количества вопросов.

Для каждого вопроса будут два ответа. Answer 1 и Answer 2. Поэтому, если есть 10 вопросов, в общей сложности будет записано 20 ответов.

То, что я разработал до сих пор, представляет собой таблицу user и таблицу test_result. Стол test_result - это часть, с которой мне сложно конструировать.

Таблица user имеет следующие атрибуты

  • идентификатор пользователя
  • имя
  • Дата регистрации

test_result таблица имеет следующие атрибуты

  • тест ID
  • идентификатор пользователя (ссылки идентификатор пользователя в системе)
  • тест взят раз

Моя проблема, я не знаю, как я собираюсь эффективно войти 10 ~ 30 вопрос ответы.

Я рассматриваю, используя test_result таблицу

В таблице test_result будет иметь следующие атрибуты

  • тест ID
  • идентификатор пользователя
  • тест взят время
  • ответ 1a
  • ответ 1b
  • ответ 2а
  • ответ 2b
  • ...
  • ответ 60а
  • ответ 60b **

, но я думаю, что должно быть более эффективным способом.

EDIT:

Для уточнения ...

Каждый вопрос будет записывать 2 разные ответы.

  • Вопрос 1 будет иметь Ans1 Ans2.
  • Вопрос 2 будет иметь Ans1 Ans2.
  • и т.д ..

вплоть до 10 ~ 30 вопросов (количество вопросов меняется в зависимости от задачи, которую вы выбрали)

---- :: EDIT 2 ::

ОК ... Так что я придумал улучшенный дизайн, но я все еще борется.

Это выглядит следующим образом:

User (user_id, имя, reg_date)

Test (test_id типа [либо 1,2,3], категория [есть 5 различных категорий])

Response (RESPONSE_ID, user_id, test_id, response_date, response_1a, response_1b, response_2a, response_2b, ..., response_30a, response_30b)

Но опять же, я бегу к проблеме наличия +1 20 колонок для таблицы Response. Каждый ответ будет иметь числовые значения от 0 до 1.0.

Обратите внимание, что если test_id является 1, было бы только 10 вопросов, так что столбцы в таблице Response от response_11a к response_30b будет null.

Пример записи будет:

Response (1, 1, 1, 2015/04/30, 0,5, 0,5, 0,7, 0,7, 0,8, 0,8, ... (много записей). .., 1.0, 0.3, null, null, null, (все нули, потому что есть только 10 вопросов для test_id 1.))

Я не могу придумать другой способ сделать это. :/

Является ли это хорошим способом проектирования базы данных?

ответ

0

Кажется хороший старт дается всегда есть & A B

TestAnswers(ID, TestID, AnswerA, AnswerB) 

Это говорит, что далеко не ясно, какой ответ соответствует какому вопросу ...

+0

Таким образом, каждый вопрос будет записывать 2 разных ответов. – Blee

+0

Ну, это было то, что вы сказали, что хотите, если бы я почесал голову, по общему признанию ... –

1

Требование короче есть

A пользователь может заполнить тесты.Каждый тест может состоять из 10, 20 или 30вопросы. Каждый вопрос имеет ровно два. Вопросы: ответил:: пользователей:.

Таким образом, вы получите

  • user (id, name, reg_date)
  • test (id, name)
  • question (id, test_id, text, choice1, choice2)
  • answer (id, question_id, user_id, choice, answer_date)

Или вы могли бы сделать

  • user (id, name, reg_date)
  • test (id, name)
  • question (id, test_id, text)
  • choice (id, question_id, value, label)
  • answer (id, question_id, user_id, choice_id, answer_date)
+0

Хорошо, это имеет смысл, но для моей цели стол вопросов и ответов не будет работать. В таблице вопросов предполагается, что каждый вопрос имеет 2 выбора SET, но это не так. – Blee

+0

Same Вопрос предоставляется человеку 10 ~ 30 раз (но вопрос меняется каждый раз), и в зависимости от ответа пользователя ответ будет меняться. – Blee

+0

Ответ, а не A или B, это число от 0 до 1.0. – Blee

Смежные вопросы