您可能會需要建立某種形式保存有關折扣基本信息「折扣」表 - 如唯一的標識符和描述(這也可以鏈接到觸發此折扣所需的資格規則 - 例如促銷代碼)。
此表還需要爲您的示例創建折扣捆綁的規則,例如「觸發折扣所需的產品數量」和「捆綁價值」 - 爲了靈活性,這些字段應該是無效的,以便你不要有要使用捆綁;您可以使用「產品折扣」表中確定的單個價格。
作爲一個基本的例子,你可能有這樣一個折扣表:
+----+-------------+----------------+--------------+------------+----------+
| id | description | units_required | bundle_price | start_date | end_date |
+----+-------------+----------------+--------------+------------+----------+
| .. + ... | ... | ... | ... | ... |
...又像product_to_discount鏈接表:
+----+------------+-------------+----------------+------------+
| id | product_id | discount_id | units_required | unit_price |
+----+------------+-------------+----------------+------------+
| .. | ... | ... | ... | ... |
然後,您鏈接產品折扣,所以如果你有這樣的東西:「從這個範圍內購買任何3件商品只需10英鎊」,你需要將所有可能的合格產品鏈接到折扣並將units_required
設置爲3 - 那麼如果這些商品中有3件是在「籃子」中應用bundle_price
。
你可能需要做一些過濾,以理清其捆綁優先,如果有一個以上的可能性(可能通過計算給出了最大的優惠)。
另一種可能性,像這樣的設置是,它可以讓你做簡單得多的折扣爲好。你可以簡單地離開units_required
和bundle_price
作爲NULL
和鏈接只是一個單一的產品折扣;可能多次在不同product_to_discount.units_required
值不同的價格遊 - 這樣你就可以設置一個單一的產品折扣值,或每件更大的折扣較大的體積。
你也可以添加在一個領域像product_to_discount.product_is_discount
,如果你想要做的東西,如「購買X,Y或Z並獲得Q免費」。
這是相當模糊的輪廓排序的,但我希望它可以幫助你指出「正確」的方向......
哦,一兩件事要記住,如果你的系統做任何會計你」會需要傳遞下來「折扣行」考慮到預期的產品價格和折扣一個之間的差異。