《升鲜宝供应链管理系统 数据库表结构与业务逻辑分析文档 (V1.0规范版|禁止 is_ 前缀)》
《升鲜宝供应链管理系统数据库设计规范》
文档版本: V1.0(最终字段规范版)
系统名称: 升鲜宝供应链管理系统(SXBSCM)
数据库规模: 约 600+ 张表
适用对象: 新员工培训 / 架构设计 / 数据库评审
文档状态: 📘 正式规范 - 强制执行
📋 文档导读
| 章节 | 核心内容 | 阅读对象 | 重要性 |
|---|---|---|---|
| 第一章 | 系统总体设计原则 | 全员必读 | ⭐⭐⭐⭐⭐ |
| 第二章 | 字段命名规范(重点) | 开发/设计人员 | ⭐⭐⭐⭐⭐ |
| 第三章 | 实际表结构示例 | 开发/测试人员 | ⭐⭐⭐⭐ |
| 第四章 | 设计理念解析 | 新员工/培训 | ⭐⭐⭐ |
| 第五章 | 速查表(常用字段) | 全员参考 | ⭐⭐⭐⭐⭐ |
| 第六章 | 已有表整改规则 | 重构/维护人员 | ⭐⭐⭐⭐ |
📘 第一章|系统总体设计原则(最终版)
1.1 核心原则(强制遵守)
| 原则 | 规范要求 | 示例 | 违反后果 |
|---|---|---|---|
| 表名语义化 | 必须清晰表达实体含义 | pms_goods_unit_relation ✅ |
❌ 代码难以维护 |
| 字段业务化 | 必须表达业务含义 | sale_flag ✅ is_sale ❌ |
❌ 可读性差 |
| 禁止is前缀 | 绝对禁止任何is_开头字段 |
enabled ✅ is_enabled ❌ |
❌ 需立即整改 |
| 状态名词化 | 状态/属性使用名词型字段 | status, type, flag ✅ |
❌ 逻辑混乱 |
| 商品模型 | 销售/采购/仓储分域商品粒度 | 三域独立标识 ✅ | ❌ 数据耦合 |
| ID/Code分离 | ID用于关联,Code用于展示 | id+product_code ✅ |
❌ 展示逻辑复杂 |
| 数据完整性 | 流水不可删,汇总可重算 | 逻辑删除+历史记录 ✅ | ❌ 数据丢失 |
🚫 第二章|字段命名总规范(重点修订)
2.1 ❌ 明确禁止的字段写法
以下写法在升鲜宝系统中全部禁止:
-- 🚫 绝对禁止的字段名(部分示例)
is_enabled -- 应改为:enabled
is_deleted -- 应改为:del_flag
is_sale -- 应改为:sale_flag
is_purchase -- 应改为:purchase_flag
is_inventory -- 应改为:inventory_flag
is_default -- 应改为:default_flag
is_valid -- 应改为:enabled / status
is_locked -- 应改为:lock_status
is_main -- 应改为:main_flag
🔍 禁止原因说明(新员工必读)
| 原因 | 详细说明 | 影响程度 |
|---|---|---|
| 语义错位 | is_是程序语义,不是业务语义 |
🔴 高 |
| 可读性差 | 在SQL/报表/BI/规则引擎中难以理解 | 🔴 高 |
| 类型冲突 | 与MySQL/Java/JSON的boolean行为不一致 | 🟡 中 |
| 维护成本 | 长期维护成本极高,团队认知负担重 | 🔴 高 |
| 系统一致 | 破坏系统统一性,增加沟通成本 | 🔴 高 |
2.2 ✅ 状态/属性字段的标准写法(替代方案)
统一规则
状态 = 名词字段 + 明确取值含义
2.2.1 启用/删除(全库统一)
-- ✅ 启用状态(全系统强制统一)
enabled TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否启用:1启用,0禁用'
-- ✅ 删除标志(全系统强制统一)
del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除:0正常,1删除'
2.2.2 商品单位相关属性(重点示例)
-- 🚫 错误写法(历史废弃,严禁使用)
is_sale_unit
is_purchase_unit
is_inventory_unit
-- ✅ 最终标准写法(强制执行)
sale_flag TINYINT(1) NOT NULL COMMENT '是否销售单位:1是,0否'
purchase_flag TINYINT(1) NOT NULL COMMENT '是否采购单位:1是,0否'
inventory_flag TINYINT(1) NOT NULL COMMENT '是否库存单位:1是,0否'
📝 说明:
-
使用 名词 + flag 格式
-
所有
flag字段取值:1=是/允许/生效,0=否/禁止/不生效
2.2.3 默认/主属性(常见误区修正)
-- 🚫 禁止写法
is_default
is_main
-- ✅ 标准写法
default_flag TINYINT(1) COMMENT '是否默认:1是,0否'
main_flag TINYINT(1) COMMENT '是否主单位/主记录:1是,0否'
2.2.4 校验/有效性字段
-- 🚫 禁止写法
is_valid
is_active
-- ✅ 标准写法(二选一,按场景使用)
-- 场景1:简单的启用/禁用
enabled TINYINT(1) DEFAULT 1 COMMENT '是否启用:1启用,0禁用'
-- 场景2:复杂的状态流转
status TINYINT DEFAULT 1 COMMENT '状态:0草稿,1待审核,2审核通过,3已驳回'
📊 第三章|实际表结构示例(已修正字段名)
3.1 商品单位关系表(最终规范)
表名: pms_goods_unit_relation
3.2 字段结构(最终版 - 可直接使用)
CREATE TABLE pms_goods_unit_relation (
-- 基础标识
id BIGINT PRIMARY KEY COMMENT '主键ID',
product_sku_id BIGINT NOT NULL COMMENT '商品规格ID',
unit_id BIGINT NOT NULL COMMENT '单位ID',
-- 业务标识域(✅ 无is_前缀)
sale_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否销售单位:1是,0否',
purchase_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否采购单位:1是,0否',
inventory_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否库存单位:1是,0否',
-- 换算关系
convert_base_qty DECIMAL(12,6) COMMENT '换算基数',
convert_target_qty DECIMAL(12,6) COMMENT '换算目标',
-- 系统状态域(全库统一)
enabled TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否启用:1启用,0禁用',
del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除:0正常,1删除',
-- 审计字段(全库统一)
creator BIGINT COMMENT '创建人ID',
create_date BIGINT COMMENT '创建时间戳',
updater BIGINT COMMENT '更新人ID',
update_date BIGINT COMMENT '更新时间戳',
-- 索引
INDEX idx_product_sku (product_sku_id),
INDEX idx_unit (unit_id),
INDEX idx_enabled_del (enabled, del_flag)
) COMMENT='商品单位关系表 - 销售/采购/库存单位标识';
✅ 本表设计特点:
-
全表无
is_字段 -
字段名即业务含义
-
取值标准统一
-
符合全库设计规范
🎯 第四章|设计理念解析(培训专用)
❓ 新人常问:为什么我们不用 is_xxx?
统一回答口径:
“因为数据库不是程序语言,数据库字段必须站在业务视角,而不是代码视角。”
对比示例:
| 写法 | 类型 | 可读性 | 业务语义 | 推荐度 |
|---|---|---|---|---|
is_sale_unit = 1 |
程序布尔 | ❌ 像代码判断 | 模糊 | 🚫 禁止 |
sale_flag = 1 |
业务标识 | ✅ 像业务规则 | 清晰 | ✅ 推荐 |
实际场景对比:
-- ❌ 旧写法(程序思维)
SELECT * FROM product
WHERE is_sale = 1
AND is_enabled = 1
AND is_deleted = 0;
-- ✅ 新写法(业务思维)
SELECT * FROM product
WHERE sale_flag = 1
AND enabled = 1
AND del_flag = 0;
-- 📊 报表/BI中的可读性对比
-- 旧:SUM(CASE WHEN is_sale THEN 1 ELSE 0 END) AS "是否销售"
-- 新:SUM(sale_flag) AS "销售单位数量"
📑 第五章|全库字段命名速查表(最终版)
常用字段对照表(打印版)
| 业务含义 | ✅ 正确字段名 | 🚫 禁止字段名 | 数据类型 | 取值说明 |
|---|---|---|---|---|
| 是否启用 | enabled |
is_enabled |
TINYINT(1) | 1启用,0禁用 |
| 是否删除 | del_flag |
is_deleted |
TINYINT(1) | 0正常,1删除 |
| 是否销售 | sale_flag |
is_sale |
TINYINT(1) | 1是,0否 |
| 是否采购 | purchase_flag |
is_purchase |
TINYINT(1) | 1是,0否 |
| 是否库存 | inventory_flag |
is_inventory |
TINYINT(1) | 1是,0否 |
| 是否默认 | default_flag |
is_default |
TINYINT(1) | 1是,0否 |
| 是否主记录 | main_flag |
is_main |
TINYINT(1) | 1是,0否 |
| 是否有效 | enabled / status |
is_valid |
TINYINT(1)/INT | 按场景选择 |
| 是否锁定 | lock_status |
is_locked |
TINYINT | 0未锁,1已锁 |
| 是否审核 | audit_status |
is_audited |
TINYINT | 枚举值 |
🔧 第六章|已有表统一整改规则
6.1 字段替换规则(可批量执行)
统一替换公式:
is_xxx → xxx_flag
具体示例:
| 原字段 | 整改后字段 | 说明 |
|---|---|---|
is_sale_unit |
sale_flag |
单位类型标识 |
is_inventory_unit |
inventory_flag |
库存单位标识 |
is_default |
default_flag |
默认标识 |
is_enabled |
enabled |
启用状态 |
is_deleted |
del_flag |
删除标志 |
6.2 整改技术要点
-- 📝 整改SQL示例(以商品表为例)
ALTER TABLE pms_goods_unit_relation
CHANGE COLUMN is_sale_unit sale_flag TINYINT(1) NOT NULL COMMENT '是否销售单位:1是,0否',
CHANGE COLUMN is_purchase_unit purchase_flag TINYINT(1) NOT NULL COMMENT '是否采购单位:1是,0否',
CHANGE COLUMN is_inventory_unit inventory_flag TINYINT(1) NOT NULL COMMENT '是否库存单位:1是,0否';
-- ⚠️ 注意事项
-- 1. 字段类型统一:TINYINT(1)
-- 2. 取值统一:1=是,0=否
-- 3. 更新所有相关代码(Java/XML/报表)
-- 4. 同步更新数据字典
6.3 整改检查清单
-
1. 确认所有
is_前缀字段已识别 -
2. 按规则映射新字段名
-
3. 统一数据类型为
TINYINT(1) -
4. 统一注释格式(取值说明)
-
5. 更新所有相关索引
-
6. 同步更新应用层代码
-
7. 验证业务逻辑正确性
-
8. 更新数据字典文档
🏁 第七章|最终结论
升鲜宝数据库字段命名核心规范
"业务名词优先,禁止 is_ 前缀"
强制执行要点:
-
所有状态、属性字段,必须使用
xxx_flag/status/type格式表达 -
全库统一取值:
1=是/启用/生效,0=否/禁用/无效 -
从设计源头控制:新表必须符合规范,旧表按计划整改
-
纳入代码评审:不符合规范的SQL/DDL不允许提交
预期收益:
✅ 可读性提升:业务人员可直接理解字段含义
✅ 维护成本降低:减少团队认知负担
✅ 系统一致性增强:统一的设计语言
✅ 工具兼容性:BI/报表工具友好支持
📞 附录:联系与反馈
| 事项 | 负责人 | 联系方式 |
|---|---|---|
| 规范解释 | 架构组 | yds666666@126.com 微信 sxbscm2012 电话 15382353715 |
| 整改支持 | DBA组 | yds666666@126.com 微信 sxbscm2012 电话 15382353715 |
| 培训需求 | 培训组 | yds666666@126.com 微信 sxbscm2012 电话 15382353715 |
| 规范建议 | 全员 | yds666666@126.com 微信 sxbscm2012 电话 15382353715 |
文档修订记录:
-
V1.0 (2023-10-27): 最终字段规范版,全团队强制执行
宣传标语:
"好字段,自己会说话——升鲜宝数据库设计规范,让数据更清晰,让开发更高效!"
本文档由升鲜宝技术委员会制定并维护,最终解释权归升鲜宝技术架构部所有。

浙公网安备 33010602011771号