Files
my-mom-system/prd/db/create_md_bom_table.sql
panchengyong c28ada5050 commit content
2026-03-06 02:02:59 +08:00

130 lines
5.9 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ============================================================
-- 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;
--
-- ============================================================