🏷️ 综合等级分布
A级 ≥90分:0张
B级 75~89分:0张
C级 60~74分:3张
D级 <60分:58张
⚠ 核心问题:61张表中仅有6张有完整的字段明细文档,剩余55张处于"盲检"状态。
这55张表因为缺少字段元数据,主键设计、约束设计、类型规范等维度均无法评估,默认得低分。
这不是说这些表一定设计得差,而是我们无法证明它们设计得好。
🔴 P0 严重问题(必须立即修复)
🔴 bp_articleproject — 无主键定义
项目-资讯关系表,存储项目和资讯的多对多映射。没有主键意味着:①同一组(project_id, article_id)可以重复插入;②任何JOIN操作都可能产生笛卡尔积;③数据膨胀后去重不可逆。
建议:立即添加复合主键 PRIMARY KEY (project_id, article_id)。
🔴 md_drugbidsourcehc_zb — 无主键定义
全国药品招投标数据主表,是整个招投标数据体系的核心表。无主键意味着中标的药品可能被重复记录,影响所有基于此表的下游分析和API输出。
建议:根据业务规则定义主键,候选:(药品编码, 中标日期, 省份)。
🔴 dt_drugbidsourcehc — 无主键定义
药品中标结果明细表。与主表md_drugbidsourcehc_zb关联,自身也无主键。父子两表均无唯一标识,数据完整性的底线失守。
建议:先定义主键后可考虑外键约束 FOREIGN KEY (zb_id) REFERENCES md_drugbidsourcehc_zb(id)。
🟡 P2 中优先级问题(典型示例)
🟡 类型错配:24个布尔字段用了 integer/smallint/varchar
iscompletion(integer), isslide(smallint), ishover(varchar) 等字段在语义上就是布尔值(是/否),但定义为数值或字符串类型。
问题:①integer类型的iscompletion可以存入3、-1等非法值;②varchar类型的ishover可以存入'yes'/'no'/'1'/'0'等各种变体。
建议:新建表统一用 BOOLEAN;存量表加CHECK约束 CHECK (iscompletion IN (0,1))。
🟡 类型错配:6个日期字段存为 varchar
htmlsavetime 的字段定义为 character varying(500),但语义显然是日期时间。
用字符串存日期:①无法用日期函数做范围查询;②格式不统一(有人写 '2026-06-23',有人写 '2026/06/23')。
建议:评估是否有历史数据格式不统一的情况,若有则先清洗再改类型。
🟡 长度溢出:14个字段长度 ≥2048
例如 productname 定义为 character varying(4000)、summary 定义为 character varying(4000)。
varchar(4000) 在 PostgreSQL 中接近 text 类型的上限但又不完全是——它占用固定开销,且索引受限。
建议:评估实际值长度分布,若大部分值 <255 则缩小;若确实需要长文本则改用 TEXT。
🟡 命名模糊:7个字段使用通用词
字段名 status(出现在3张表)、type(2张表)、id(没有表级前缀)——这些词在单表内没问题,但在跨表Join时完全无法从名称判断含义。
a.status = b.status 到底在比什么?需要翻文档甚至看数据才能理解。
建议:在字段注释/中文名中明确含义;新字段命名遵循"表名缩写_含义"模式。
🟡 可空率过高:96%字段允许NULL
307个字段中仅12个(4%)定义了NOT NULL约束。这意味着几乎所有字段都可能出现空值——这不是"灵活",而是"没有业务兜底"。
建议:逐字段评估:业务上"不能为空"的字段加NOT NULL;不能加NOT NULL的字段(如可选备注)加DEFAULT值。
🗺️ 改进路径建议
第一阶段
(1-2周)
止血:修复3张无主键表
① bp_articleproject 加复合主键 → ② md_drugbidsourcehc_zb 确认业务唯一键 → ③ dt_drugbidsourcehc 同上。
这3张表设计好主键后,立即在"系统二(值质量评估)"中跑一遍唯一性检查,确认实际数据没有重复。
第二阶段
(2-4周)
补文档:补齐55张表的字段明细
先从DBA/开发获取DDL(CREATE TABLE语句),批量提取字段名、类型、约束。
无法获取DDL的表,用 INFORMATION_SCHEMA.COLUMNS 从数据库直接导出。
补完后重新跑一次系统一评分,预计平均分能从47.3提升到65+。
第三阶段
(1-2个月)
做优化:类型修正 + 索引补全 + 命名规范
① 布尔字段改boolean → ② 日期字段改date → ③ 长varchar评估是否改text → ④ 外键字段按需建索引 → ⑤ 新表遵循统一的命名规范文档。
📌 本报告与系统二的关系
本报告评估的是"表建得好不好"(Schema设计质量)。
系统二评估的是"数据填得对不对"(数据值质量),需要连库跑SQL才能启用。
因果关系:3张表无主键(系统一P0问题)→ 这些表的值质量"唯一性"维度必然差(系统二)。先修设计(系统一),再洗数据(系统二),这是正确的治理顺序。
数据来源:医院会员-sqlserver.xlsx / 数据云服务-sqlserver.xlsx / 智链云-pgsql.xlsx | 分析工具:系统一_表设计质量评估.xlsx | 生成时间:2026-06-23