数据模型是数据管理的分析工具和交流的有力手段;同时,还能够很好地保证数据的一致性,是实现商务智能(Business Intelligence)的重要基础。因此建立、管理一个企业级的数据模型,应该遵循标准的命名和设计规范
ODS层表名
前缀为ODS_应用系统名(缩写)_数据表名 。数据表名称必须以有特征含义的单词或缩写组成,中间可以用“_”分割,例如:ODS_FUN_CUSTOMERINFO。表名称不能用双引号包含,表名长度不超过30个字符。如果ODS设计采用贴源设计,数据表名应与源系统一致。
系统和应用名规则如下:
核心 COR
对公信贷 CLN
个贷 PLN
基金 FUN
票据 TIC
理财 FIN
报表 RPT
……
如有新系统,按规则添加
DW事实表表名
前缀为DW_主题名(缩写)_功能描述 。数据表名称必须以有特征含义的单词或缩写组成,中间可以用“_”分割,例如:DW_ORD_DETAIL。表名称不能用双引号包含,表名长度不超过30个字符。
主题名规则如下:
订单 ORD
营销活动 MKC
贷款 LN
网银 NET
客户 CUS
……
如有新主题,按规则添加
数据表名规则如下:
基础表 _BA
日汇总表 _D
月汇总表 _M
历史累计 _H
全量加载 _A
增量加载 _I
APP应用层表名
前缀为APP_主题名(缩写)_功能描述 。数据表名称必须以有特征含义的单词或缩写组成,中间可以用“_”分割,例如: APP_RPT_ DEALER_GOODS。表名称不能用双引号包含,表名长度不超过30个字符。
主题名规则如下:
报表 RPT
数据表名规则如下:
参考DW层表名称规范
DW/DM维度表表名
前缀为D_ 。数据表名称必须以有特征含义的单词或缩写组成,中间可以用“_”分割,例如:D_ACCOUNT、D_PUB_DATE。表名称不能用双引号包含,表名长度不超过30个字符。
数据表名规则如下:
日期维度 D_PUB_DATE
城市 D_CITY
元数据表名
前缀为M_应用名(缩写)_功能描述 。数据表名称必须以有特征含义的单词或缩写组成,中间可以用“_”分割,例如:M_ETL_TASK。表名称不能用双引号包含,表名长度不超过30个字符。
应用名规则如下:
ETL ETL
报表 RPT
OLAP分析 OLP
源系统 SRC
数据库 DB
软硬件 SHW
……
如有新应用,按规则添加
表分区名
前缀为p 。分区名必须有特定含义的单词或字串。
例如 :tbl_pstn_detail 的分区p2004100101表示该分区存储 2004100101时段的数据。
字段名
字段名称必须用字母开头,采用有特征含义的单词或缩写,不能用双引号包含。
字段排列
每个表中的字段排列也应该遵从相应的规则进行摆放:
》同类属性尽量靠拢摆放
例如:“协议”实体中有一组“日期”属性,包括“开户日期”、“销户日期”、“签署日期”、“起息日期”、“到期日期”等,可以排列在一起、
》相关属性尽量靠拢摆放
例如:“币种”、“金额”常常一起使用,应排列在一起;
》重要的和常用的属性靠前
和源系统非常接近的表(特别是一对一的情况),和源系统的属性顺序一致
主键名
前缀为PK_。主键名称应是 前缀+表名+构成的字段名。如果复合主键的构成字段较多,则只包含第一个字段。表名可以去掉前缀。
外键名
前缀为FK_。外键名称应是 前缀+ 外键表名 + 主键表名 + 外键表构成的字段名。表名可以去掉前缀。
索引
普通索引
前缀为IDX_。索引名称应是 前缀+表名+构成的字段名。如果复合索引的构成字段较多,则只包含第一个字段,并添加序号。表名可以去掉前缀。
主键索引
前缀为IDX_PK_。索引名称应是 前缀+表名+构成的主键字段名,在创建表时候用using index指定主键索引属性。
唯一索引
前缀为IDX_UK_。索引名称应是 前缀+表名+构成的字段名。
外键索引
前缀为IDX_FK_。索引名称应是 前缀+表名+构成的外键字段名。
函数索引
前缀为IDX_func_。索引名称应是 前缀+表名+构成的特征表达字符。
簇索引
前缀为IDX_clu_。索引名称应是 前缀+表名+构成的簇字段。
视图
前缀为V_。按业务操作命名视图。
物化视图
前缀为MV_。按业务操作命名实体化视图。
存储过程
前缀为SP_ 。按业务操作命名存储过程。
触发器
前缀为Trig_ 。触发器名应是 前缀 + 表名 + 触发器名。
函数
前缀为Func_ 。按业务操作命名函数。
数据包
前缀为Pkg_ 。按业务操作集合命名数据包。
序列
前缀为Seq_ 。按业务属性命名。
普通变量
前缀为Var_ 。 存放字符、数字、日期型变量 。
游标变量
前缀为Cur_ 。存放游标记录集。
记录型变量
前缀为Rec_ 。 存放记录型数据。
表类型变量
前缀为Tab_ 。 存放表类型数据。
数据库链接
前缀为dbl_ 。 表示分布式数据库外部链接关系。
名称
命名应该使用英文单词,避免使用拼音,特别不应该使用拼音简写。命名不允许使用中文或者特殊字符。英文单词使用用对象本身意义相对或相近的单词。选择最简单或最通用的单词。不能使用毫不相干的单词来命名。当一个单词不能表达对象含义时,用词组组合,如果组合太长时,采用用简或缩写,缩写要基本能表达原单词的意义。当出现对象名重名时,是不同类型对象时,加类型前缀或后缀以示区别。
大小写
名称一律小写,以方便不同数据库移植,以及避免程序调用问题。
单词分隔
命名的各单词之间可以使用下划线进行分隔。
保留字
命名不允许使用SQL保留字。
命名长度
表名、字段名、视图名长度应限制在20个字符内(含前缀)。
字段名称
同一个字段名在一个数据库中只能代表一个意思。比如telephone在一个表中代表“电话号码”的意思,在另外一个表中就不能代表“手机号码”的意思。不同的表用于相同内容的字段应该采用同样的名称,字段类型定义。
例如:
行为名称 | 行为英文名称 | 英文缩写 |
计数 | Count | cnt |
金额 | Amount | amt |
微信 | Weixin | Wx |
成功 | success | succ |
支付 | Pay | pay |
地址 | Address | addr |
订单 | Order | ord |
渠道 | Channel | chl |
完成 | Finish | Fin |
数据类型
字符型
固定长度的字串类型采用char,长度不固定的字串类型采用varchar。避免在长度不固定的情况下采用char类型。如果在数据迁移等出现以上情况,则必须使用trim()函数截去字串后的空格。
数字型
数字型字段尽量采用number类型,要注意精度 。
日期和时间
1.系统时间
由数据库产生的系统时间首选数据库的日期型,如DATE类型。
2.外部时间
由数据导入或外部应用程序产生的日期时间类型采用varchar类型,数据格式采用:YYYYMMDDHH24MISS。
大字段
如无特别需要,避免使用大字段(blob,clob,long,text,image等)。
唯一键
对于数字型唯一键值,尽可能用自增产生。