Базовый онлайн-магазин: сущности и запись покупок

Помимо пользователя и товара нужна запись покупки, связывающая их и фиксирующая количество, цену на момент покупки и время.

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

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

Помимо пользователя и товара нужна запись покупки, связывающая их и фиксирующая количество, цену на момент покупки и время.

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

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

Условие

Создать фундаментальную структуру для онлайн-магазина. Определить две сущности:

  • Пользователь
  • Товар Реализовать механизм сохранения информации о совершенных покупках пользователями.

Ответ

Помимо пользователя и товара нужна запись покупки, связывающая их и фиксирующая количество, цену на момент покупки и время.

Минимальная модель для покупки одного товара:

  • User(id, name, ...).
  • Product(id, name, current_price, ...).
  • Purchase(id, user_id, product_id, quantity, unit_price, created_at).

Внешние ключи связывают покупку с пользователем и товаром. unit_price — снимок, а не ссылка на текущую цену: изменение каталога не должно менять историю. Количество положительное, суммы хранятся в целых минимальных единицах либо точном decimal.

Для корзины с несколькими товарами разделите Order и OrderItem. Создание заказа, позиции и изменение остатков согласуйте транзакцией. Повторная доставка запроса должна защищаться ключом идемпотентности.

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

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

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

Подробнее