← 洞见行业咨询动态

上线前少一份数据字典,换人就失忆

泛友数字2026/11/02 09:4657 阅读
上线前少一份数据字典,换人就失忆

数据字典是系统里每张表、每个字段的说明书。一共七列:表名、字段名、类型、中文含义、取值范围、谁维护、最后更新。验收时抽 3 张表、每表 5 个字段,让对方当场说出含义,说不出来就不签字。

没有这份东西,系统就只认原班人马。

换个运维、换家外包、原厂项目经理离职,新人打开数据库,看到 t_ord_mst 里的 f_st,只能猜。猜错一次,一张报表的口径可以错一个月。

数据字典就是系统的药品说明书。药名、成分、每片多少毫克、什么人不能吃、哪个厂生产、批号到哪年,少一项都不敢吃。字段也一样,少一列就有人要猜。

猜的代价不在当天。三个月后对账平不了,翻记录发现是「金额存的是分,报表按元读的」。这时候人已经换了,谁都不认。

对账的场景最直接。两个系统数对不上,第一件事是问「这两个字段是不是一个意思」。有字典,五分钟;没有字典,两家厂商互相等对方出说明。

换供应商时更明显。新团队进场第一周要读系统。有字典,两周能接手;没有字典,报价里会多一项「系统梳理」,几万块,你还不好还价。

七列,一列都不能省。

第一列,表名。要带库名或模式名。两张库里有同名表,是常见的事,只写表名,运维会改错那一张。

第二列,字段名。照抄数据库里的写法,别美化。字典和库对不上,这份文件就废了。

第三列,类型。varchar(32)、decimal(10,2)、datetime,写全。金额用浮点数存,四舍五入差几分钱,这种错最难查。

第四列,中文含义。一句话说清是什么,不要只写「状态」。要写「订单状态:待付款、已付款、已发货、已取消、已退款」。

第五列,取值范围。枚举值全列出来。数字写单位和精度,金额写清是元还是分。日期写清时区,跨时区的系统这里最容易错。

第六列,谁维护。写岗位加姓名,再写业务归属部门。只写「技术部」,等于没写,出事找不到人。

第七列,最后更新。写日期,配一条变更记录:谁改的、改了什么、为什么改。

列省了会怎样
表名改错同名表,数据串库
字段名字典与库不一致,整份作废
类型金额、日期算错,事后才发现
中文含义新人靠猜,需求提错
取值范围统计漏掉一种状态,数对不上
谁维护改数据没人认,互相推
最后更新不知道哪版可信,全都不敢用

谁写这份东西。

前三列由开发写,从库里导,不要手打。中文含义、取值范围两列由业务方确认,两边签字。

常见做法是全交给开发。开发理解的「已支付」和财务理解的「已到账」不是一回事,字典写了也白写。

验收怎么抽。

随机抽 3 张表,每张抽 5 个字段,一共 15 个点。让对方的技术负责人当场说:这个字段是什么、有哪些取值、哪个业务在用。

第二步,让他在系统里查出这个字段的实际取值。字典写状态有 5 种,库里查出 7 种,说明字典过期了。这一步比背含义更难糊弄。

第三步,打开数据库比对结构。字典写了 24 个字段,库里 27 个,直接不通过,不用再问。

让对方现场导出表结构,一句查询就够。他要是不肯给库权限,就给这个结果,别给截图。

select column_name, data_type, column_comment
from information_schema.columns
where table_schema = '库名' and table_name = '表名';

判定线写死,别留解释空间。15 个点错 2 个以上不通过;字典与库结构不一致不通过;「最后更新」早于最近一次上线日期,视为没维护。

验收条款可以这样写。乙方应随系统交付《数据字典》,覆盖全部业务表。列明表名、字段名、数据类型、中文含义、取值范围、维护责任人、最后更新日期。甲方随机抽 3 张表、每表 5 个字段现场质询;错误 2 个以上,或字典与库结构不一致,验收不通过。

条款里「全部业务表」四个字要盯住。很多字典只写主表,字典表、日志表、中间表一概不写。真出事,问题常出在这几张表上。

覆盖范围可以这样谈:核心业务表全写,配置表和字典表跟着写。日志表、临时表可以不写,但要在文档里列一张「未覆盖清单」,别让人以为漏了。

格式也说清。Excel 或在线表格都行,别只给 PDF。PDF 搜不了、改不了,第二年就是一份没人打开的附件。

交完之后怎么不烂掉。

表结构一变,字典要跟着变。做法是把它挂进变更流程:改表的申请单里有一栏「字典已更新」,没勾这一栏,变更不批。

再设一次对账,每季度一次。拿字典和库里的实际结构比一遍,字段数、类型、注释三项对不上就补。一次半小时,比事后查账便宜。

换人交接时,字典放清单第一项。新人第一周的任务不是改代码,是拿字典把三张核心表讲一遍,讲不清就是没看懂。

依据是有的。GB/T 8567 是软件文档的国标。1988 版单独设了《数据库设计说明书》一章,其中 13.4.1 就叫「数据字典设计」。

原话大意是:对数据库设计中涉及的数据项、记录、文卷、模式、子模式,一般要建立数据字典。用途是说明这些项目的标识符、同义名及有关信息。这一版已被 2006 版代替。

现行的 GB/T 8567-2006 把它拆成两份文档:《数据需求说明》和《数据库(顶层)设计说明》,并规定了各自的内容与格式。文档交哪些,合同里可以直接引这个标准。

《政府采购需求管理办法》第二十四条要求,验收标准要包括所有客观、量化指标。15 个抽查点、错 2 个不通过,就是可量的标准,不是「文档齐全、内容完整」这种话。

三个坑,见到就退回。

  • 字典从代码注释导出,中文含义一栏还是英文。
  • 只覆盖主表,字典表、日志表、中间表不写。
  • 上线后没人维护,第二年就对不上了。

还有一处常被忽略:字典验收完要存到甲方自己的地方。存在乙方的网盘里,合同一结束,链接就失效了。

系统小也别跳过。只有三张表的系统,字典一页纸,半小时写完。等长到三十张表再补,就是一周的活。

成本这件事也说一句。做一份完整字典,按经验要两到四个人日,看表的数量。这笔钱在上线前花,是几千块;在换人之后花,是重新读一遍系统的价钱。

数据字典七列与验收抽查动作
七列缺一列,验收时就有一处只能靠猜。

数据字典不贵,一份 Excel 就够。贵的是没有它的时候,每换一个人,全组重猜一遍。