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