Mysql获得产品的递归物料清单(BOM)

时间:2015-08-20 12:47:56

标签: mysql database-design

我的问题可能会让人感到困惑,但是当我找到更好的单词时,我会相应地编辑它。这不是一个直接的编码问题,而是关于如何处理这个设计问题的更多建议。

在我们的数据库模型中,我们将所有用于制造的产品(组件,组件,材料)和成品出售在同一个表"products"中。我们销售的每个产品和装配都将其BOM保存在单独的数据透视表"product_boms"中。它有点像这样:

Table: products
  - id
  - sku_number
  - name
  - type
  - ...

Table: product_boms
  - id
  - product_id (FK to products table)
  - child_product_id (FK to products table)
  - quantity

如您所见,表"product_boms"定义了某些产品的子产品列表。这是此产品的整个BOM的一部分。部分原因是此处的子产品可以在"product_boms"表中定义更多子产品。

我需要为特定产品创建整个BOM的树视图。这很容易在代码中完成,但是会导致许多SQL查询,因为我需要查找每个子产品,如果它还有其他子项...我现在正在研究SQL,如果有可能用一个查询?我知道这可以通过存储过程实现,但不能使用那些......

名为“product_x”的产品的最终结果(BOM)如下所示:

- product_x
   - component_a
   - component_b
   - assembly_a
      - material_a
      - component_c
      - component_d
   - assembly_b
      - material_b
      - component_e
      - component_f
      - component_g

我还可以选择重新定义数据库模型,以便更有效地节省物料清单,更好地将数据库从数据库中取出。接受任何建议。

0 个答案:

没有答案