0

e コマース ストアを構築しており、大量注文の価格割引を提供したいと考えています。各製品には異なる割引レベルがある場合があります。

たとえば、注文数量に応じて割引率が異なります。

Product  : Quantity Bands[discount]
Product A: 1-10[0%], 11-20[5%], 21-50[15%], 51+[20%]
Product B: 1-5[0%],  6-10[10%], 10+[30%]
Product C: 1-10[0%], 11-20[5%], 21-50[15%], 51+[20%]

データベースでこれをどのようにモデル化すべきかについて少し混乱しています...

最初に考えたのは、ディスカウント テーブルを自己参照隣接リストとしてモデル化することでした。製品テーブルには、それが属する割引帯を判別するための discount_id があります。

例えば

discounts table:
id int
name string
discount decimal
parent_id int nullable

サンプルデータ:

id   name    discount child_id
=============================================
1    1-10    0        2
2    11-20   0.05     3
3    21-50   0.15     4
4    51+     0.20     null
=============================================
5    1-5    0         6
6    6-10   0.10      7
7    10+    0.30      null
=============================================

製品表

id int
name string
base_price decimal
discount_id

したがって、products テーブルでは、製品は 1 または 5 の discount_id を持つことができます。discount_id が 5 であると仮定します。したがって、一括購入の価格と割引を示すテーブルを取得するには、5 から始まり、child_id が null になるまで、discount_id を再帰的にループします。 ?

私は完全に的外れですか、それともこのデータをモデル化するためのより良い方法はありますか?

4

1 に答える 1