-- ============================================================ -- MOM系统 md_bom 表创建脚本 -- 对应ERP系统: erp_md_bom -- 生成日期: 2026-01-26 -- 兼容 MySQL 5.7+ -- ============================================================ SET NAMES utf8mb4; -- ============================================================ -- 创建 md_bom 表 (BOM表头) -- ============================================================ DROP TABLE IF EXISTS `md_bom`; CREATE TABLE `md_bom` ( `bom_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'BOM ID (主键)', `tenant_id` varchar(20) NOT NULL COMMENT '租户ID', `bom_code` varchar(32) NOT NULL COMMENT 'BOM编码', `bom_name` varchar(100) DEFAULT NULL COMMENT 'BOM名称', `item_id` bigint(20) NOT NULL COMMENT '产品物料ID (外键关联md_item.item_id)', `item_code` varchar(32) NOT NULL COMMENT '产品物料编码 (冗余字段)', `item_name` varchar(100) NOT NULL COMMENT '产品物料名称 (冗余字段)', `item_spec` varchar(200) DEFAULT NULL COMMENT '产品物料规格 (冗余字段)', `unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位', `base_qty` decimal(18,4) NOT NULL DEFAULT '1.0000' COMMENT '基本数量 (母件基数)', `version` varchar(20) DEFAULT NULL COMMENT '版本号', `version_desc` varchar(200) DEFAULT NULL COMMENT '版本说明', `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT 'BOM状态 (DRAFT/APPROVED/OBSOLETE)', `enable_flag` char(1) NOT NULL DEFAULT 'Y' COMMENT '启用状态 (Y/N)', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志 (0存在 1删除)', `create_by` varchar(64) DEFAULT NULL COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`bom_id`), UNIQUE KEY `uk_bom_code` (`bom_code`, `tenant_id`) COMMENT 'BOM编码唯一索引', KEY `idx_bom_item` (`item_id`) COMMENT '产品物料ID索引', KEY `idx_bom_tenant` (`tenant_id`) COMMENT '租户ID索引', KEY `idx_bom_status` (`status`) COMMENT '状态索引', KEY `idx_bom_code` (`bom_code`) COMMENT 'BOM编码索引' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='产品BOM表头 (同步自ERP: erp_md_bom)'; -- ============================================================ -- 表结构说明 -- ============================================================ -- -- 1. 表名: md_bom -- 2. 说明: 存储产品BOM的表头信息,对应ERP系统的erp_md_bom表 -- 3. 主键: bom_id (自增) -- 4. 唯一约束: bom_code + tenant_id (同一租户内BOM编码唯一) -- 5. 外键关联: item_id → md_item.item_id (产品物料) -- -- 6. 与md_product_bom的关系: -- - md_bom (1) ←→ (N) md_product_bom -- - 一个BOM表头可以有多条明细记录 -- - 通过md_product_bom.bom_id外键关联md_bom.bom_id -- -- 7. 与md_item的关系: -- - md_bom.item_id → md_item.item_id (外键) -- - md_item.default_bom_id → md_bom.bom_id (冗余字段,用于快速查询默认BOM) -- - 一个产品可以有多个BOM版本,但只有一个默认BOM -- -- ============================================================ -- 字段映射说明 (ERP → MOM) -- ============================================================ -- -- erp_md_bom.bom_id → md_bom.bom_id -- erp_md_bom.tenant_id → md_bom.tenant_id -- erp_md_bom.bom_code → md_bom.bom_code -- erp_md_bom.bom_name → md_bom.bom_name -- erp_md_bom.item_id → md_bom.item_id -- erp_md_bom.item_code → md_bom.item_code -- erp_md_bom.item_name → md_bom.item_name -- erp_md_bom.unit_name → md_bom.unit_name -- erp_md_bom.base_qty → md_bom.base_qty -- erp_md_bom.version → md_bom.version -- erp_md_bom.version_desc → md_bom.version_desc -- erp_md_bom.status → md_bom.status -- erp_md_bom.enable_flag → md_bom.enable_flag -- erp_md_bom.remark → md_bom.remark -- erp_md_bom.del_flag → md_bom.del_flag -- -- ============================================================ -- 索引说明 -- ============================================================ -- -- 1. PRIMARY KEY (bom_id): 主键索引 -- 2. UNIQUE KEY uk_bom_code (bom_code, tenant_id): BOM编码唯一索引 -- 3. KEY idx_bom_item (item_id): 产品物料ID索引,用于关联查询 -- 4. KEY idx_bom_tenant (tenant_id): 租户ID索引,用于多租户隔离 -- 5. KEY idx_bom_status (status): 状态索引,用于状态筛选 -- 6. KEY idx_bom_code (bom_code): BOM编码索引,用于编码查询 -- -- ============================================================ -- 数据同步规则 -- ============================================================ -- -- 1. 同步方向: ERP → MOM -- 2. 同步频率: 实时/准实时 -- 3. 同步顺序: -- a. 先同步 erp_md_bom → md_bom (表头) -- b. 再同步 erp_md_bom_line → md_product_bom (明细) -- 4. 关联方式: 通过 bom_code 或 bom_id 关联 -- 5. 事务处理: 表头和明细必须在同一事务中同步 -- 6. 删除规则: 删除BOM时,先删除所有明细记录,再删除表头记录 -- -- ============================================================ -- 使用示例 -- ============================================================ -- -- -- 查询产品的所有BOM版本 -- SELECT * FROM md_bom -- WHERE item_id = 123 AND del_flag = '0' -- ORDER BY version DESC; -- -- -- 查询产品的默认BOM(通过md_item表) -- SELECT b.* FROM md_bom b -- INNER JOIN md_item i ON b.bom_id = i.default_bom_id -- WHERE i.item_id = 123 AND b.del_flag = '0'; -- -- -- 查询BOM及其所有明细 -- SELECT b.*, pb.* FROM md_bom b -- LEFT JOIN md_product_bom pb ON b.bom_id = pb.bom_id -- WHERE b.bom_id = 456 AND b.del_flag = '0' AND pb.del_flag = '0' -- ORDER BY pb.line_no; -- -- ============================================================