Помимо пользователя и товара нужна запись покупки, связывающая их и фиксирующая количество, цену на момент покупки и время.
Базовый онлайн-магазин: сущности и запись покупок
Помимо пользователя и товара нужна запись покупки, связывающая их и фиксирующая количество, цену на момент покупки и время.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Создать фундаментальную структуру для онлайн-магазина. Определить две сущности:
- Пользователь
- Товар Реализовать механизм сохранения информации о совершенных покупках пользователями.
Ответ
Помимо пользователя и товара нужна запись покупки, связывающая их и фиксирующая количество, цену на момент покупки и время.
Минимальная модель для покупки одного товара:
User(id, name, ...).Product(id, name, current_price, ...).Purchase(id, user_id, product_id, quantity, unit_price, created_at).
Внешние ключи связывают покупку с пользователем и товаром. unit_price — снимок, а не ссылка на текущую цену: изменение каталога не должно менять историю. Количество положительное, суммы хранятся в целых минимальных единицах либо точном decimal.
Для корзины с несколькими товарами разделите Order и OrderItem. Создание заказа, позиции и изменение остатков согласуйте транзакцией. Повторная доставка запроса должна защищаться ключом идемпотентности.