Files
wms-saas/docs/09-database.md
T
2026-09-30 11:11:54 +08:00

1.5 KiB

09 数据库设计

引擎

  • MySQL 8:业务事实数据源
  • Redis 7:缓存 / 队列 / 锁 / 限流(非业务数据源)

必须考虑的业务维度

  • 多租户
  • 多仓库
  • 多客户
  • 多 SKU
  • 批次
  • 库位
  • 库存流水
  • 库存锁定
  • 库存预占
  • 并发库存更新
  • 订单状态流转
  • WMS 作业任务
  • 数据审计

表设计规范

所有表:

  • 使用 InnoDB
  • utf8mb4
  • 合理索引
  • created_at
  • updated_at

重要业务表考虑:

  • deleted_at
  • version(乐观锁)
  • status

但不要为了"统一"而无脑给所有表增加软删除。库存流水等事实数据不应被删除或修改。

核心业务表需包含 tenant_code

见 03-multi-tenancy.md。业务编码的唯一约束应包含租户维度,例如 UNIQUE (tenant_code, sku_code)。

索引

索引必须围绕实际查询设计。特别关注:

  • tenant_code
  • warehouse_code
  • customer_code
  • sku_code
  • order_no
  • inbound_no
  • outbound_no
  • location_code
  • created_at
  • status

复合索引通常以 tenant_code 作为最左列。

设计产出

表结构是 MySQL 建表语句,每张表一个文件,索引在 docs/database/README.md,约定在 docs/database/00-conventions.md。

在写迁移之前,先在 docs/database/ 中产出并确认表结构,把租户、仓库、库位、SKU、库存、库存流水、入库、出库这几个核心模型定死,再开始写 Laravel。迁移与设计文档必须保持一致。