如何管理网上商城mysql中的退款db表?

cgfeq70w  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(379)

我目前正在为我的网上购物中心设计一个数据库表。为了说明问题,我目前有:
订单表:包含
订单号
订单总价
订单状态(例如发货、交货、退款)
订购者信息,如地址、zipcode和电话号码
产品表:包含
产品id
价格
库存量等
由于一个订单可以包含多个产品,并且一个产品可以包含在不同的订单中,因此可以使用中间订单明细表来构造多对多关系。因此,
订单详情:
订单号
产品id
订单标识和产品标识为外键并分组为订单明细表主键的数量。
现在,我正在尝试构建另一个表来存储有关退款的信息,客户可以在其中提出部分退款请求(e、 g.当客户x购买3件产品a和2件产品b时,我只想让x退还产品a中3件中的2件。
在上面的示例中,一行将插入到orders表中(假设order\u id=1),两行将插入到每个产品的order\u details表中。假设产品a的产品id=1,b的产品id=2,那么对于(订单id,产品id,数量),(1,1,3)和(1,2,2)行将被插入。
问题是,我应该如何构建退款表,以便满足上述规范?在上面的例子中,当x想要查看他的订单状态时,我应该如何在退款表中存储信息,以便x可以看到只有2个产品a已经退款,其他产品已经正确订购?

kq4fsx7k

kq4fsx7k1#

您可以创建一个退款表,并在其中放入以下内容:
退款\u id
订单详细信息

然后,此表将存储每个订单细节的退款数量。要获得最终订购数量(不包括退款),您可以轻松地从order\u details表左键联接到returns表并减去差额,即。

SELECT (order_details.quantity - IFNULL(refunds.quantity, 0)) AS ordered_quantity
FROM order_details
LEFT JOIN refunds ON order_details.id = refunds.order_detail_id

这将始终为您提供每个订单的详细信息,什么是正确订购。然后可以对这些订单详细信息值求和,以获得整个订单的正确订单

相关问题