|
Связь один к одному по множеству полей, как правильно?
|
|||
---|---|---|---|
#18+
Суть задачи: Сумма Скидка на Продукт должна определяться динамически и зависеть он набора определенных условий, а именно: Скидка зависит от "Способа Оплаты\покупки товара" (Оплата всей суммы сразу\оплата товара частями); Скидка зависит от "Остатков товара на складе" (Товара на складе может быть: Мало\Средне\Много); Скидка зависит от "Категории товара" (Компьютер\Телевизор\Телефон); Скидка зависит от "Производителя" (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 используются? Не прошу решить за меня, а просто подтолкните в правильном направлении. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2019, 00:14 |
|
Связь один к одному по множеству полей, как правильно?
|
|||
---|---|---|---|
#18+
FJ-JFМой вопрос: как правильно архитектурно построить таблицу (ы) для решения данной задачи? Ваш вопрос несколько преждевременен. Универсальный ответ на него: так, чтобы она соответствовала бизнес-логике. А вот бизнес-логика в постановке задачи пока что не проработана; когда проработаете - тогда станет намного яснее, как строить модель. Просто как пример: допустим, на товары Samsung вы даёте скидку 10%. На телефоны вы даёте скидку 20%. Если товара на складе мало, вы даёте скидку 30%. Вопрос: какую скидку вы дадите покупателю, желающему купить Samsung Galaxy SIII? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2019, 01:56 |
|
Связь один к одному по множеству полей, как правильно?
|
|||
---|---|---|---|
#18+
Можно разделить на 2 таблицы - Скидки (Название, ПериодДействия, Активность, Размер, ...) и УсловияСкидок (ТипУсловия (AND или OR), СтрокаУсловия, ...). Это потребует создания простенького (а может и не очень простенького) интерпретатора строк условий, но зато не надо мучиться со сложной структурой. Ну и Вам, конечно, надо определиться - Вы хотите от системы скорости или универсальности. Если надо на лету рассчитывать скидки для сотен тысяч товаров для каждого покупателя отдельно - возможно, универсальностью придется жертвовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2019, 10:24 |
|
Связь один к одному по множеству полей, как правильно?
|
|||
---|---|---|---|
#18+
FJ-JF, делайте условия скидок в таблице Discount. Будет 11 полей или больше. Ну и что? Можно разделить на две таблицы или ещё помудрить. Но только, если условия по скидкам совсем неопределённые, заказчик планирует сам придумывать схемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2019, 13:51 |
|
Связь один к одному по множеству полей, как правильно?
|
|||
---|---|---|---|
#18+
FJ-JF, Курсач? Абстрактная задача супермаркета на необитаемом острове? Реально то, - ты хоть 20 условий скидок придумай, но если в соседнем магазине телевизор дешевле, твой никто не купит... Проще плясять от цены закупки, если не можешь выставить от неё конкурентную цену продажи, которая обеспечит аренду, зарплату, налоги и прибыль - все остальное не имеет смысла... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2019, 00:22 |
|
|
start [/forum/search_topic.php?author=sybasesql&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 9753ms |
total: | 9947ms |
0 / 0 |