Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在mysql中管理网上购物中心的退款db表?_Mysql_Shopping Cart - Fatal编程技术网

如何在mysql中管理网上购物中心的退款db表?

如何在mysql中管理网上购物中心的退款db表?,mysql,shopping-cart,Mysql,Shopping Cart,我目前正在为我的网上购物中心设计一个数据库表。要指定问题,我目前有: 订单表:包含 订单号 订单总价 订单状态(例如已发货、已交付、已退款) 订购方信息,如地址、zipcode和电话号码 产品表:包含 产品标识 价格 库存数量等 由于一个订单可以包含多个产品,并且一个产品可以包含在不同的订单中,因此中间订单_详细信息表可以构造多对多关系。因此, 订单详情: 订单号 产品标识 数量 其中order_id和product_id是外键,并分组为order_details表的主键 现在,我正

我目前正在为我的网上购物中心设计一个数据库表。要指定问题,我目前有:

  • 订单表:包含

    • 订单号
    • 订单总价
    • 订单状态(例如已发货、已交付、已退款)
    • 订购方信息,如地址、zipcode和电话号码
  • 产品表:包含

    • 产品标识
    • 价格
    • 库存数量等
  • 由于一个订单可以包含多个产品,并且一个产品可以包含在不同的订单中,因此中间订单_详细信息表可以构造多对多关系。因此,

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

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


    问题是,我应该如何构造退款表以满足上述规范?在上面的示例中,当X想要查看其订单状态时,我应该如何在退款表中存储信息,以便X可以看到只有2项产品A已退款,其他产品已正确订购?

    您可以创建一个退款表,并在其中放入以下内容:

    • 退款单
    • 订单\u详细信息\u 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
    

    这将始终为您提供每个订单的详细信息,以及正确订购的内容。然后,您可以将这些订单详细信息值相加,以获得整个订单的正确订购量,也许退款表中应该有退款,然后存储订单id和产品id,以及退款中退款的(该产品的)项目数量。(当然,在不同的日期,每个订单甚至可以申请多个退款,因此不要将订单id和产品id组合作为此表上的主键)。然后,如果您想知道某一特定产品在任何给定订单中有多少项已售出且未退款,您可以获取原始订购数量,并减去任何相关退款记录中的数量。您不一定需要单独的退款表。你可以考虑退款为负数和数量的订单。您所需要的只是订单表中的一个引用字段,以便能够通过任何修改连接标准订单。