Denormalization
@Denormalization

Ценообразование для заказа, хранение и обновление — как?

Для проекта необходимо хранить все данные о цене заказа.

Данные могут включать в себя:
  • Базовая цена товара - "Чистая" цена, без учета модификаторов/скидок
  • Скидки клиента - Все скидки клиента действующие на момент создания заказа. Необходимо чтобы скидки "запоминилась" и не изменялись при обновлении скидок у клиента. (Т.е обновление скидок у клиента, не влияло на цену старых заказов, созданых до обновления)
  • Доп. модфикиаторы цены - Тут может быть несколько дополнительных модификаторов, которые могут добаляться/убираться при необходимости


Не могу придумать ничего лучше, чем БД с 2 полями:
  • base_price (decimal) - Базовая цена
  • modifiers (text) - Сериализованный массив со всеми модификаторами


Очевидно что данная стуктура будет иметь кучу недостатков и создаст дополнительные проблемы в будующем.

Может кто-то создавал подобные таблицы, и может подсказать КАК хранить такой набор данных для каждого заказа, чтобы это не вызвало проблем при смене логики формировании цены?
  • Вопрос задан
  • 2503 просмотра
Решения вопроса 1
@CAMOKPYT
EAV - товар|пользователь|скидка
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sabramovskikh
@sabramovskikh
Завести несколько таблиц, привести к некой нормальной форме.
Например в одной информация о заказе (ид, сумма, адрес доставка), в другой таблица с товарами заказа (ид товара в базе, цена, цена дисконта, кол-во и прочее).
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы