Saya sedang mengerjakan titik penjualan baru untuk perusahaan yang produknya dengan harga yang berbeda tergantung pada bauran produk.
Semua produk memiliki harga dasar.
Untuk menjelaskan masalah saya, saya akan menggunakan info berikut:
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
Perusahaan memiliki Paket, misalnya Paket "Combo": untuk produk A atau B, jika Anda memilih 1 dari Q atau R dan 1 dari X, Y atau Z Anda mendapatkan diskon $ 20.
Kasus A: Kadang-kadang pelanggan menambahkan ke produk dasar ketika melakukan pemesanan, misalnya: Mereka bukan salah satu dari Produk A, dan mereka menambahkan Produk Q dan Produk P untuk itu untuk membuat paket yang memiliki harga diskon. Kemudian mereka dapat menambahkan bahwa mereka menginginkan 1 produk B dengan 1 R dan 1 Z.
Kasus B: Kadang-kadang pelanggan akan menambahkan 1 A dan 2 B, 2 Q, 1 S, 2 X dan 1 Z. Menurut aturan yang ditetapkan oleh Paket "Combo", hanya 2 combo yang akan berlaku karena S bukan item kombo.
Promosi lainnya tergantung pada kuantitas, jadi jika Anda membeli 2 B, Anda mendapat diskon 20% dan / atau tergantung pada waktu, itu hanya berlaku setelah pukul 17:00 atau sebelum diskon 10% jika sebelum pukul 10:00. Promosi lain mungkin bergantung pada kapan pembelian terakhir Anda terjadi atau jika Anda telah membeli lebih dari $ X dalam jangka waktu Y.
Masalah saya:
1) Bagaimana cara menyusun tabel sehingga saya dapat membuat paket atau promosi yang berbeda dengan cara yang sangat fleksibel untuk menambahkan berbagai jenis promosi dengan persyaratan yang berbeda?
2) Ketika mereka memesan seperti Kasus B (atau campuran Kasus A dan Kasus B) bagaimana saya menyusun permintaan saya sehingga saya dapat menguji untuk melihat bauran produk apa yang ada dalam pesanan, dan memperbarui harga / deskripsi yang sesuai ? Pada akhirnya, hasil terbaik untuk kueri ini akan mengembalikan paket dan promosi mana yang memiliki persyaratan terpenuhi yang memberikan manfaat paling besar kepada pelanggan (yaitu mungkin apa yang mereka pesan memenuhi persyaratan untuk promosi 1 dan 3, tetapi promosi 3 lebih murah. Ini harus bekerja dengan beberapa promosi).
Terima kasih sebelumnya atas bantuannya!
PEMBARUAN # 1
Untuk lebih menjelaskan masalah yang dihadapi dan untuk memperbarui pekerjaan yang dilakukan sejauh ini untuk menyelesaikannya, saya menyertakan ERD Model Produk terbatas pada entitas dan atribut yang mempengaruhi masalah (yaitu inventaris tidak berperan di sini, jadi tidak ada inventaris entitas hadir).
Saya juga memasukkan data sampel dari entitas dan atribut yang memengaruhi pertanyaan ini (untuk mempermudah membaca data, saya memasukkan nama / deskripsi sebagai pengganti Foreign Keys):
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
Jadi, dengan penelitian dan dukungan yang diberikan oleh komunitas hingga tahu, saya telah mampu memecahkan Masalah # 1. Bahkan, saya telah melakukannya dengan lebih banyak fleksibilitas daripada yang saya pikir bisa saya lakukan dalam penyebaran sistem yang pertama.
Semua meskipun telah ada kemajuan dengan Soal 2, itu tidak diselesaikan dengan memuaskan. Ada beberapa ide tentang bagaimana melakukan ini, Neil McGuilgan mengajukan pertanyaan besar menuju kemungkinan solusi menggunakan Divisi Relasional (dba.stackexchange.com/questions/45829/what-is-the-name-of-this-type- of-query-dan-apa-adalah-efisien-contoh) dan buku ini (www.amazon.com/books/dp/0471380237) banyak membantu. Namun solusi ini saat ini, dan seperti yang saya pahami, hanya bekerja dengan "satu" catatan (kombo) pada suatu waktu. Jika seorang pelanggan berjalan dan berkata ia menginginkan 2 burger keju, 1 hamburger, 1 Jus Apel kecil, 1 Coke, 1 Kentang Goreng, dan 2 Cincin Bawang, saya perlu cara untuk mendeteksi bahwa hanya ada satu kombo dalam campuran dan menambahkan yang lain produk dengan harga dasar. Jika ada beberapa kombinasi kombo, saya
Satu ide yang saya buat untuk memecahkan masalah kedua adalah menambahkan dan atribut ke PRODUCT COMPONENT flaggin produk utama untuk combo (yaitu hamburger). Kemudian ketika menjalankan proses penetapan harga, kueri produk apa dalam pesanan adalah produk utama dalam "paket", menghubungkan kueri dengan diskon yang diberikan oleh tabel KOMPONEN HARGA dan memesan dengan nilai itu (menurun), dan dalam urutan paket itu memeriksa untuk melihat apakah Anda dapat membuat "paket" dengan produk-produk non-utama yang tersisa dengan kueri dan loop proses sampai tidak ada lagi produk utama atau tidak ada lagi produk-produk non-utama dalam sisanya.