发布时间:2026/8/20 22:53:07
【WMS学习笔记系列】04-数据库设计 04 — 数据库设计4.1 ER 图核心实体关系4.2 DDL 建表语句4.2.1 仓库相关-- 仓库表 CREATE TABLE wms_warehouse ( id BIGINT NOT NULL AUTO_INCREMENT COMMENT 主键, warehouse_code VARCHAR(32) NOT NULL COMMENT 仓库编码, warehouse_name VARCHAR(64) NOT NULL COMMENT 仓库名称, address VARCHAR(256) DEFAULT NULL COMMENT 仓库地址, contact_person VARCHAR(32) DEFAULT NULL COMMENT 联系人, contact_phone VARCHAR(20) DEFAULT NULL COMMENT 联系电话, status TINYINT NOT NULL DEFAULT 1 COMMENT 状态1-启用 0-禁用, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_code (warehouse_code) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT仓库表; -- 库区表 CREATE TABLE wms_zone ( id BIGINT NOT NULL AUTO_INCREMENT, warehouse_id BIGINT NOT NULL COMMENT 所属仓库ID, zone_code VARCHAR(16) NOT NULL COMMENT 库区编码, zone_name VARCHAR(64) NOT NULL COMMENT 库区名称, zone_type VARCHAR(16) NOT NULL COMMENT 库区类型STORAGE/PICKING/STAGING/RETURN/DAMAGED, abc_class CHAR(1) DEFAULT NULL COMMENT ABC分类A/B/C, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_warehouse_zone (warehouse_id, zone_code), KEY idx_warehouse_id (warehouse_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT库区表; -- 库位表 CREATE TABLE wms_location ( id BIGINT NOT NULL AUTO_INCREMENT, warehouse_id BIGINT NOT NULL, zone_id BIGINT NOT NULL, location_code VARCHAR(32) NOT NULL COMMENT 库位编码, location_type VARCHAR(16) NOT NULL COMMENT 类型STORAGE/PICKING/STAGING, max_volume DECIMAL(10,3) DEFAULT NULL COMMENT 最大体积(m³), max_weight DECIMAL(10,3) DEFAULT NULL COMMENT 最大承重(kg), max_quantity INT DEFAULT NULL COMMENT 最大存放数量, status VARCHAR(16) NOT NULL DEFAULT IDLE COMMENT 状态IDLE/OCCUPIED/FROZEN/DISABLED, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_code (location_code), KEY idx_zone_id (zone_id), KEY idx_warehouse_zone (warehouse_id, zone_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT库位表;4.2.2 商品与货主-- 货主表 CREATE TABLE wms_owner ( id BIGINT NOT NULL AUTO_INCREMENT, owner_code VARCHAR(32) NOT NULL COMMENT 货主编码, owner_name VARCHAR(64) NOT NULL COMMENT 货主名称, owner_type VARCHAR(16) NOT NULL COMMENT 类型SUPPLIER/CUSTOMER/INTERNAL, contact_person VARCHAR(32) DEFAULT NULL, contact_phone VARCHAR(20) DEFAULT NULL, status TINYINT NOT NULL DEFAULT 1, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_code (owner_code) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT货主表; -- 商品表SKU CREATE TABLE wms_sku ( id BIGINT NOT NULL AUTO_INCREMENT, owner_id BIGINT NOT NULL COMMENT 所属货主ID, sku_code VARCHAR(32) NOT NULL COMMENT SKU编码, sku_name VARCHAR(128) NOT NULL COMMENT SKU名称, barcode VARCHAR(32) DEFAULT NULL COMMENT 条码, category VARCHAR(64) DEFAULT NULL COMMENT 商品分类, unit VARCHAR(8) NOT NULL DEFAULT PCS COMMENT 单位, specification VARCHAR(256) DEFAULT NULL COMMENT 规格描述, weight DECIMAL(10,3) DEFAULT NULL COMMENT 单件重量(kg), volume DECIMAL(10,3) DEFAULT NULL COMMENT 单件体积(m³), safety_stock INT NOT NULL DEFAULT 0 COMMENT 安全库存, max_stock INT DEFAULT NULL COMMENT 最大库存, abc_class CHAR(1) NOT NULL DEFAULT B COMMENT ABC分类, shelf_life_days INT DEFAULT NULL COMMENT 保质期天数, status TINYINT NOT NULL DEFAULT 1 COMMENT 状态1-启用 0-禁用, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_sku_code (sku_code), KEY idx_owner_id (owner_id), KEY idx_category (category) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT商品表;4.2.3 库存-- 库存表 CREATE TABLE wms_inventory ( id BIGINT NOT NULL AUTO_INCREMENT, warehouse_id BIGINT NOT NULL, sku_id BIGINT NOT NULL, location_id BIGINT NOT NULL, batch_id BIGINT DEFAULT NULL COMMENT 批次ID, owner_id BIGINT NOT NULL, quantity INT NOT NULL DEFAULT 0 COMMENT 数量, locked_quantity INT NOT NULL DEFAULT 0 COMMENT 锁定数量已被订单预占, status VARCHAR(16) NOT NULL DEFAULT AVAILABLE COMMENT AVAILABLE/LOCKED/FROZEN/DAMAGED/EXPIRED, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_sku_warehouse (sku_id, warehouse_id), KEY idx_location_id (location_id), KEY idx_batch_id (batch_id), KEY idx_owner_id (owner_id), UNIQUE KEY uk_inv (warehouse_id, sku_id, location_id, batch_id, owner_id, status) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT库存表; -- 库存流水表审计用 CREATE TABLE wms_inventory_log ( id BIGINT NOT NULL AUTO_INCREMENT, warehouse_id BIGINT NOT NULL, sku_id BIGINT NOT NULL, location_id BIGINT NOT NULL, batch_id BIGINT DEFAULT NULL, change_type VARCHAR(32) NOT NULL COMMENT 变动类型INBOUND/OUTBOUND/MOVE/ADJUST/COUNT, change_quantity INT NOT NULL COMMENT 变动数量正增加负减少, before_quantity INT NOT NULL COMMENT 变动前数量, after_quantity INT NOT NULL COMMENT 变动后数量, reference_no VARCHAR(64) DEFAULT NULL COMMENT 关联单号, operator_id BIGINT DEFAULT NULL COMMENT 操作人ID, remark VARCHAR(256) DEFAULT NULL, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_sku_warehouse_time (sku_id, warehouse_id, create_time), KEY idx_reference_no (reference_no), KEY idx_create_time (create_time) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT库存流水表; -- 批次表 CREATE TABLE wms_batch ( id BIGINT NOT NULL AUTO_INCREMENT, sku_id BIGINT NOT NULL, batch_no VARCHAR(32) NOT NULL COMMENT 批次号, production_date DATE DEFAULT NULL COMMENT 生产日期, expiry_date DATE DEFAULT NULL COMMENT 过期日期, status VARCHAR(16) NOT NULL DEFAULT ACTIVE COMMENT ACTIVE/EXPIRED, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_batch (sku_id, batch_no), KEY idx_expiry_date (expiry_date) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT批次表;4.2.4 入库相关-- 入库单表 CREATE TABLE wms_inbound_order ( id BIGINT NOT NULL AUTO_INCREMENT, asn_no VARCHAR(32) NOT NULL COMMENT ASN单号, warehouse_id BIGINT NOT NULL, owner_id BIGINT NOT NULL COMMENT 货主ID供应商, order_type VARCHAR(16) NOT NULL COMMENT 类型PURCHASE/RETURN/TRANSFER/OTHER, status VARCHAR(16) NOT NULL COMMENT NOTIFIED/RECEIVING/RECEIVED/PUTTING/COMPLETED/CANCELLED, expected_arrive_time DATETIME DEFAULT NULL COMMENT 预计到货时间, actual_arrive_time DATETIME DEFAULT NULL COMMENT 实际到货时间, operator_id BIGINT DEFAULT NULL, remark VARCHAR(256) DEFAULT NULL, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_asn_no (asn_no), KEY idx_warehouse_status (warehouse_id, status), KEY idx_create_time (create_time) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT入库单表; -- 入库明细表 CREATE TABLE wms_inbound_detail ( id BIGINT NOT NULL AUTO_INCREMENT, inbound_order_id BIGINT NOT NULL, sku_id BIGINT NOT NULL, expected_quantity INT NOT NULL COMMENT 预计数量, actual_quantity INT NOT NULL DEFAULT 0 COMMENT 实收数量, batch_id BIGINT DEFAULT NULL, location_id BIGINT DEFAULT NULL COMMENT 上架库位, status VARCHAR(16) NOT NULL DEFAULT PENDING COMMENT PENDING/RECEIVED/PUTAWAY/COMPLETED, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_inbound_order_id (inbound_order_id), KEY idx_sku_id (sku_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT入库明细表;4.2.5 出库相关-- 出库单表 CREATE TABLE wms_outbound_order ( id BIGINT NOT NULL AUTO_INCREMENT, order_no VARCHAR(32) NOT NULL COMMENT 出库单号, source_order_no VARCHAR(64) DEFAULT NULL COMMENT 来源订单号OMS, warehouse_id BIGINT NOT NULL, owner_id BIGINT NOT NULL COMMENT 货主ID客户, wave_id BIGINT DEFAULT NULL COMMENT 波次ID, status VARCHAR(16) NOT NULL COMMENT RECEIVED/WAVING/ALLOCATED/PICKING/PICKED/CHECKING/CHECKED/SHIPPED/CANCELLED, carrier VARCHAR(64) DEFAULT NULL COMMENT 承运商, tracking_no VARCHAR(64) DEFAULT NULL COMMENT 快递单号, expected_ship_time DATETIME DEFAULT NULL COMMENT 期望发货时间, actual_ship_time DATETIME DEFAULT NULL COMMENT 实际发货时间, operator_id BIGINT DEFAULT NULL, remark VARCHAR(256) DEFAULT NULL, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_order_no (order_no), KEY idx_warehouse_status (warehouse_id, status), KEY idx_wave_id (wave_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT出库单表; -- 出库明细表 CREATE TABLE wms_outbound_detail ( id BIGINT NOT NULL AUTO_INCREMENT, outbound_order_id BIGINT NOT NULL, sku_id BIGINT NOT NULL, ordered_quantity INT NOT NULL COMMENT 订单数量, allocated_quantity INT NOT NULL DEFAULT 0 COMMENT 已分配数量, picked_quantity INT NOT NULL DEFAULT 0 COMMENT 已拣数量, checked_quantity INT NOT NULL DEFAULT 0 COMMENT 复核通过数量, shipped_quantity INT NOT NULL DEFAULT 0 COMMENT 发货数量, batch_id BIGINT DEFAULT NULL, location_id BIGINT DEFAULT NULL, status VARCHAR(16) NOT NULL DEFAULT PENDING, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_outbound_order_id (outbound_order_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT出库明细表; -- 波次表 CREATE TABLE wms_wave ( id BIGINT NOT NULL AUTO_INCREMENT, wave_no VARCHAR(32) NOT NULL COMMENT 波次号, warehouse_id BIGINT NOT NULL, wave_type VARCHAR(16) NOT NULL COMMENT 策略类型ORDER_COUNT/SKU_COUNT/INTERVAL/ZONE/CARRIER, status VARCHAR(16) NOT NULL COMMENT CREATED/PICKING/PICKED/COMPLETED, order_count INT NOT NULL DEFAULT 0 COMMENT 包含订单数, total_sku_count INT NOT NULL DEFAULT 0 COMMENT SKU总数, total_quantity INT NOT NULL DEFAULT 0 COMMENT 商品总数量, operator_id BIGINT DEFAULT NULL, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_wave_no (wave_no) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT波次表;4.2.6 盘点相关-- 盘点计划表 CREATE TABLE wms_count_plan ( id BIGINT NOT NULL AUTO_INCREMENT, plan_no VARCHAR(32) NOT NULL COMMENT 盘点计划号, warehouse_id BIGINT NOT NULL, count_type VARCHAR(16) NOT NULL COMMENT DYNAMIC/CYCLE/FULL/RANDOM, count_mode VARCHAR(16) NOT NULL COMMENT OPEN(明盘)/BLIND(盲盘), status VARCHAR(16) NOT NULL COMMENT CREATED/COUNTING/DIFF_CHECK/COMPLETED, planned_start_time DATETIME DEFAULT NULL, planned_end_time DATETIME DEFAULT NULL, actual_start_time DATETIME DEFAULT NULL, actual_end_time DATETIME DEFAULT NULL, creator_id BIGINT DEFAULT NULL, remark VARCHAR(256) DEFAULT NULL, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_plan_no (plan_no), KEY idx_warehouse_status (warehouse_id, status) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT盘点计划表; -- 盘点任务表 CREATE TABLE wms_count_task ( id BIGINT NOT NULL AUTO_INCREMENT, plan_id BIGINT NOT NULL, location_id BIGINT NOT NULL, assignee_id BIGINT DEFAULT NULL COMMENT 分配人ID, status VARCHAR(16) NOT NULL DEFAULT PENDING COMMENT PENDING/COUNTING/FIRST_DONE/RECHECKING/DONE, first_count_id BIGINT DEFAULT NULL, recheck_count_id BIGINT DEFAULT NULL, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_plan_id (plan_id), KEY idx_assignee_status (assignee_id, status) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT盘点任务表; -- 盘点明细表 CREATE TABLE wms_count_detail ( id BIGINT NOT NULL AUTO_INCREMENT, task_id BIGINT NOT NULL, sku_id BIGINT NOT NULL, batch_id BIGINT DEFAULT NULL, system_quantity INT NOT NULL COMMENT 系统数量, count_quantity INT NOT NULL COMMENT 盘点数量, difference INT NOT NULL COMMENT 差异盘点-系统, round TINYINT NOT NULL DEFAULT 1 COMMENT 轮次1-初盘 2-复盘, operator_id BIGINT DEFAULT NULL, remark VARCHAR(256) DEFAULT NULL, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_task_id (task_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT盘点明细表;4.3 索引策略4.3.1 高频查询索引查询场景SQL 示例建议索引按仓库SKU查库存WHERE warehouse_id? AND sku_id?(warehouse_id, sku_id)按库位查库存WHERE location_id?(location_id)按单号查入库单WHERE asn_no?唯一索引 (asn_no)按状态仓库查出库单WHERE warehouse_id? AND status?(warehouse_id, status)按时间范围查流水WHERE create_time BETWEEN ? AND ?(create_time)按SKU仓库时间查流水WHERE sku_id? AND warehouse_id? AND create_time?(sku_id, warehouse_id, create_time)4.3.2 索引设计原则选择性高的列优先建索引如单号、SKU编码联合索引遵循最左前缀原则避免在索引列上使用函数如 DATE(create_time) 会导致索引失效定期分析慢查询日志优化索引4.4 数据归档策略库存流水表wms_inventory_log数据增长最快 建议按月分区或定期归档 方案保留最近 6 个月数据在主表更早数据迁移到归档表 ALTER TABLE wms_inventory_log PARTITION BY RANGE (TO_DAYS(create_time)) ( PARTITION p202601 VALUES LESS THAN (TO_DAYS(2026-02-01)), PARTITION p202602 VALUES LESS THAN (TO_DAYS(2026-03-01)), -- ... 按月分区 );

相关新闻

2026/8/20 22:53:07

Godot 4 3D游戏UI开发实战:模块化设计与信号通信

如果你正在用 Godot 4 开发 3D 游戏,尤其是像地牢爬行者这类带有角色扮演或动作元素的游戏,那么一个直观、响应迅速且美观的用户界面(UI)绝对是提升玩家体验的关键。然而,很多开发者,特别是从 Unity 或其他…

2026/8/20 22:53:07

4月SUV销量榜深度解析:哈弗H6守成之道与宝骏530破局策略

1. 月度销量榜的“晴雨表”价值 又到了每月中旬,汽车圈里最热闹、也最牵动神经的时刻——月度销量排行榜单出炉。对于从业者、媒体和消费者来说,这份榜单就像一份定期的“体检报告”,它不只是一串冰冷的数字排名,更是市场脉搏最直…

2026/8/20 23:58:12

领克01全域安全理念解析:从被动防御到主动守护的汽车安全进化

1. 从“被动防御”到“主动守护”:领克01安全理念的底层逻辑 聊到汽车安全,很多人的第一反应还是“这车钢板厚不厚”、“有几个气囊”、“碰撞测试几颗星”。这没错,但这是最基础、最被动的安全。就像我们以前买防盗门,只看钢板厚…

2026/8/20 23:58:12

汽车核心零部件更换周期全解析:告别盲开,科学养车指南

1. 从“坏了再换”到“按时更换”:一个被忽视的养车逻辑 很多车主朋友,包括我自己刚开车那会儿,都信奉一个朴素的养车原则: “没坏就不用换” 。听起来很省钱,很实在,对吧?直到我的车在高速上…

2026/8/20 23:58:12

技术面试准备:从算法到系统设计的全方位指南

1. 面试题学习的核心价值与误区面试题学习从来都不是简单的刷题背答案。我见过太多候选人把LeetCode刷穿却在实际面试中翻车,也遇到过基础知识扎实但缺乏解题思路的求职者。真正有效的面试准备,应该是知识体系、解题思维和表达能力的三重修炼。面试题本质…

2026/8/20 23:53:12

碳纤维动力电池箱体设计:轻量化、安全性与制造工艺全解析

1. 从“铁皮盒子”到“碳纤维铠甲”:动力电池箱体的进化逻辑如果你拆开过一台主流电动车的底盘,大概率会看到一个由钢板或铝合金焊接而成的“大盒子”,里面规整地码放着电芯模组。这个“大盒子”就是动力电池的箱体,它负责容纳、固…

2026/8/20 10:17:13

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/20 20:11:18

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/20 8:35:23

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/20 9:15:29

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/19 16:39:34

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…