Я працюю над новою точкою продажу для компанії, яка продає товари за різними цінами залежно від продуктового набору.
Всі товари мають базову ціну.
Щоб пояснити свою проблему, я використаю таку інформацію:
Product Category Price
A 1 45
B 1 70
Q 2 20
R 2 27
S 2 15
X 3 17
Y 3 22
Z 3 16
У компанії є пакети, наприклад пакет "Combo": на товар A або B, якщо ви вибираєте 1 з Q або R і 1 з X, Y або Z, ви отримуєте знижку в розмірі 20 доларів.
Випадок А: Іноді клієнти додають до базового продукту під час оформлення замовлення, наприклад: Вони не є одним із Продукту А, і додають до нього продукт Q і продукт P, щоб створити пакет, який має знижену ціну. Потім вони можуть додати, що вони хочуть 1 продукт B з 1 R і 1 Z.
Випадок B: Іноді клієнти додають 1 A і 2 B, 2 Q, 1 S, 2 X і 1 Z. Відповідно до правил, викладених пакетом "Combo", застосовуються лише 2 комбо, оскільки S не є комбо-елементом.
Інші акції залежать від кількості, тому якщо ви купуєте 2 B, ви отримуєте 20% знижки та / або залежність від часу, вона дійсна лише після 17:00 або до 10% знижки, якщо до 10:00. Інша акція може залежати від того, коли відбулася остання покупка або якщо ви придбали більше $ X за Y-часовий період.
Мої проблеми:
1) Як я структурую таблиці, щоб я створював різні пакети чи рекламні кампанії дуже гнучким для додавання різних типів акцій з різними вимогами?
2) Коли вони замовляють, як Case B (або суміш справ A і Case B), як я структурую свій запит, щоб я міг перевірити, чи є такий товарний набір замовлень, і відповідно оновити ціни / описи ? Зрештою, найкращим результатом для цього запиту було б повернутись до того, які пакунки та акції мають вимоги, виконані в порядку, що дає найбільшу користь для замовника (тобто, можливо, те, що він замовив, відповідає вимогам щодо просування 1 і 3, але промоція 3 є менш дорогою. повинні працювати з кількома акціями).
Заздалегідь дякую за допомогу!
ОНОВЛЕННЯ №1
Для кращого опису існуючих проблем та оновлення виконаної на даний момент роботи для їх вирішення я включаю ERD моделі продукту, обмежену сутностями та атрибутами, які впливають на проблему (тобто інвентар тут не відтворюється, тому інвентар сутності є).
Я також включаю зразкові дані сутностей та атрибути, які впливають на це питання (щоб спростити читання даних, я ввожу назву / описи замість іноземних ключів):
PRODUCT
---------
ID Name
================================
1 Hamburger
2 Cheeseburger
3 Bacon Hamburger
4 Bacon Cheeseburger
5 Orange Juice
6 Apple Juice
7 Coffee
8 Coke
9 French Fries
10 Onion Rings
11 Soup du Jour
12 Hamburger Combo
13 CheeseBurger Combo
14 Bacon Hamburger Combo
15 Bacon Cheeseburger Combo
16 Combo Side
17 Combo Beverage
18 Small Orange Juice
19 Large Orange Juice
20 Small Apple Juice
21 Large Apple Juice
22 Add Extra Patty
23 Add Avocado
PRODUCT COMPONENT
------------------
productFrom productTo
===================================================
Hamburger Combo Hamburger
Hamburger Combo Combo Side
Hamburger Combo Combo Beverage
CheeseBurger Combo Cheeseburger
CheeseBurger Combo Combo Side
CheeseBurger Combo Combo Beverage
Bacon Hamburger Combo Bacon Hamburger
Bacon Hamburger Combo Combo Side
Bacon Hamburger Combo Combo Beverage
Bacon Cheeseburger Combo Bacon Cheeseburger
Bacon Cheeseburger Combo Combo Side
Bacon Cheeseburger Combo Combo Beverage
PRODUCT FEATURE
----------------
ID Description
=======================
1 Combo Side Option
2 Combo Beverage
3 Juice
4 Orange Juice Size
5 Apple Juice Size
6 Extras
PRODUCT FEATURE APPLICABILITY
------------------------------
product productFeature ProductFeatureApplicabilityType
============================================================================
Hamburger Combo Combo Side Required
Hamburger Combo Juice Flavor Required
Cheeseburger Combo Combo Side Required
Cheeseburger Combo Juice Flavor Required
Bacon Hamburger Combo Combo Side Required
Bacon Hamburger Combo Juice Flavor Required
Bacon Cheeseburger Combo Combo Side Required
Bacon Cheeseburger Combo Juice Flavor Required
PRODUCT FEATURE APPLICABILITY
------------------------------
productFeature product ProductFeatureApplicabilityType
============================================================================
Combo Side Hamburger Combo Required
Combo Beverage Hamburger Combo Required
Extras Hamburger Combo Optional
Combo Side Cheeseburger Combo Required
Combo Beverage Cheeseburger Combo Required
Extras Cheeseburger Combo Optional
Combo Side Bacon Hamburger Combo Required
Combo Beverage Bacon Hamburger Combo Required
Extras Bacon Hamburger Combo Optional
Combo Side Bacon Cheeseburger Combo Required
Combo Beverage Bacon Cheeseburger Combo Required
Extras Bacon Cheeseburger Combo Optional
OPTIONAL FEATURE
------------------
productFeatureFrom Product ProductFeatureTo
=============================================================
Combo Side Option French Fries
Combo Side Option Onion Rings
Combo Side Option Soup du Jour
Combo Beverage Juice
Combo Beverage Coffee
Juice Orange Juice Size
Juice Apple Juice Size
Orange Juice Size Orange Apple Juice
Orange Juice Size Orange Apple Juice
Apple Juice Size Small Apple Juice
Apple Juice Size Large Apple Juice
Extras Add Extra Patty
Extras Add Avocado
Отже, завдяки дослідженню та підтримці, яку надає громада, доки не знаю, мені вдалося вирішити проблему №1. Насправді я зробив це з більшою гнучкістю, ніж я вважав, що міг би зробити в першому розгортанні системи.
Незважаючи на те, що в задачі 2 були досягнуті успіхи, вона не вирішена на задоволення. Існували деякі ідеї, як це зробити, Ніл МакГілган задав велике запитання, що веде до можливого рішення, використовуючи Реляційний відділ (dba.stackexchange.com/questions/45829/what-is-the-name-of-this-type- наприклад, запит-і-що-це-є ефективним прикладом), і ця книга (www.amazon.com/books/dp/0471380237) дуже допомогла. Однак це рішення на даний момент, і наскільки я його розумію, працює лише з "одним" записом (комбі) за один раз. Якщо клієнт підходить і каже, що хоче 2 чізбургери, 1 гамбургер, 1 маленький яблучний сік, 1 кокс, 1 картопля фрі та 2 кільця цибулі, мені потрібен спосіб виявити, що в суміші є лише одне комбо, і додати інший продукти за базовою ціною. Якщо є кілька комбінованих комбінацій, я '
Однією ідеєю, яку я придумав, щоб вирішити другу проблему, є додати та віднести до прапора PRODUCT COMPONENT основний продукт для комбо (тобто гамбургер). Потім, запускаючи процес ціноутворення, запитайте, які товари в замовленні є основними продуктами в "пакеті", пов'язуючи запит зі знижкою, наданою таблицею ЦІНИ КОМПОНЕНТУ, і замовляйте за цим значенням (у зменшенні), і в цьому порядку пакетів перевіряйте щоб побачити, чи можете ви створити "пакет" для решти основних продуктів із запитом і циклізуйте процес, поки не буде більше основних продуктів чи не залишиться більше основних продуктів у решті.