Система тестирования. Как правильней спроектировать БД?

Делаю довольно простую систему тестирования: N вопросов с каким-то числом вариантов ответов в каждом вопросе.
Идентификация по логину, далее формируется список вопросов, пользователь отмечает нужные, нажимает кнопочку отправить и данные улетают в БД. После чего они сверяются с ответами в БД и показываются на экран. Всё.
Четыре типа вопросов:
1) Выбирается один вариант
2) Можно выбрать 1 и более вариант ответа
3) Произвольный ответ в текстовое поле
4) Комбинированный (текстовое поле и чекбоксы), но с одним вариантом ответа
Так вот. Если бы тип вопроса был бы только 1ый (где один вариант ответа), то было бы как-то так:
0da9f74115484d5999beba5e755fc541.png
Т.е текст ответа юзера, записанный в БД сравнивался бы с правильным ответом после чего выводилось на экран TRUE/FALSE.
А как сделать с типами вопросов?
  • Вопрос задан
  • 437 просмотров
Пригласить эксперта
Ответы на вопрос 2
сереализовать наверно. (Я такого не делал, так, мысль просто)
Ответ написан
Комментировать
ProKiLL
@ProKiLL
Системный администратор
Четыре типа вопросов:
1) Выбирается один вариант
2) Можно выбрать 1 и более вариант ответа
3) Произвольный ответ в текстовое поле
4) Комбинированный (текстовое поле и чекбоксы), но с одним вариантом ответа

В таблицу UserAnswer добавить поле type_answer:
  • 1 - Один ответ
  • 2 - Два и более ответов
  • 3 - Пользовательский ответ
  • 4 - Комбинированный ответ


Соответственно структура таблицы будет следующая:
  • id - int - номер ответа (Auto Increment)
  • id_user - int - id Пользователя
  • type_answer - int - Тип ответа
  • id_q - int - Вопрос
  • answer - varchar - ответ(многострочный)


Исходя из вышеперечисленного, при проверке проверяешь type_answer и сверяешь его с соответствующим результатом.
Примечание: скорее всего 3 и 4 тип придется проверять в ручную, т.к. люди индивидуальны и свое мнение могут высказать по своему.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы