建立一个电子商务商店,并希望为批量订单提供价格折扣。每个产品可能有不同的折扣等级。

例如不同的折扣率取决于订购的数量。

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


因此,在产品表中,产品的折扣ID可以为1或5。假设Discount_id为5。因此,为了获得一个显示批量购买价格和折扣的表,我递归地循环了从5开始的Discount_id,直到child_id为null ?

是我完全超出了预期范围,还是有更好的方法来对这些数据进行建模?

最佳答案

您需要一个包含4个字段的表格

ID
product_id
层级
折扣

例如

1 1 1 0
2 1 11 5
3 1 21 15
4 1 51 20


并简单地将您的产品表与订单表和折扣表结合在一起,以找出适用于该产品的折扣

关于mysql - mySql-为批量购买的价格折扣表建模的最佳方法-递归?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19667541/

10-16 13:58