SQL视图列重命名是否有公开通用的编码风格规范?
SQL视图关联表列名冲突重命名规范
你当前使用的表名_原列名的命名方式是目前业内接受度最高的通用规范,以下是完整的落地规则和不同场景的调整建议:
一、核心通用规则
- 语义无歧义的列优先保留原列名:如果列名在所有关联表中唯一,无重名冲突,无需额外加前缀,减少命名冗余
- 冲突列统一使用
来源表名_原列名格式命名:该格式的优势是可直接追溯列的来源表,后续排查数据问题无需反复查阅视图定义,你示例中的libraries_id、library_groups_name都符合该规范 - 禁止用表别名作为前缀:禁止使用
l_id、lg_name这类别名前缀命名,除非团队有全成员统一共识的别名规范,否则其他视图使用者无法直接对应到来源表 - 业务语义优先于固定规则:如果某列在业务侧有通用的统一叫法,优先使用业务命名,比如
libraries.name业务侧统一叫「馆藏名称」,可直接命名为collection_name,无需强制加表前缀 - 命名规则全视图统一:不要出现部分冲突列加前缀、部分冲突列不加的情况,同类型列的命名规则需保持一致
二、不同场景的优化建议
- 对外输出的公共视图:建议所有列都加来源表前缀,无论是否有重名冲突,可完全避免后续来源表新增同名字段导致的视图列冲突问题,同时降低使用方的理解成本
- 内部使用的临时视图:可简化规则,仅给存在冲突的列加前缀,减少冗余的命名长度
- 核心标识列可简化:如果某张表的主键是整个视图的唯一标识,比如
libraries.id是libraries_metadata视图的唯一主键,可直接命名为id,无需加前缀,只需在视图注释中标注清楚列来源即可
三、禁止使用的命名方式
- 禁止使用无意义的简写别名,比如
col1、a1、lid这类无法直接理解语义的命名 - 禁止使用和SQL关键字重名的别名,比如
order、comment、type这类高频关键字,避免执行报错或解析异常 - 禁止混用命名风格,所有列名统一和表的命名规范保持一致,通常为小写蛇形命名
示例代码
公共视图版本(完全无歧义)
CREATE OR REPLACE VIEW libraries_metadata AS SELECT l.id AS libraries_id , l.description AS libraries_description , l.name AS libraries_name , lg.id AS library_groups_id , lg.description AS library_groups_description , lg.name AS library_groups_name , l.create_time AS libraries_create_time , lg.update_time AS library_groups_update_time FROM libraries l INNER JOIN library_groups lg ON l.library_group_id = lg.id;
内部临时视图版本(精简命名)
CREATE OR REPLACE VIEW libraries_metadata AS SELECT l.id AS libraries_id , l.description AS libraries_description , l.name AS libraries_name , lg.id AS library_group_id , lg.description AS library_groups_description , lg.name AS library_groups_name FROM libraries l INNER JOIN library_groups lg ON l.library_group_id = lg.id;
内容的提问来源于stack exchange,提问作者Timur Shtatland
相关产品推荐
相关产品推荐

