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

Делаю довольно простую систему тестирования: 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 тип придется проверять в ручную, т.к. люди индивидуальны и свое мнение могут высказать по своему.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