0

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

例如,不同的折扣百分比取决于订购的数量。

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 为空?

我完全偏离了标准还是有更好的方法来建模这些数据?

4

1 回答 1

0

你需要一个有 4 个字段的表格

id product_id 等级折扣

例如

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

只需将您的产品表与订单表和折扣表连接起来,即可计算出申请该产品的折扣

于 2016-01-05T14:06:16.070 回答