docs/00-overview.md
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
# 09 数据库设计
|
||||
|
||||
## 引擎
|
||||
|
||||
- MySQL 8:业务事实数据源
|
||||
- Redis 7:缓存 / 队列 / 锁 / 限流(非业务数据源)
|
||||
|
||||
## 必须考虑的业务维度
|
||||
|
||||
- 多租户
|
||||
- 多仓库
|
||||
- 多客户
|
||||
- 多 SKU
|
||||
- 批次
|
||||
- 库位
|
||||
- 库存流水
|
||||
- 库存锁定
|
||||
- 库存预占
|
||||
- 并发库存更新
|
||||
- 订单状态流转
|
||||
- WMS 作业任务
|
||||
- 数据审计
|
||||
|
||||
## 表设计规范
|
||||
|
||||
所有表:
|
||||
|
||||
- 使用 InnoDB
|
||||
- utf8mb4
|
||||
- 合理索引
|
||||
- `created_at`
|
||||
- `updated_at`
|
||||
|
||||
重要业务表考虑:
|
||||
|
||||
- `deleted_at`
|
||||
- `version`(乐观锁)
|
||||
- `status`
|
||||
|
||||
但不要为了"统一"而无脑给所有表增加软删除。库存流水等事实数据不应被删除或修改。
|
||||
|
||||
## 核心业务表需包含 tenant_code
|
||||
|
||||
见 [03-multi-tenancy.md](./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` 作为最左列。
|
||||
|
||||
## 设计产出
|
||||
|
||||
表结构设计统一存放在 [`docs/database/`](./database/README.md)。
|
||||
|
||||
在写迁移之前,先在 `docs/database/` 中产出并确认表结构,把租户、仓库、库位、SKU、库存、库存流水、入库、出库这几个核心模型定死,再开始写 Laravel。迁移与设计文档必须保持一致。
|
||||
Reference in New Issue
Block a user