2. 多层级BOM结构:单层BOM与多层BOM的区别、父件与子件的关系、BOM的层级编码规则
在制造物料协同体系中,BOM(Bill of Materials,物料清单)的结构深度直接决定了物料需求计算、成本核算与生产排程的精度。本章聚焦于BOM的两种基本结构形态——单层BOM与多层BOM,剖析父件与子件的层级关系,并给出标准化的层级编码规则,为后续分配策略设计奠定结构基础。
2.1 单层BOM与多层BOM的核心区别
单层BOM仅描述一个父件与其直接子件的关系,不展开子件自身的下级结构;多层BOM则递归展开至最底层原材料或外购件,形成完整的树形清单。两者的适用场景与信息粒度差异显著。
| 对比维度 | 单层BOM | 多层BOM |
|---|---|---|
| 结构深度 | 仅1级(父件→直接子件) | ≥2级,递归至原材料/外购件 |
| 数据冗余 | 低,每个装配关系只存一次 | 高,子件结构在多个父件下重复存储 |
| 查询效率 | 快,无需递归 | 慢,需逐层展开或预计算 |
| 变更影响范围 | 局部,仅影响直接父件 | 全局,底层变更可能波及所有上层父件 |
| 典型应用 | 简单装配、维修BOM、快速报价 | 复杂制造、MRP运算、成本滚算 |
| ERP/MES实现方式 | 单表结构,父件ID+子件ID | 多表关联或单表加层级字段 |
关键认知:单层BOM是“关系记录”,多层BOM是“结构树”。在分配策略设计中,单层BOM适合按订单配置的快速分配,多层BOM则支撑基于通用件、替代料的全局优化分配。
2.2 父件与子件的关系模型
父件(Parent Item)与子件(Child Item)是BOM中最基本的二元关系。每个关系包含三个核心属性:数量关系(用量)、位置关系(工序/工位)、时序关系(提前期偏移)。
- 数量关系: 1个父件需要N个子件,支持固定用量、可变用量(如按长度/重量)、损耗率。
- 位置关系: 子件在父件中的装配工位或工序节点,影响物料配送的物理路径。
- 时序关系: 子件相对于父件开工/完工的提前或滞后天数,用于拉动式配送。
工程提示:在多层BOM中,同一个物料可能在不同层级中既作为父件(在下一级)又作为子件(在上一级)。这种“中间件”身份是BOM递归展开的核心,也是分配策略中“层级穿透”的难点。
2.3 BOM的层级编码规则
层级编码(Level Code)是BOM结构数字化的基础。常见的编码方案有三种:缩进式编码、点分式编码、整数层级码。以下为推荐的标准规则:
| 编码方案 | 格式示例 | 优点 | 缺点 |
|---|---|---|---|
| 缩进式 | L0, L1, L2, … | 直观,适合人工阅读 | 不便于程序排序 |
| 点分式 | 1, 1.1, 1.1.1, … | 保留父子路径信息 | 层级深度受限,字符串排序需特殊处理 |
| 整数层级码 | 0, 1, 2, 3, … | 排序快,适合MRP递归 | 丢失路径信息 |
推荐实践:在制造执行系统中采用整数层级码 + 父件ID索引的组合方式。整数层级码用于快速过滤某一深度的所有物料,父件ID索引用于向上追溯完整路径。
-- 示例:BOM层级编码表结构(整数层级码方案)
CREATE TABLE bom_structure (
bom_id INT PRIMARY KEY,
parent_item_id VARCHAR(50), -- 父件物料编码
child_item_id VARCHAR(50), -- 子件物料编码
quantity DECIMAL(10,4), -- 用量
level_code INT, -- 整数层级码:0=顶层成品,1=一级子件,2=二级子件...
sequence_no INT, -- 同一父件下的排序号
effective_date DATE,
expire_date DATE
);
避坑提醒:不要将层级编码与物料编码混用。物料编码应保持全局唯一且与层级无关,层级编码只描述BOM结构中的位置。混用会导致物料重用(通用件)时编码冲突。
2.4 多层级BOM结构图(单层 vs 多层对比)
以下SVG图展示了一个典型产品“电动工具”的单层BOM与多层BOM结构对比,直观呈现父件-子件关系及层级编码的分配方式。
2.5 层级编码在分配策略中的关键作用
层级编码不仅是BOM结构的数字化标签,更是物料分配策略中“按层分配”与“跨层穿透”的操作锚点。以下为三个典型应用场景:
- 按层齐套分配: 同一层级码的物料必须同时齐套才能开始装配,层级码作为分配批次的分组键。
- 通用件跨层分配: 当同一物料出现在多个层级(如标准件M6螺栓在L1和L3同时出现),层级码帮助系统识别该物料在不同深度的需求,避免重复分配或漏分配。
- 替代料层级约束: 替代关系通常限定在同一层级内,层级码作为替代规则生效范围的过滤器。
分配策略设计要点: 在多层BOM中,建议将层级码作为分配优先级的第一排序字段。先分配高层级(靠近成品)的物料,再分配低层级物料,确保装配顺序与物料到达时序一致,避免低层级物料提前占用库存导致高层级缺料。
2.6 多层级BOM的物料分配流程
以下SVG图展示了一个基于层级编码的物料分配流程,从顶层成品需求到底层原材料分配,体现层级码在每一步中的控制作用。
2.7 常见问题与避坑指南
问题1:层级码与BOM版本混淆
层级码描述的是结构深度,BOM版本描述的是结构变更历史。两者应独立管理,不要将版本号编码进层级码中。
问题2:虚拟件(Phantom Item)的层级处理
虚拟件在BOM中仅用于简化结构,不实际存储或分配。建议将虚拟件的层级码标记为特殊值(如-1),在分配时直接跳过,将其子件提升至虚拟件的父层级参与分配。
最佳实践: 在ERP系统中,建议为BOM结构表建立联合索引(parent_item_id, level_code, sequence_no),以加速按层级码的递归查询和分配排序。同时,定期运行层级码完整性检查脚本,确保没有环形引用或层级码断裂。