【问题标题】:Bill of materials and versioning物料清单和版本控制
【发布时间】:2013-09-30 19:44:02
【问题描述】:

对于我们的定制库存管理系统,我们在tpart 表中定义我们的机器零件和组装产品。为了定义物料清单,我们有一个tbom 表。

每个部分都有一个修订版(进行了更改,并且该部分仍然可以与以前的修订版互换;换句话说:两个部分 - 相同的 id - 具有不同的修订版是一对一可替换的)。

我们需要的是修订历史。实现这一目标的最佳方法是什么?

  • tbom 中的复合主键是否正确?
  • 每次创建新修订时,是否需要将之前修订(tbom)中的所有条目复制到新修订的条目中?
  • 当子部件发生更改时,是否所有父部件都必须更新其 BOM 和/或修订版?

或者有一个单独的trevision 表更好吗?

非常感谢任何帮助!

【问题讨论】:

    标签: mysql database-design relational-database entity-relationship


    【解决方案1】:

    我可以为您的案例提供以下设计。

    您可以通过添加新的修订历史表来获得以下好处。

    • 您不必存储(或克隆)parentpart_id 和 subpart_id 每次修订。这将允许您减少表的大小 消除不必要的信息。
    • 您可以为每个 bom 项存储无限数量的修订记录。
    • 您可以通过加入外键来设置更高效的结构。
    • 您可以将其他历史详细信息字段添加到新表中,例如 修订目的,记录问题等。或者,您可以创建 按照新表存储修订的详细信息。

    希望对你有帮助

    【讨论】:

    • 感谢您的回答。两点说明:1)“subpart_id”也是一个外键(来自 tpart)。 2) 我看不到“revision_history”如何使用“tbom_id”。 'tbom' 中的每个 id 都标识了一个部件在其父部件中需要的数量。对于属于 parentpart 的每个子部分,“revision_history”中都有一个条目? 'tbom.date' 和 'revision_history.revision_date' 有什么关系?
    • (X) 需要从 tbom 表中读取 tbom_id 到 revision_history。 (X) 如果 tbom 中的日期值是修订日期,当然没有必要。如果是这样,它应该从 tbom 中删除。
    猜你喜欢
    • 2012-03-29
    • 1970-01-01
    • 2014-04-14
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多