Lược đồ cơ sở dữ liệu cho các sản phẩm định giá (gói, khuyến mãi, dựa trên số lượng, thời gian ưu đãi giới hạn)


11

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).

nhập mô tả hình ảnh ở đây

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):

Dưới đây là một liên kết đến biểu đồ dòng chảy cho một ví dụ về kết hợp, một cách nhanh chóng và trực quan để hiểu cấu trúc bảng.

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.


Anh đã làm gì cho đến nay ? Chỉ cho chúng tôi một số sơ đồ ER.
Tulains Córdova

@ user61852 Tôi làm hầu hết các ERD của mình bằng tay. Bạn có thể giới thiệu một công cụ để thực hiện chúng trên máy tính để tôi có thể chia sẻ nó không? (hy vọng là miễn phí :)
cml

@ user61852 Tôi tìm thấy gliffy.com đang được chứng minh là khá hữu ích. Tôi đang làm việc để tập hợp những gì tôi đã làm để cập nhật câu hỏi của mình.
cml

@ user61852 Tôi đã thêm bản cập nhật # 1 để hiển thị ERD, biểu đồ luồng, tiến bộ và dữ liệu bảng mẫu.
cml

Câu trả lời:


2

Điều này có thể trở nên phức tạp ...

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?

Bạn có thể bắt đầu với một packaged_withbảng để xác định những sản phẩm nào có thể được nhóm và đóng gói cùng nhau:

gói
-------
  id (PK)
  Tên

gói_group
-------------
  gói_id (FK đến gói.id)
  Tên

đóng gói
-------------
  gói_group_id (FK đến gói_group.id)
  sản phẩm_id (FK đến sản phẩm.id)
  can_be_packaged_with (FK đến sản phẩm.id)

package_groupđề cập đến a package. packaged_withđề cập đến productspackage_groups, để một hàng trong packaged_withđó cho thấy sản phẩm nào có thể được đóng gói và một gói có thể được tạo thành từ nhiều nhóm.

Dữ liệu sẽ như thế này:

gói
-------
ID | Tên
------------
1 | Combo

gói_group
------------
ID | Tên
---------
1 | Nhóm QR
2 | Nhóm XYZ

đóng gói
-------------
gói_group_id | sản phẩm_id | can_be_packaged_with
----------------------------------------------
1 | Một | Q
1 | Một | R
2 | Một | X
2 | Một | Y
2 | Một | Z
1 | B | Q
1 | B | R
2 | B | X
2 | B | Y
2 | B | Z

Điều này sẽ giúp bạn với các gói sản phẩm mình. Tôi có một số ý tưởng cho phần còn lại của câu hỏi của bạn, nhưng tôi không có thời gian để hoàn thành câu trả lời này ngay bây giờ ...


Chương trình khuyến mãi

Bạn liệt kê nhiều loại khuyến mãi. Bạn có thể muốn xem xét một số loại công cụ quy tắc, nhưng tôi sẽ cố gắng giữ mọi thứ đơn giản hơn thế, nhưng vẫn ... Điều này sẽ trở nên phức tạp ..

Hãy bắt đầu với các chương trình khuyến mãi đơn giản trong đó giá được chiết khấu một tỷ lệ nhất định:

phần trăm
----------------
  id (PK)
  Tên
  phần trăm

sản phẩm
------------------
  id (PK)
  sản phẩm_id (FK đến sản phẩm.id)
  Promotion_id (FK đến Perc_discount.id)
  start_date
  ngày cuối

Ở đây chúng tôi có một bảng lưu trữ bao nhiêu phần trăm bạn nhận được cho sản phẩm. Một bảng khác thực sự liên kết các sản phẩm với tỷ lệ chiết khấu và cũng bao gồm ngày bắt đầu và ngày kết thúc để bạn biết liệu giảm giá có được áp dụng vào bất kỳ ngày nào không.

Ý tưởng cho các chương trình khuyến mãi khác đến sau ...


