工作日志【 SQL内部规范-ETL银行项目 】

工作日志【 SQL内部规范-ETL银行项目 】

一、表结构设计

  1. 建表时,首先要确定表的业务唯一键,即该表的唯一索引由哪些字段构成,不建议创建没有唯一索引的表;
    如果要修改表的唯一索引,一定要严格评审;
    前台:表结构变更:F层的表需要通知JAVA开发。前台缺字段,新需求发现B层提前跟后台说。
    后台:表结构变更通知前台,看有没有其他下游用。
  2. 对于已存在的相同中文含义的英文字母字段,尽量复用,即同一个中文含义字段,英文字段最好一个;
  3. 表字段类型,可以分几类:
    (1)单字符型的,用CHAR(1);
    (2)编码含义的(即对应数据字段码值),视码值长度,可以用CHAR(1),VARCHAR(2),VARCHAR(4),VARCHAR(8)等;
    (3)涉及姓名,地址等字段,建议VARCHAR(128),VARCHAR(256),VARCHAR(512)等;
    (4)涉及数量(个数、支数、人数等)用INT或decimal(10,0)等,长度视具体情况定;
    (5)对于金额,份额,发生额等字段用decimal(26,4);
    (6)对于价格、净值字段,用decimal(18,12);
    (7)对于增长率,占比等于百分比字段,建议用decimal(18,12);
  4. 建表时,字段中文含义都要写全,字段建议都设置不能为空,设置好默认值。
  5. 维度表设计,建议维度都是码值类的字段,而不是中文含义字段;或者每个维度都是两个字段,一个码值,一个中文含义;
  6. 对于日期类的字段,建议用整型,若要用日期型,那所有的表建议统一日期格式:yyyymmdd
  7. 建表时,如果字段有对应的数据字典,做最好的中文备注里标明字典号;
  8. 建表前,先要确认有没有类似的表,避免重复建表;
  9. 表命名和存储过程命最好有一套规范;

二、存储过程编写(不遵守增加说明注释)

  1. 中文备注一定要详细,以便其他人理解;
  2. 如果关联,建议都用左关联,尽量不使用右关联和内关联
  3. 用左关联时,主表和从表不能一对多,即关联字段和条件,能确定从表的唯一性;
  4. 用左关联时,如果select出的字段有从表的字段,一定要用ifnull保护,因为可能关联不上,取出的就是空值;
  5. 写SQL里,如果涉及除法,一定要保护下分母为0的情况;----只要sql中遇到函数操作,需要考虑到不支持的值导致的异常;
  6. 总结sql编写里的一些关联字段,评估一下是否需要再对应的表上增加索引,提高sql效率;
  7. 写的sql,除了保证逻辑处理的正确性,还要多考虑一下sql的效率;
  8. 对于一些计算日数据的过程,最好是两个输入参数(开始日期,结束日期),支持多天的数据处理;
  9. 对于一些需要用大多天的数据sql,如计算年初到当天的交易量,年初至今的最大规模等,可以先把截止上一天的数据存下来,
    每天基于上一天的数据来计算,提高效率;(如果数据量很小就无所谓了)
  10. 每个过程都需要用到的表,涉及的结果或者要处理的表,最好在开始的备注里写清楚。
  • 1
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值