Сервис опросов: столицы государств

Разделите сущности на Survey, Question, Option, Submission и Answer. Ответ связывает одно прохождение опроса с вопросом и выбранным вариантом; признак правильности по условию не нужен.

Короткий ответ

Что ответить на собеседовании

Разделите сущности на Survey, Question, Option, Submission и Answer. Ответ связывает одно прохождение опроса с вопросом и выбранным вариантом; признак правильности по условию не нужен.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо разработать сервис для проведения опросов. По предоставленной ссылке пользователь видит название опроса, его описание и перечень вопросов с вариантами ответов. На каждый вопрос требуется выбрать один вариант; правильный ответ не учитывается. Требуется спроектировать структуру моделей для хранения данных в базе.

Пример вопросов и вариантов ответов:

Столица Германии? Берлин * Гамбург Мюнхен Кёльн

Столица Таиланда? Нонтхабури Пакрет Бангкок Чиангмай

Ответ

Разделите сущности на Survey, Question, Option, Submission и Answer. Ответ связывает одно прохождение опроса с вопросом и выбранным вариантом; признак правильности по условию не нужен.

Survey хранит название, описание и публичный slug/token; Question — survey_id, текст и порядок; Option — question_id, текст и порядок. Submission обозначает одну отправку формы, при необходимости связана с пользователем. Answer содержит submission_id, question_id и option_id.

Ограничение UNIQUE(submission_id, question_id) запрещает два ответа на один вопрос в рамках прохождения. Проверяйте, что вариант принадлежит этому вопросу, а вопрос — опросу submission. Полноту заполнения всех вопросов валидируйте перед финальной отправкой в транзакции. Нужна ли одна попытка на пользователя, из условия не следует.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее