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

时间:2013-12-04 16:00:10

标签: php mysql sql database relational

我正在为我的网店开设订单系统。我有2张桌子:

  1. 产品,存储产品信息
  2. 订单,存储一般id&客户订单的信息。
  3. 现在我希望能够在数据库中存储复杂的客户订单。我需要一些东西让我知道每种产品的每种尺寸(S,M或L)的数量是多少。

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

    我应该怎么做?

    1. 每个订单都有一个单独的表,产品是行吗?
    2. 所有订单的一个表,产品为列?
    3. 其他一些选择?
    4. 谢谢!

2 个答案:

答案 0 :(得分:4)

取决于您购物车的目标。例如,您想要允许客人购买吗?即用户无需登录以进行购买?

附图是我一直在研究的设计,它是这样的:

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

  2. 客户准备结账后,我们会创建订单,订单人员和person_address(产品必须交付到的地方),并将商品添加到order_item表中。所有这些信息都由客户在结帐页面中添加。

  3. 最后一步是提供付款方式:paypal,信用卡等。

  4. 我对此设计的看法是,用户没有义务向我们注册。 Order_person充当用户和订单之间的一种接口。如果要注册,我们只需将order_person链接到用户表...

    我也在结帐页面中包含了示例前端。

    Product Order Database Design

    enter image description here

答案 1 :(得分:3)

至少你需要:

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,该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