Php 如何在MySQL中存储复杂的产品/订单数据?

Php 如何在MySQL中存储复杂的产品/订单数据?,php,mysql,sql,database,relational,Php,Mysql,Sql,Database,Relational,我正在为我的网上商店开发一个订单系统。我有两张桌子: 产品,存储有关产品的信息 订单,存储客户订单的常规id和信息 现在我想有一种在数据库中存储复杂客户订单的方法。我需要一些东西,让我知道有多少每一个产品的大小(S,M或L)是在一个订单 棘手的是,我希望能够添加/编辑/删除产品(当然不会影响过去的订单),因此方法应该是灵活的 我该怎么做 每个订单都有一个单独的表,以产品作为行 一个表格用于所有订单,产品作为列 还有别的选择吗 谢谢 至少您需要: Products (one row per pro

我正在为我的网上商店开发一个订单系统。我有两张桌子:

  • 产品,存储有关产品的信息
  • 订单,存储客户订单的常规id和信息
  • 现在我想有一种在数据库中存储复杂客户订单的方法。我需要一些东西,让我知道有多少每一个产品的大小(S,M或L)是在一个订单

    棘手的是,我希望能够添加/编辑/删除产品(当然不会影响过去的订单),因此方法应该是灵活的

    我该怎么做

  • 每个订单都有一个单独的表,以产品作为行
  • 一个表格用于所有订单,产品作为列
  • 还有别的选择吗

  • 谢谢

    至少您需要:

    Products (one row per product)
        ProductID
        Size
    
    Orders (one row per order)
        OrderID
    
    OrderDetails (one row per product per order)
        ProductID
        OrderID
        Size
    
    请注意,每个“大小”都是它自己的ProductID。您可能还需要另一个ID来对相同“基本”产品但大小不同的产品进行分组

    因此,如果订单#1有三种产品,订单#2有四种产品,那么
    OrderDetails
    将有七行:

    OrderID ProductID Quantity
    1       234       2
    1       345       9
    1       456       30
    2       432       1
    2       234       65
    2       654       8
    2       987       4
    

    取决于您的购物车目标。例如,您是否希望允许客人购买?i、 e.用户无需登录即可进行购买

    所附图片是我一直在进行的设计,如下所示:

  • 访问者从站点选择产品并将其添加到会话购物车(只是临时存储产品、数量和价格等的地方)

  • 一旦客户准备退房,我们将创建订单、订单人员和人员地址(产品必须交付到的地点),并将项目添加到订单项目表中。所有这些信息都由客户在结帐页面中添加

  • 最后一步是提供支付方式:贝宝、信用卡等

  • 我喜欢这个设计的原因是用户没有义务向我们注册。Order_person充当用户和订单之间的一种接口。如果注册,我们只需将order_person链接到用户表

    我已经包括了一个样本前端的结帐页了


    这真的很有帮助!我不明白的一点是rbu_user_id是什么意思?好问题,还有一个用户表(基于角色的用户),它指向订单人员(为了清楚起见,我应该包括它)。当用户注册时,他们存储在用户表中,当他们进行购买时,详细信息链接到他们的订单人(可能会有所不同)。如果有人决定不注册,他们的详细信息将存储在order person表中。在某些情况下,用户可能会发起付款、取消付款并返回尝试编辑订单,然后再继续发起另一笔付款。根据您的方法,如果订单是在付款完成之前创建的,那么如何对其进行编辑?需要创建订单才能将付款链接到订单ID。如果用户希望更新订单,则创建新订单应该不会太困难。。。