Задать вопрос
@BarneyGumble

Как корректней разработать архитектуру БД MySQL для системы тестирования на PHP?

Задача простая - мне необходимо разработать систему тестирования сотрудников с последующей оценкой их результатов.

Всего 20 вопросов.

Типов ответа - 3:
1. Один вариант (radio button)
2. Несколько вариантов (checkbox)
3. Свободная форма (textarea)

Все данные о тестируемом и его результатах должны сохраняться в базу данных.

Я столкнулся со сложностью разработки архитектуры БД для данной задачи, и хотел бы услышать Ваши советы, как сделали бы ВЫ в данной ситуации.

Я пока пришёл к следующей схеме - efcce391f5124729ae7140ab955bd543.jpg

Вся эта история осложняется вопросами со свободными ответами, ибо для таких вопросов нельзя создать таблицу с правильными, заранее известными вариантами ответа, чтобы скрипт пробежался по двум таблицам (ответы юзера и правильные ответы), и сравнив их, выдал бы результат.

Оценивать ручные свободные ответы будет директор. Только он может оценить написанное и пометить вариант либо правильным, либо нет. Т.е. ему желательно видеть в браузере страничку с ручными ответами каждого тестируемого, чтобы возле верного из них проставить свою галочку, отправив эти данные в отдельную таблицу БД.

Затем, имея таблицы с результатами ответов, мы можем написать скрипт, который всё сравнит и выдаст результат.

Как бы вы решили ту же задачу?
  • Вопрос задан
  • 199 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Как я понимаю - это аналогия централизованного тестирования....

Первая таблица - таблица вопросов с ответами, как правильными так и неправильными и ключом с правильными ответами... в скрипте при ответе на вопрос сверяется ответ с ключом и при верном - true (оценка).... По всем ответам суммируется балл и вносится во вторую таблицу вместе с письменными ответами и количеством вопросов теста для вычисления среднего бала.

что касается логирования ответов юзера - это вторая таблица. В ней необходимые данные юзера и его ответы с оценкой.

Варианты ответов можно вносить в одно поле скажем через запятую или новый ответ с новой строки. Не имеет смысла на каждый ответ отдельное поле иметь.

Оценку на письменные вопросы также скриптом прибавлять к сумме баллов.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
users: id, user
answersTypes: id, type
questions: id, question, answersTypeID
answers: id, answer, questionID, sortPos
answersUsers: id, answerID, userID, questionID
---
поле answer - может содержать id или строку (это поле произвольных данных)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы