Tôi đang làm việc tại một điểm bán hàng mới cho một công ty sản xuất các sản phẩm với giá khác nhau tùy thuộc vào hỗn hợp sản phẩm.
Tất cả các sản phẩm có một mức giá cơ bản.
Để giải thích vấn đề của tôi, tôi sẽ sử dụng thông tin sau:
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
Công ty có các Gói, ví dụ Gói "Combo": cho sản phẩm A hoặc B, nếu bạn chọn 1 trong Q hoặc R và 1 của X, Y hoặc Z, bạn sẽ được giảm giá 20 đô la.
Trường hợp A: Đôi khi, khách hàng thêm vào một sản phẩm cơ bản khi đặt hàng, ví dụ: Họ không phải là một trong các Sản phẩm A, và họ thêm Sản phẩm Q và Sản phẩm P vào đó để tạo ra một gói có giá chiết khấu. Sau đó, họ có thể thêm rằng họ muốn 1 sản phẩm B có 1 R và 1 Z.
Trường hợp B: Đôi khi khách hàng sẽ thêm 1 A và 2 B, 2 Q, 1 S, 2 X và 1 Z. Theo quy tắc được đặt ra bởi Gói "Combo", chỉ có 2 combo sẽ được áp dụng vì S không phải là vật phẩm kết hợp.
Các chương trình khuyến mãi khác phụ thuộc vào số lượng, vì vậy nếu bạn mua 2 trong số B, bạn được giảm 20% và / hoặc phụ thuộc vào thời gian, nó chỉ có hiệu lực sau 5 giờ chiều hoặc trước 10% nếu trước 10 giờ sáng. Một khuyến mãi khác có thể phụ thuộc vào thời điểm lần mua hàng cuối cùng của bạn xảy ra hoặc nếu bạn đã mua hơn $ X trong khung thời gian Y.
Vấn đề của tôi:
1) Làm cách nào để cấu trúc các bảng để tôi tạo các gói hoặc chương trình khuyến mãi khác nhau theo cách rất linh hoạt để thêm các loại quảng cáo khác nhau với các yêu cầu khác nhau?
2) Khi họ đặt hàng như Trường hợp B (hoặc kết hợp Trường hợp A và Trường hợp B), làm cách nào để cấu trúc truy vấn của tôi để tôi có thể kiểm tra xem hỗn hợp sản phẩm nào theo thứ tự và cập nhật giá / mô tả phù hợp ? Cuối cùng, kết quả tốt nhất cho truy vấn này sẽ trả về các gói và chương trình khuyến mãi nào được đáp ứng theo thứ tự mang lại lợi ích cao nhất cho khách hàng (nghĩa là những gì họ đặt hàng đáp ứng các yêu cầu cho khuyến mãi 1 và 3, nhưng khuyến mãi 3 ít tốn kém hơn. phải làm việc với nhiều chương trình khuyến mãi).
Xin được cảm ơn trước về sự giúp đỡ!
CẬP NHẬT # 1
Để mô tả rõ hơn các vấn đề hiện tại và cập nhật công việc đã thực hiện để giải quyết chúng, tôi đang sử dụng ERD của Mô hình sản phẩm giới hạn ở các thực thể và thuộc tính ảnh hưởng đến sự cố (ví dụ: hàng tồn kho không hoạt động ở đây, vì vậy không có hàng tồn kho thực thể có mặt).
Tôi cũng bao gồm dữ liệu mẫu từ các thực thể và thuộc tính ảnh hưởng đến câu hỏi này (để đơn giản hóa việc đọc dữ liệu, tôi sẽ đặt tên / mô tả thay cho Khóa ngoài):
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
Vì vậy, với sự nghiên cứu và hỗ trợ do cộng đồng cung cấp cho đến khi biết, tôi đã có thể giải quyết vấn đề # 1. Trên thực tế, tôi đã làm như vậy với sự linh hoạt hơn tôi nghĩ tôi có thể làm trong lần triển khai đầu tiên của hệ thống.
Tất cả mặc dù đã có những tiến bộ với Vấn đề 2, nó không được giải quyết cho sự hài lòng. Đã có một số ý tưởng về cách thực hiện điều này, Neil McGuilgan đã hỏi một câu hỏi lớn dẫn đến một giải pháp khả thi bằng cách sử dụng Bộ phận quan hệ (dba.stackexchange.com/questions/45829/what-is-the-name-of-this-type- of-query-and-what-is-an-hiệu quả-ví dụ) và cuốn sách này (www.amazon.com/books/dp/0471380237) đã giúp rất nhiều. Tuy nhiên, giải pháp này hiện tại và theo tôi hiểu, chỉ hoạt động với bản ghi "một" (kết hợp) tại một thời điểm. Nếu một khách hàng đi lên và nói rằng anh ta muốn 2 bánh phô mai, 1 bánh hamburger, 1 nước ép táo nhỏ, 1 cốc, 1 khoai tây chiên và 2 vòng hành tây, tôi cần một cách để phát hiện ra rằng chỉ có một kết hợp trong hỗn hợp và thêm vào đó sản phẩm với giá cơ sở. Nếu có nhiều kết hợp kết hợp, tôi '
Một ý tưởng tôi đã đưa ra để giải quyết vấn đề hai là thêm và gán thuộc tính cho SẢN PHẨM THÀNH PHẦN gắn cờ sản phẩm chính cho combo (ví dụ như hamburger). Sau đó, khi chạy quy trình định giá, truy vấn sản phẩm nào theo thứ tự là sản phẩm chính trong "gói", liên quan đến truy vấn giảm giá được đưa ra bởi bảng GIÁ THÀNH PHẦN và đặt hàng theo giá trị đó (giảm dần) và kiểm tra thứ tự các gói đó để xem liệu bạn có thể tạo một "gói" với các sản phẩm không chính còn lại bằng một truy vấn và lặp lại quy trình cho đến khi không còn sản phẩm chính nào nữa hoặc không còn sản phẩm chính nào trong phần còn lại.