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

187 lines
7.0 KiB
Markdown
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.
# 客户、供应商、商品、SKU
约定见 [00-conventions.md](./00-conventions.md)。Phase 1 锁定,Phase 6 写迁移。
`customer` 是货主,不是商城买家。3PL 场景下库存、商品、订单都归属某个货主。
`sku_code` 在租户内唯一。两个货主不能共用同一个 SKU 编码;需要区分时由租户分配不同编码。
## wms_customer 客户(货主)
用途:租户服务的货主。
| 字段 | 类型 | 可空 | 默认 | 说明 |
| --- | --- | --- | --- | --- |
| id | BIGINT UNSIGNED | N | AUTO_INCREMENT | 内部主键 |
| tenant_code | VARCHAR(32) | N | | 租户编码 |
| customer_code | VARCHAR(64) | N | | 客户编码 |
| name | VARCHAR(128) | N | | 名称 |
| status | VARCHAR(32) | N | active | 状态 |
| created_at | TIMESTAMP | Y | | |
| updated_at | TIMESTAMP | Y | | |
| deleted_at | TIMESTAMP | Y | | 软删除 |
索引:
| 名称 | 类型 | 字段 | 支撑的查询 |
| --- | --- | --- | --- |
| uk_tenant_customer_code | UNIQUE | (tenant_code, customer_code) | 按客户编码查找 |
| idx_tenant_status | INDEX | (tenant_code, status) | 列表筛选 |
状态:`active`、`disabled`。
关联:商品、库存、入库、出库、订单带 `customer_code`。
并发 / 审计:已有库存或未完成单据时不能软删。变更写 `wms_operation_log`。
## wms_supplier 供应商
用途:入库来源。`customer_code` 为空表示租户共用供应商,有值表示该货主的供应商。
| 字段 | 类型 | 可空 | 默认 | 说明 |
| --- | --- | --- | --- | --- |
| id | BIGINT UNSIGNED | N | AUTO_INCREMENT | 内部主键 |
| tenant_code | VARCHAR(32) | N | | 租户编码 |
| supplier_code | VARCHAR(64) | N | | 供应商编码 |
| customer_code | VARCHAR(64) | Y | | 所属货主,空为租户共用 |
| name | VARCHAR(128) | N | | 名称 |
| status | VARCHAR(32) | N | active | 状态 |
| created_at | TIMESTAMP | Y | | |
| updated_at | TIMESTAMP | Y | | |
| deleted_at | TIMESTAMP | Y | | 软删除 |
索引:
| 名称 | 类型 | 字段 | 支撑的查询 |
| --- | --- | --- | --- |
| uk_tenant_supplier_code | UNIQUE | (tenant_code, supplier_code) | 按供应商编码查找 |
| idx_tenant_customer | INDEX | (tenant_code, customer_code) | 某货主的供应商 |
状态:`active`、`disabled`。
关联:`wms_inbound.supplier_code`、`wms_batch.supplier_code`。
并发 / 审计:被未完成入库单引用时不能软删。
## wms_product 商品
用途:SKU 的上层商品,归属货主。
| 字段 | 类型 | 可空 | 默认 | 说明 |
| --- | --- | --- | --- | --- |
| id | BIGINT UNSIGNED | N | AUTO_INCREMENT | 内部主键 |
| tenant_code | VARCHAR(32) | N | | 租户编码 |
| customer_code | VARCHAR(64) | N | | 货主 |
| product_code | VARCHAR(64) | N | | 商品编码,租户内唯一 |
| product_name | VARCHAR(255) | N | | 名称 |
| status | VARCHAR(32) | N | active | 状态 |
| created_at | TIMESTAMP | Y | | |
| updated_at | TIMESTAMP | Y | | |
| deleted_at | TIMESTAMP | Y | | 软删除 |
索引:
| 名称 | 类型 | 字段 | 支撑的查询 |
| --- | --- | --- | --- |
| uk_tenant_product_code | UNIQUE | (tenant_code, product_code) | 按商品编码查找 |
| idx_tenant_customer_status | INDEX | (tenant_code, customer_code, status) | 货主下的商品列表 |
状态:`active`、`disabled`。
关联:`wms_sku.product_code`。
并发 / 审计:下属 SKU 仍存在时不能软删。
## wms_sku SKU
用途:库存与单据的基本物料。数量的「1」等于本表的基本单位。
| 字段 | 类型 | 可空 | 默认 | 说明 |
| --- | --- | --- | --- | --- |
| id | BIGINT UNSIGNED | N | AUTO_INCREMENT | 内部主键 |
| tenant_code | VARCHAR(32) | N | | 租户编码 |
| customer_code | VARCHAR(64) | N | | 货主 |
| product_code | VARCHAR(64) | N | | 商品编码 |
| sku_code | VARCHAR(64) | N | | SKU 编码,租户内唯一 |
| sku_name_cn | VARCHAR(255) | N | | 中文名称 |
| sku_name_en | VARCHAR(255) | N | | 英文名称 |
| sku_unit | VARCHAR(32) | N | pcs | 基本单位 |
| length_cm | DECIMAL(10,2) | Y | | 长,厘米 |
| width_cm | DECIMAL(10,2) | Y | | 宽,厘米 |
| height_cm | DECIMAL(10,2) | Y | | 高,厘米 |
| weight_g | DECIMAL(16,4) | Y | | 重量,克 |
| status | VARCHAR(32) | N | active | 状态 |
| created_at | TIMESTAMP | Y | | |
| updated_at | TIMESTAMP | Y | | |
| deleted_at | TIMESTAMP | Y | | 软删除 |
索引:
| 名称 | 类型 | 字段 | 支撑的查询 |
| --- | --- | --- | --- |
| uk_tenant_sku_code | UNIQUE | (tenant_code, sku_code) | 按 SKU 编码查找 |
| idx_tenant_customer_product | INDEX | (tenant_code, customer_code, product_code) | 商品下的 SKU |
| idx_tenant_customer_status | INDEX | (tenant_code, customer_code, status) | 货主下的 SKU 列表 |
状态:`active`、`disabled`。停用后禁止新的入库与分配,已有库存仍可出完。
关联:条码、包装、库存、单据明细。
并发 / 审计:存在非零库存时不能软删。变更写 `wms_operation_log`。
## wms_sku_barcode 条码
用途:一个 SKU 多条码。扫描时按租户内条码定位 SKU。
| 字段 | 类型 | 可空 | 默认 | 说明 |
| --- | --- | --- | --- | --- |
| id | BIGINT UNSIGNED | N | AUTO_INCREMENT | 内部主键 |
| tenant_code | VARCHAR(32) | N | | 租户编码 |
| sku_code | VARCHAR(64) | N | | SKU 编码 |
| barcode | VARCHAR(64) | N | | 条码,租户内唯一 |
| barcode_type | VARCHAR(32) | N | unit | 类型 |
| created_at | TIMESTAMP | Y | | |
| updated_at | TIMESTAMP | Y | | |
索引:
| 名称 | 类型 | 字段 | 支撑的查询 |
| --- | --- | --- | --- |
| uk_tenant_barcode | UNIQUE | (tenant_code, barcode) | 扫码 |
| idx_tenant_sku | INDEX | (tenant_code, sku_code) | SKU 的全部条码 |
`barcode_type`:`unit` 单品、`case` 箱、`pallet` 托。
关联:`wms_sku.sku_code`。箱、托条码只用于识别 SKU,换算数量以 `wms_pack_spec` 为准。
并发 / 审计:无软删除。解除绑定即删行,并写 `wms_operation_log`。
## wms_pack_spec 包装规格
用途:相对基本单位的包装。`qty_per_pack` 表示这一包等于多少基本单位。
| 字段 | 类型 | 可空 | 默认 | 说明 |
| --- | --- | --- | --- | --- |
| id | BIGINT UNSIGNED | N | AUTO_INCREMENT | 内部主键 |
| tenant_code | VARCHAR(32) | N | | 租户编码 |
| sku_code | VARCHAR(64) | N | | SKU 编码 |
| pack_code | VARCHAR(64) | N | | 包装编码,SKU 内唯一 |
| name | VARCHAR(128) | N | | 名称 |
| qty_per_pack | DECIMAL(16,4) | N | | 含基本单位数量,必须大于 0 |
| length_mm | DECIMAL(10,2) | Y | | |
| width_mm | DECIMAL(10,2) | Y | | |
| height_mm | DECIMAL(10,2) | Y | | |
| weight_g | DECIMAL(16,4) | Y | | |
| created_at | TIMESTAMP | Y | | |
| updated_at | TIMESTAMP | Y | | |
索引:
| 名称 | 类型 | 字段 | 支撑的查询 |
| --- | --- | --- | --- |
| uk_tenant_sku_pack | UNIQUE | (tenant_code, sku_code, pack_code) | 按包装编码查找 |
关联:`wms_sku.sku_code`。库存与单据数量仍记基本单位,不按包装记账。
并发 / 审计:无软删除。修改 `qty_per_pack` 不影响已记账数量。