SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 01.04.2019 00:03:25

FJ
Участник
Зарегистрирован: 31.03.2019
Сообщений: 1

Связь один к одному по множеству полей, правильно ли?

Суть задачи:

Сумма Скидка на Продукт должна определяться динамически и зависеть он набора определенных условий, а именно:

- Скидка зависит от "Способа Оплаты\покупки товара" (Оплата всей суммы сразу\оплата товара частями);
- Скидка зависит от "Остатков товара на складе" (Товара на складе может быть: Мало\Средне\Много);
- Скидка зависит от "Категории товара" (Компьютер\Телевизор\Телефон);
- Скидка зависит от "Производителя" (Apple\SamsumXaomi);
- Скидка зависит от "Пользователя" (Зарегестрированный\Гость)

и тд, таких зависимостей может быть порядка 10.

Если рассматривать самый простой упрощенный вариант, когда Скидка зависит только от, например, Производителя, то это связь 1 к 1:

- в одной таблице DISCOUNT записывам сумму скидки и MANUFACTURER_ID и вторая таблица MANUFACTURER со списком всех производителей
- или даже все делаем в одной таблицес двумя столбцами DISCOUNT_AMOUNT и MANUFACTURER_NAME, где MANUFACTURER_NAME ничто иное как ENUM.

Сложнее становиться когда Сумма Скидки начинает зависеть от группы параметров, рассмотрим вариант, когда Скидка будет зависеть от Производителя и Остатков товара на складе, все так же мы можем обойтись одной таблице но уже с полями:

DISCOUNT (1%, 2%..),
MANUFACTURER (Apple, Sony, Samsung) и
STOCK_BALANCE (LOW, MIDDLE, HUGE)

а если вспомнить, что таких критериев может быть около 10, то в таблице будет 11 столбцов, вроде ничего страшного, но вот количество записей и количество комблинаций может быть достаточно большим, например:


Для зарегистрированного пользователя, который хочет купить Телефон Samsung, которых на складе Много и готов сделать полную оплату предоставить скидку X%.

и тд.

Мой вопрос: как правильно архитектурно построить таблицу (ы) для решения данной задачи?
Какие best practice используются?
Не прошу решить за меня, а просто подтолкните в правильном направлении.

Спасибо.

Неактивен

 

#2 01.04.2019 09:01:54

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5592

Re: Связь один к одному по множеству полей, правильно ли?

FJ написал:

Для зарегистрированного пользователя, который хочет купить Телефон Samsung, которых на складе Много и готов сделать полную оплату предоставить скидку X%.

Если есть формула, по которой можно рассчитать Х%, то можно хранить в виде (величина скидки, параметр, значение):
(1%, категории товара, телефон)
(2%, остаток товара, много)
и т.д.

в противном случае, имхо, только много столбцов.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson