物料清单数据库模型

use*_*103 14 database-design

我目前正在开展一个项目,该项目应该帮助我们完成库存控制以及购买我们的最终产品.

我们正处于建模数据库的阶段,其中一个要求是生成BOM(物料清单).

我已经阅读了这个帖子并找到了BOM的示例数据模型:

概念数据模型物理数据模型

在此输入图像描述

但我不确定我完全理解.

我们的最终产品由几个子组件组成,因此每个子组件在product_hierarchy表中是一行,最终产品在该表中也是一行.每个子组件由单独的(原子)部件制成,每个部件在表格中标识tpart(每个部件都有制造商字段,最小重新订购数量和其他特定字段).

在生成BOM时,还应包含所有单独的部分,因此我不完全清楚如何建模数据库:

  1. 单独的部分是一行,product_hierarchy永远不会是一个人的"父"(不再需要表格部分)
  2. product_hierarchy和之间的N:M关系tpart:每个单元有几个部分; 每个部分都可以属于几个单元

我倾向于第二种选择,因为一部分基本上是一个完全不同的实体(有价格,几个可能的供应商,......)而一个组合实体没有外部(如:在我们公司外)的属性.

任何输入都表示赞赏!谢谢!

Bra*_*vic 24

您链接的模型无法解决BOM通常具有的一些主要属性:

  • 零件和子组件可以重复使用.例如,在许多组件中使用相同类型的螺栓是常见的.
  • 需要有特定BOM的数量.例如,重要的是要知道一个组件需要(比如说)50个螺栓,但另一个组件可能只需要30个相同类型的螺栓.

这是一个解决这些问题的简单模型:

在此输入图像描述

PART表是顶部装配或子装配或叶部分.它使用公知的"部件号"来标识其行,这些行实际上根本不是数字,并且可以包含非数字字符.

BOM表模拟PART自身的多对多关系.它与任何其他联结表没有什么不同,除了"端点"表实际上是同一个表.这样,一个子组件或部件可以在多个父组件中重复使用.

在这个模型的顶部,您可以相当自然地添加诸如"绘图位置"或"度量单位"之类的东西(例如,油漆可以是BOM的一部分,但以"千克"而不是"碎片"来衡量).


您可能想要在现实中做更多的事情,但这超出了像这样的简单StackOverflow帖子的范围.

例如:

  • 你如何处理变化?你有部分版本?您是否对BOM本身进行了版本?
  • 不同的供应商可能会对基本相同的部件使用不同的部件号.
  • 您可能希望跟踪存储或组装/生产零件的"站点"(仓库或工厂).对于不同的站点,"相同"组件甚至可能具有略微不同的BOM.
  • 您可能想要区分"制造"和"购买"部件.
  • 您是否拥有生命周期工作流程(批准/发布/过时)?
  • 您可能希望存储用户定义的属性.属性通常包括质量,体积和材料等内容,但可能还有许多其他事先无法预见.
  • 您可能希望将物理CAD模型连接到数据库中的数据.
  • 您可能希望禁止某些用户对数据库进行某些更改(例如,采购部门不应该更改装配结构,至少在没有监督的情况下).
  • 等等......

这些是真正的PDM系统往往复杂的一些原因.如果你真的需要所有这些功能,你应该考虑使用商业产品,而不是试图自己重新实现它...