用于存储包含具有不同属性的产品的订单的适当数据库结构

时间:2012-04-06 22:14:34

标签: mysql database database-design

我一直试图为我的问题提出解决方案好几天了,但没有运气。我希望有人可以帮助我。如果描述太长,我很抱歉。

我想建立一个网站,客户可以从中选择这些产品,并可以订购它们的任意组合。

产品A:

完全定制的产品(即使并非所有信息对表格结构都很重要,我也会详细描述自定义过程)

客户可以从组件列表中组装产品,并且:

  1. 有两种类型的组件 - 主要组件和辅助组件
  2. 每个组件都有特定的重量和价格
  3. 主要组件由辅助组件组成,但它们的重量与单独列出的重量不同(对于跟踪销售的组件数量非常重要)
  4. 每个产品必须包含1个主要组件,并且可以包含0到多个补充组件
  5. 补充成分的总重量始终<=主成分的重量
  6. 主要成分的最终重量计算为“原始主要成分的重量 - 补充成分的总重量”
  7. 例如

    添加主成分MC(重量1000g)
    加起来。组分1(重量100克)
    加起来。组分2(重量200g)

    最终产品包括:
    主要部件MC 700g
    燮。组件1 100g
    燮。组件2 200g

    每个产品都有唯一的代码(后面会说明原因)。

    产品B:

    产品,预先组装并直接购买(由组件制成,但组件的重量可能与组装模块中单独列出的重量不同)

    产品C:

    与组件无关的其他物品 - T恤,马克杯

    我的问题是 - 在以下情况下,用于存储这些商品订单的最有效的数据库结构

    1. 我需要显示特定订单的所有订单商品,当产品A存在时,列出所有主要组件的组件和组件
    2. 我需要能够通过代码重建已购买的定制产品(产品A),并删除单个组件(如果它们不再有库存/可用)
    3. 所有组件的重量和价格可能随时间变化+主要组件的组件和产品B也会发生变化
    4. 我需要能够跟踪每个组件的销售量和时间
    5. 到目前为止,我有以下数据库结构,但我认为我没有走上正轨:

      组件

      • id(PK)
      • 名称
      • 重量

      订单(不包括数字,customer_firstname,delivery_method等相关列)

      • id(PK)

      order_items (所有产品类型共有的字段)

      • id(PK)
      • order_id(FK to orders.id)
      • 代码
      • 姓名
      • 价格

      order_producta

      • id(PK)
      • order_item_id(FK to order_items.id)
      • component_id(FK to components.id)
      • 数量
      • 价格
      • 重量

      非常感谢您的回复。如果我不清楚地解释了一些问题,我很乐意用其他信息编辑我的问题。

0 个答案:

没有答案