Сервис опросов: определение столиц стран

Используйте сущности Poll, Question, Option, Submission и Answer. Один ответ связывает прохождение, вопрос и выбранный вариант; правильность хранить не требуется.

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

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

Используйте сущности Poll, Question, Option, Submission и Answer. Один ответ связывает прохождение, вопрос и выбранный вариант; правильность хранить не требуется.

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

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

Условие

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

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

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

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

Ответ

Используйте сущности Poll, Question, Option, Submission и Answer. Один ответ связывает прохождение, вопрос и выбранный вариант; правильность хранить не требуется.

Минимальная схема:

  • Poll(id, slug, title, description) — опрос по уникальной ссылке.
  • Question(id, poll_id, text, position) — упорядоченные вопросы.
  • Option(id, question_id, text, position) — варианты.
  • Submission(id, poll_id, user_id nullable, created_at) — отдельное прохождение.
  • Answer(submission_id, question_id, option_id) — выбор.

Уникальность (submission_id, question_id) запрещает несколько вариантов на один вопрос. Проверяйте, что option относится к question, а question — к опросу прохождения; при необходимости закрепите это составными внешними ключами. Поля is_correct и оценка здесь не нужны. Изменение опубликованного опроса требует версионирования либо запрета правок, чтобы старые ответы не потеряли смысл.

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

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

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

Подробнее