Files
my-mom-system/prd/db/create_md_bom_table.sql

130 lines
5.9 KiB
MySQL
Raw Permalink Normal View History

2026-03-06 02:02:59 +08:00
-- ============================================================
-- 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;
--
-- ============================================================