建立电子商务商店,并希望为批量订单提供价格折扣。每种产品可能有不同的折扣等级。
例如,不同的折扣百分比取决于订购的数量。
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 表中,一个产品的 discount_id 可以是 1 或 5。假设 discount_id 是 5。所以为了获得一个显示批量购买价格和折扣的表,我从 5 开始递归循环 discount_id,直到 child_id 为空?
我完全偏离了标准还是有更好的方法来建模这些数据?