《升鲜宝供应链管理系统 数据库表结构与业务逻辑分析文档 (V1.0规范版|禁止 is_ 前缀)》

《升鲜宝供应链管理系统数据库设计规范》

文档版本: V1.0(最终字段规范版)
系统名称: 升鲜宝供应链管理系统(SXBSCM)
数据库规模: 约 600+ 张表
适用对象: 新员工培训 / 架构设计 / 数据库评审
文档状态: 📘 正式规范 - 强制执行


📋 文档导读

 
章节核心内容阅读对象重要性
第一章 系统总体设计原则 全员必读 ⭐⭐⭐⭐⭐
第二章 字段命名规范(重点) 开发/设计人员 ⭐⭐⭐⭐⭐
第三章 实际表结构示例 开发/测试人员 ⭐⭐⭐⭐
第四章 设计理念解析 新员工/培训 ⭐⭐⭐
第五章 速查表(常用字段) 全员参考 ⭐⭐⭐⭐⭐
第六章 已有表整改规则 重构/维护人员 ⭐⭐⭐⭐

📘 第一章|系统总体设计原则(最终版)

1.1 核心原则(强制遵守)

 
原则规范要求示例违反后果
表名语义化 必须清晰表达实体含义 pms_goods_unit_relation ✅ ❌ 代码难以维护
字段业务化 必须表达业务含义 sale_flag ✅ is_sale ❌ ❌ 可读性差
禁止is前缀 绝对禁止任何is_开头字段 enabled ✅ is_enabled ❌ ❌ 需立即整改
状态名词化 状态/属性使用名词型字段 statustypeflag ✅ ❌ 逻辑混乱
商品模型 销售/采购/仓储分域商品粒度 三域独立标识 ✅ ❌ 数据耦合
ID/Code分离 ID用于关联,Code用于展示 id+product_code ✅ ❌ 展示逻辑复杂
数据完整性 流水不可删,汇总可重算 逻辑删除+历史记录 ✅ ❌ 数据丢失

🚫 第二章|字段命名总规范(重点修订)

2.1 ❌ 明确禁止的字段写法

以下写法在升鲜宝系统中全部禁止:

sql
-- 🚫 绝对禁止的字段名(部分示例)
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 启用/删除(全库统一)

sql
-- ✅ 启用状态(全系统强制统一)
enabled   TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否启用:1启用,0禁用'

-- ✅ 删除标志(全系统强制统一)
del_flag  TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除:0正常,1删除'

2.2.2 商品单位相关属性(重点示例)

sql
-- 🚫 错误写法(历史废弃,严禁使用)
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 默认/主属性(常见误区修正)

sql
-- 🚫 禁止写法
is_default
is_main

-- ✅ 标准写法
default_flag   TINYINT(1) COMMENT '是否默认:1是,0否'
main_flag      TINYINT(1) COMMENT '是否主单位/主记录:1是,0否'

2.2.4 校验/有效性字段

sql
-- 🚫 禁止写法
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 字段结构(最终版 - 可直接使用)

sql
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='商品单位关系表 - 销售/采购/库存单位标识';

✅ 本表设计特点:

  1. 全表无 is_ 字段

  2. 字段名即业务含义

  3. 取值标准统一

  4. 符合全库设计规范


🎯 第四章|设计理念解析(培训专用)

❓ 新人常问:为什么我们不用 is_xxx

统一回答口径:

“因为数据库不是程序语言,数据库字段必须站在业务视角,而不是代码视角。”

对比示例:

 
写法类型可读性业务语义推荐度
is_sale_unit = 1 程序布尔 ❌ 像代码判断 模糊 🚫 禁止
sale_flag = 1 业务标识 ✅ 像业务规则 清晰 ✅ 推荐

实际场景对比:

sql
-- ❌ 旧写法(程序思维)
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 字段替换规则(可批量执行)

统一替换公式:

text
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
-- 📝 整改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_ 前缀"

强制执行要点:

  1. 所有状态、属性字段,必须使用 xxx_flag / status / type 格式表达

  2. 全库统一取值:1=是/启用/生效0=否/禁用/无效

  3. 从设计源头控制:新表必须符合规范,旧表按计划整改

  4. 纳入代码评审:不符合规范的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): 最终字段规范版,全团队强制执行

宣传标语:
"好字段,自己会说话——升鲜宝数据库设计规范,让数据更清晰,让开发更高效!"


本文档由升鲜宝技术委员会制定并维护,最终解释权归升鲜宝技术架构部所有。

posted @ 2026-02-03 14:02  升鲜宝供应链管理系统  阅读(4)  评论(0)    收藏  举报