SQL Server编码规范总结
编码原则
- 代码功能完善、清晰、整齐,代码行的结构层次分明。
- 代码编码充分考虑执行速度优的原则。
- 代码中需要添加必要的注释,注释尽可能详细清晰,增强代码可读性。
- 一个缩进量应该为1个TAB或者4个空格,请事先在客户端设置好。同层次的SQL语句缩进量应保持一致(纵向对齐)。下一个层次的代码缩进,应该为一个缩进量或者缩进量的倍数。
Tab设置
- 对应的()或者BEGIN...END要求在同一列的位置上。
- 代码中所有关键字或者保留字,需要使用全部大写或者小写。同一个单词不允许大小写混用,同一个查询不允许大小写混用。
- 应避免写非常复杂的语句,如果逻辑过于复杂,请进行处理步骤拆解。
- 使用SELECT或者INSERT语句时,应该列出详细的字段名。
- 多表关联应指定表的别名,别名长度不能超过5个字符。使用a、b、c...或t1、t2、t3...等,或者其他有规律的有层次的命名。
- 表关联应避免在关联字段上使用函数,避免索引失效。
- 应尽量避免对大表的全表扫描操作,对大表的操作应尽量使用索引。
- 索引可以提高相应的SELECT的效率,但同时也降低了INSERT及 UPDATE 的效率。索引的建立应慎重考虑充分测试。
- 单个Object,索引不能超过5个。
- 循环尽量用表变量代替游标。
- 每个表必须要有主键,如无明显主键,建立自增主键。
- 每个表必须有行创建时间,create_time,默认插入当前时间,禁止手工插入。
编码规范
SQL对齐
SQL对齐范本
SQL注释
-
- 每条SQL语句均应添加注释说明。
- 每条SQL语句的注释单独成行、放在语句前面。
- 字段注释紧跟在字段后面。
- 应对不易理解的分支条件表达式加注释。
- 对重要的计算应说明其功能。
- 过长的函数实现,应将其语句按实现的功能分段加以概括性说明。
- 常量及变量注释时,应注释被保存值的含义(必须),合法取值的范围(可选)。
代码开头注释
适用于视图或者存储过程,或者其他SQL语句
代码开头注释
命名规则
建议所有Objects都主要采用下划线命名的命名方案,应避免大小写混用。单值参数命名和表字段的命名,应该尽量以业务场景或者技术场景贴近,突出意义。例如@begindate,@customer,selloutgsv,create_time等。
数据库命名(大写)
数据库名= 项目 + 子分类 DIAMOND_RPA
表通用命名(全小写)
层级+主题+粒度+业务过程+自定义标签+时间范围+刷新周期
层级规划
- raw 原始数据
- ods 数据源层
- mid 中间层
- dwd 事实明细层,一般粒度是day或者base,现在数据库里面是fact,先不强制改。
- dws 事实汇总层,现在数据库里面是fact,先不强制改。
- dm 数据集市层
- rpt 报表层
- portal 门户的表
- temp 临时表
主题规划
- pos 销售数据
- inv 库存数据
粒度
- base
- day
- week
- month
- period
- quarter
- year
业务过程
- 可以没有
- rpa 爬虫
- mapping 数据匹配
- upload 上传
- dowload 下载
自定义标签
- 个性化标记,自由发挥
时间范围
- 日期标记 yyyymmdd
- 日期段标记 yyyymmdd_yyyymmdd
- 月份标记 yyyymm
- 月份段标记 yyyymm_yyyymm
- 年标记 yyyy
- 年段标记yyyy_yyyy
- 历史表 hist
- 增量表 incr
- 全量full
刷新周期
- daily 每天
- weekly 每周
- monthly 每月
备份表命名(全小写)
源表名 + bk + 操作人+ 时间
维度表命名(全小写)
dim + 维度名称
普通索引(全小写)
idx + 表名 + 构成的字段名。如果复合索引的构成字段较多,则只包含个字段,并添加序号。表名可以去掉前缀。
主键索引(全小写)
idx_pk + 表名 + 构成的主键字段名。
索引(全小写)
idx_uk + 表名 + 构成的字段名。
存储过程命名(全小写)
sp + 技术过程 + 层级+主题+粒度+自定义标签+刷新周期
技术过程
- create/generate/delete/update 增删改
- merge 合并
- process 处理
- transform 转化
- cut 切割
层级+主题+粒度+自定义标签
对应的是指 结果集 的属性,参考表通用命名。
视图命名
v + 表名
作业命名
单步骤:job + 技术过程 + 层级 + 主题 + 粒度 + 自定义标签 + 刷新周期
多步骤:job + 技术过程 + 主题 + 自定义标签 + 刷新周期
作者:huangwuming714
链接:https://juejin.cn/post/6999882452307017735