数据库表结构设计
本目录是 MySQL 8 建表设计稿,每张表一个 .sql 文件。通用规范见 ../09-database.md,命名、类型和库存粒度见 00-conventions.md。
落地方式:某个 Phase 开工时,只把本阶段要用的表写成 Laravel migration,并与这里的 SQL 保持一致。不要一次生成全部 migration,也不要在生产库直接执行这些文件。
表之间没有外键,执行顺序没有依赖。
表清单
| 表 | 说明 | 目录 | Phase |
|---|---|---|---|
| wms_tenant | 租户。SaaS 隔离边界,tenant_code 全局唯一。 | 01-saas |
4 |
| wms_user | 用户。租户内登录账号。 | 01-saas |
4 |
| wms_role | 角色。租户内角色。 | 01-saas |
4 |
| wms_permission | 权限。全局权限码目录,不按租户复制。 | 01-saas |
4 |
| wms_role_permission | 角色权限。租户内角色与全局权限码的绑定。 | 01-saas |
4 |
| wms_user_role | 用户角色。租户内用户与角色的绑定。 | 01-saas |
4 |
| wms_tenant_setting | 租户设置。租户级可配置项,包括定时任务开关。 | 01-saas |
4 |
| wms_number_sequence | 单号序列。按租户、业务类型发号,保证并发下单号不重复。 | 01-saas |
4 |
| wms_warehouse | 仓库。租户下的物理仓库。 | 02-warehouse |
5 |
| wms_zone | 库区。仓库内的功能分区。 | 02-warehouse |
5 |
| wms_location_type | 库位类型。库位的混放规则。 | 02-warehouse |
5 |
| wms_location | 库位。仓库内可存放库存的最小位置,同时保存容量。 | 02-warehouse |
5 |
| wms_location_strategy | 库位策略。上架、分配、拣货的规则。空编码表示该条件不限。 | 02-warehouse |
5 |
| wms_customer | 货主。3PL 的客户。自营租户也建一个默认货主,库存一律落到货主。 | 03-master |
6 |
| wms_customer_warehouse | 货主仓库。货主可以使用哪些仓库。 | 03-master |
6 |
| wms_supplier | 供应商。入库来源供应商。 | 03-master |
6 |
| wms_product | 商品。SKU 的上层商品,属于一个货主。 | 03-master |
6 |
| wms_sku | SKU。库存与订单的最小商品单位,含单件重量和尺寸。 | 03-master |
6 |
| wms_sku_barcode | SKU 条码。SKU 的扫描条码,租户内一条码只对应一个 SKU。 | 03-master |
6 |
| wms_package_spec | 包装规格。SKU 的装箱规格,如一件箱装多少件。 | 03-master |
6 |
| wms_batch | 批次。启用批次或效期管理的 SKU 的批次档案。 | 04-inventory |
7 |
| wms_inventory | 库存余额。某个货主、仓库、库位、SKU、批次上的数量结果。 | 04-inventory |
7 |
| wms_stock_log | 库存流水。库存变化的事实记录,只能追加。 | 04-inventory |
8 |
| wms_inventory_hold | 库存冻结单。把可用库存转为冻结的业务单据。 | 04-inventory |
8 |
| wms_inventory_hold_item | 库存冻结明细。冻结单的库位与数量。 | 04-inventory |
8 |
| wms_stock_adjustment | 库存调整单。盘盈盘亏、报损等人工调整。 | 04-inventory |
8 |
| wms_stock_adjustment_item | 库存调整明细。调整的数量桶与变化量。 | 04-inventory |
8 |
| wms_stocktake | 盘点单。仓库盘点任务。 | 04-inventory |
8 |
| wms_stocktake_item | 盘点明细。系统数量与实盘数量。 | 04-inventory |
8 |
| wms_inventory_alert | 库存预警规则。SKU 在仓库的最低可用量阈值。 | 04-inventory |
8 |
| wms_inbound | 入库单。入库作业的头单据。 | 05-inbound |
9 |
| wms_inbound_item | 入库明细。入库单行,数量列是各作业的汇总结果。 | 05-inbound |
9 |
| wms_inbound_receipt | 收货记录。一张入库单可以分多次收货。 | 05-inbound |
9 |
| wms_inbound_receipt_item | 收货明细。本次实收数量以及与预计的差异。 | 05-inbound |
9 |
| wms_inbound_qc | 入库质检。按收货结果做的质检记录。 | 05-inbound |
9 |
| wms_inbound_putaway | 上架任务。把收货库位的合格库存移到存储库位。 | 05-inbound |
9 |
| wms_order | 统一订单。与具体电商平台解耦的履约订单。 | 06-outbound |
10 |
| wms_order_item | 订单明细。订单要履约的 SKU 与数量。 | 06-outbound |
10 |
| wms_outbound | 出库单。仓库执行单据。一张订单可按仓库拆成多张出库单。 | 06-outbound |
10 |
| wms_outbound_item | 出库明细。出库单行及各作业数量汇总。 | 06-outbound |
10 |
| wms_allocation | 库存分配。出库行预占到具体库位批次的记录,也是库存锁定明细。 | 06-outbound |
10 |
| wms_wave | 波次。把多张出库单组成一次拣货。 | 06-outbound |
11 |
| wms_wave_outbound | 波次出库。波次包含的出库单。 | 06-outbound |
11 |
| wms_picking_task | 拣货任务。一次派给拣货人的任务,可来自波次或单张出库单。 | 06-outbound |
11 |
| wms_picking_task_item | 拣货任务明细。按库位给出的应拣与实拣数量。 | 06-outbound |
11 |
| wms_package | 包裹。复核通过后的打包结果。打包不改变库存数量桶。 | 06-outbound |
11 |
| wms_package_item | 包裹明细。包裹内的 SKU 数量。 | 06-outbound |
11 |
| wms_return_order | 退货单。客户退回仓库的单据。 | 07-return |
9 |
| wms_return_order_item | 退货明细。退货数量、质检结论和处置方式。 | 07-return |
9 |
| wms_carrier | 承运商。租户配置的承运商主数据。 | 08-logistics |
12 |
| wms_logistics_service | 物流服务。承运商下的服务产品,如标准、快递、经济。 | 08-logistics |
12 |
| wms_logistics_channel | 物流渠道。仓库实际可选用的承运商服务。 | 08-logistics |
12 |
| wms_freight_rule | 运费规则。渠道上的重量段首重续重价格。 | 08-logistics |
12 |
| wms_shipment | 发货单。包裹交给承运商的记录。 | 08-logistics |
11 |
| wms_waybill | 面单。发货单对应的面单文件,允许作废后重开。 | 08-logistics |
12 |
| wms_tracking_event | 轨迹事件。运单轨迹,按时间追加。 | 08-logistics |
12 |
| wms_platform_shop | 平台店铺。第三方平台连接。新增平台不改订单表。 | 09-integration |
14 |
| wms_sync_task | 同步任务。订单、库存、轨迹等拉取任务的进度。 | 09-integration |
14 |
| wms_webhook_log | Webhook 日志。平台回调的接收与处理结果,用于验签后的幂等。 | 09-integration |
14 |
| wms_login_log | 登录日志。登录成功与失败记录。 | 10-audit |
4 |
| wms_operation_log | 操作日志。关键业务数据谁在何时改了什么。 | 10-audit |
4 |
| wms_api_log | API 日志。接口访问记录,不保存完整报文。 | 10-audit |
4 |
| wms_status_log | 状态变更日志。订单、入库、出库等单据的状态迁移。 | 10-audit |
4 |
领域关系
erDiagram
wms_tenant ||--o{ wms_warehouse : tenant_code
wms_customer ||--o{ wms_sku : customer_code
wms_warehouse ||--o{ wms_zone : warehouse_code
wms_zone ||--o{ wms_location : zone_code
wms_sku ||--o{ wms_inventory : sku_code
wms_location ||--o{ wms_inventory : location_code
wms_inventory ||--o{ wms_stock_log : "同一事务"
wms_order ||--o{ wms_order_item : order_no
wms_order ||--o{ wms_outbound : order_no
wms_outbound ||--o{ wms_outbound_item : outbound_no
wms_outbound ||--o{ wms_allocation : outbound_no
wms_allocation ||--o{ wms_picking_task_item : allocation_no
wms_outbound ||--o{ wms_package : outbound_no
wms_package ||--|| wms_shipment : package_no
wms_inbound ||--o{ wms_inbound_item : inbound_no
wms_inbound ||--o{ wms_inbound_receipt : inbound_no
wms_inbound ||--o{ wms_inbound_putaway : inbound_no
关联字段都是业务编码。wms_stock_log.inventory_id 只用于和余额行对账。