mysql - 如何在mysql中管理互联网购物中心的退款数据库表?

标签 mysql shopping-cart

我目前正在为我的网上购物中心设计一个数据库表。为了具体说明问题,我目前有:

  1. 订单表:包含

    • 订单 ID
    • 订单总价
    • 订单状态(例如已发货、已送达、退款)
    • 订购者信息,例如地址、邮政编码和电话号码
  2. 产品表:包含

    • 产品 ID
    • 价格
    • 库存数量等

由于一个订单可以包含多个产品,并且一个产品可以包含在不同的订单中,因此需要一个中间order_details表来构造多对多关系。因此,

  • 订单详细信息:
    • 订单 ID
    • 产品 ID
    • 数量 其中 order_id 和 Product_id 是外键,并分组为 order_details 表的主键。
  • 现在,我正在尝试构建另一个表来存储有关退款的信息,客户可以在其中提出部分退款请求。 (例如,当客户X购买了3件产品A和2件产品B时,我想让X只退款三件产品A中的两件)。

    在上面的示例中,对于每个产品,一行将插入到订单表中(假设 order_id = 1),两行将插入到 order_details 表中。假设产品A的product_id = 1,B的product_id = 2,则对于(order_id,product_id,数量),将插入(1,1,3)和(1,2,2)行。

    问题是,我应该如何构建退款表才能满足上述规范?在上面的例子中,当X想要查看他的订单状态时,我应该如何在退款表中存储信息,以便X可以看到产品A只退款了2件,而其他产品已经正常订购了?

    最佳答案

    您可以创建退款表并在其中添加以下内容:

    • refund_id
    • order_detail_id
    • 数量

    此表将存储每个订单详细信息的退款数量。要获得最终订购数量(不包括退款),您可以轻松地从 order_details 表中对退款表进行左连接并减去差值,即

    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
    

    这将始终为您提供每个订单的详细信息,即已正确订购的商品。然后,您可以将这些订单详细信息值相加,以获得整个订单的正确订购内容

    关于mysql - 如何在mysql中管理互联网购物中心的退款数据库表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50872212/

    相关文章:

    sql - WordPress 工作流程修改

    mysql - 查找一个时间段是否与另一个时间段重叠

    javascript - Angular/Redux 保持状态的正确方法

    PHP 购物车多个值在一个 id

    php - 合并 2 个 mysql 结果的输出

    asp.net - 获取MYSQL中的MaxRow Count/通过一次调用从过程中获取FOUND_ROWS和数据表

    php - PayPal IPN 返 repo 物车或订单 ID 以进行后处理

    c# - 购物车中的特殊逻辑\算法

    e-commerce - 如何从 Hybris 店面的购物车生成多个订单?

    php - 向 php $_POST 发送 cURL 终端命令返回 null