4 基于混合链表结构的单BOM一致性维护方法
BOM主要有两种常用的存储结构,多层BOM和单层BOM。多层BOM采用“单父—多子”的数据结构,详细记录了产品零部件的层次号,零部件的标识号以及零部件在产品树中的相应顺序号, 只要存在于不同零部件中,都要再记录1 次,数据库存储的记录数和产品包含的零部件数目相等,因此,数据量和数据冗余都比较大。此外, 由于采用“单父—多子”的数据结构,其层次结构只能表现为“产品—零件”,而不是“产品—部件—零件”, 无法完整地表达产品真实的层次结构。多层BOM的优点是数据索引效率高,这种结构对采购和库存BOM十分有用。
单层BOM采用“单父—单子”的数据结构,只记录相邻层次的零部件物料的单层对应关系, 也就是对BOM表中每一种零部件装配关系只记录1 次, 对相同父子关系合并, 并累计入数据库记录表的数据项中。单层BOM能够很好反映真实的产品层次结构,并且每种层次结构只记录1 次。因此,数据记录和数据的冗余都比较少。但是, 其数据索引需要配合一定的算法和程序, 存在一个计算效率问题。因为注射模是一个层次结构复杂的产品, 索引和映射计算会严重影响系统的性能, 因此提高索引效率是注射模BOM系统亟待解决的一个问题。
无论采用多层或单层BOM, 都无法很好解决数据冗余问题, 如图2 所示结构, 包含2 个部件C , 当一个部件C修改时, 另一个就面临冗余所带来的不一致问题。

针对以上问题, 提出了一种混合链表结构来表达BOM的存储格式, 如表2 所示。该结构保持了多层BOM关系表索引效率高的特点,通过产品层次号可以很容易查到不同层次所包含的零部件信息, 基于这些信息能够方便建立采购和库存BOM。将链表结构引入多层BOM关系表, 通过父子链, 可以方便地进行正反向索引, 建立真实的产品结构树。混合链表底层数据单元的结构如表3 所示, 由于采用链式结构,当修改单元数据时,所有引用了该零件的部件的相应数据都将同时被修改, 从而实现了最终消除数据冗余的目的。

5 应用实例
根据上文所提出的一致性维护方法, 在PDM/ERP 环境下采用Microsoft Visual C + + 6. 0 + ASP 工具开发了面向注射模制造的BOM管理系统,系统利用Oracle8. 0对数据库进行管理。系统的设计实例如图3 所示。

6 结束语
结合当前注射模数据管理特点和发展趋势, 提出了一种注射模PDM/ERP系统BOM一致性维护方法。基于映射表设计了BOM映射关系,解决了多个BOM间数据转换的一致性问题。基于混合链表结构设计了BOM存储格式, 解决了单个BOM索引效率和数据冗余问题。经过实际应用, 证明该方法能够有效解决注射模PDM/ERP系统BOM数据的一致性问题。