Tôi mong được đọc phần còn lại của bạn trả lời khi bạn có thời gian viết nó. Cảm ơn bạn đã giúp đỡ.
cml

Tôi chắc chắn sẽ xem xét "công cụ quy tắc"! Nếu bạn có bất kỳ liên kết tài nguyên tốt, gửi cho họ theo cách của tôi! Vấn đề lớn nhất của tôi phải biết là xác định chương trình khuyến mãi nào áp dụng cho danh sách các mục đơn hàng chưa được sắp xếp, chưa được sắp xếp (Trường hợp B).
cml

@cml: Tôi biết có những sản phẩm thương mại có lẽ đã có khả năng bạn muốn. Một cái tôi biết được gọi là Hybris, tôi đã nghe nói có một hệ thống khuyến mãi rất tinh vi.
Thất vọngWithFormsDesigner

Tôi đã thêm cập nhật # 1
cml

1

Mặc dù nó là một chủ đề 3 năm tuổi, nhưng tôi vẫn trả lời nó nghĩ rằng nó có thể hữu ích cho ai đó.

Table Structure
Table_Offer
--------
ID FK
Name   
start time  
end time   

MandatoryGroup
--------
ProductId (FK to product)

MixGroup1
--------
ProductId (FK to product)


MixGroup2
--------
ProductId (FK to product)


Table_offerDetails
------------------
ID PK
offerId (FK to table_offer)
MandatoryProduct(FK to MandatoryProducts.productID
firstProduct ( fk to MixGroup1.productId)
secondProduct (FK to MixGroup2.productId)

Offer
----
 ID    name    startDate  EndDate 
---    ----     --------   ------
1       COMBO   


MandatoryGroup
-------------
 ID    name 
 ---   ---- 
1      A
2      B


MixGroup1
---------
 ID    name 
 ---   ---- 
 3      P      
 4      Q

MixGroup2
---------
 ID    name 
 ---   ---- 
 5      x      
 6      Y
 7      Z



 OfferHeader
-------------
ID  Customer count(B) B_disc time_disc  stat_disc DiscTotal orderPayableTotal
--  --------- -------  ----   --------  ---------  --------  ------------    
1     BOB     2         20      5         2             

Phiếu mua hàng ------------

 ID   offerID   MandatoryProduct     1stProduct    2ndProduct
----  -------    ---------------     ----------    ----------
1       1         A                     P              X
2       1         A                     P              Y
3       1         A                     P              Z
4       1         A                     Q              X
5       1         A                     Q              Y
6       1         A                     Q              Z
7       1         B                     P              X
8       1         B                     P              Y
9       1         B                     P              Z
10      1         B                     Q              X
11      1         B                     Q              Y
12      1         B                     Q              Z

Để xây dựng một OfferDetails, bạn phải cung cấp một mixgropu1 và amixGropu2 bắt buộc. Vì vậy, caseB, chỉ có 2 ưu đãi như sau:

1 A and 2 B, 2 Q, 1 S, 2 X and 1 Z
2B 2Q and 2X =2 offers
1A 1Q and 1X=1st offer
1B 1Q and 1X=2nd Offer ... etc other combinations are vivid.

Các ưu đãi khác dựa trên logic kinh doanh: Đối với chiết khấu ưu đãi số lượng: tạo truy vấn để tìm số lượng B trong phiếu mua hàng cho khách hàng. hãy gọi nó là QTYB. tìm QTYB% 2 và nhân nó với giá trị số lượng (là $ 20)

Đối với ưu đãi thống kê, chỉ cần thêm một bit khác được gọi là EarnPoint cho giao dịch mua của khách hàng. và đặt EarnPoint một ngày hết hạn. điểm kiếm được có thể giống như số tiền mua. Kiểm tra xem số tiền đã mua> = $ X, họ sẽ giảm giá theo chính sách.

Tương tự là so sánh thời gian đặt hàng nếu trước 5 giờ chiều và sau 10 giờ sáng thì phát hành 5% khác giảm giá 10%.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.