首页  |  知识库  |  资源下载  |  在线工具  |  A-Z  •  JAR  •  名词查         

对于在使用Oracle数据库进行系统开发设计时对象命名、设计、开发评审及变更常用的规范一

标签:oracle,规范,数据库设计,评审,架构,数据结构,SQL,约束     发布时间:2017-06-26   

一、背景及目的

随着业务系统的越来越多、复杂程度越来越高,DB层面浮现出若干问题:

1、DB对象命名混乱,具有很大随意性、

2、SQL脚本编写混乱、且没有评审、

3、索引创建混乱,造成性能问题、

4、SQL开发质量欠佳,造成性能问题、

5、DB用户权限授予混乱,隐含DB操作风险、

6、SQL移交未统一,造成DB风险。

鉴于以上情况,为了统一对象命名、提高数据库效率、实现标准化开发及便于数据库的统一管理、监控、降低DB风险,特制定本规范,旨在今后的工作中,对相干人员的一系列操作建立一个规范文本,并希望能够照此严格执行。

二、术语和缩略语

序号

术语/缩略语

全称和说明

1

(TABLE)

数据库中用于存储数据的基本存储单位

2

派生授权

给用户授权时,使用with grant  option,使得被授权的用户可以将被授权的对象授权给其它用户

3

索引(INDEX

索引是一个物理的数据库结构。它依赖于表,是关于表中特定主题的信息位置关键字的列表,并提供了快速访问这些信息的方法。

4

区分度

索引列里存储不同值的数目和记录数的比值。

5

同义词(SYNONYM)

同义词是指向其它数据库对象的数据库指针。

 

6

公共同义词

(PUBLIC SYNONYM)

可被所有的数据库用户访问的同义词。

7

私有同义词

(PRIVATE SYNONYM)

只能被其属主用户或其授权用户访问的同义词。

8

SEQUENCE(序列)

sequence(序列)用来产生序列号。

9

RAC模式数据库(集群)

多个instance(又称实例或节点)对应一个oracle database即称为rac模式数据库。

10

exclusive模式数据库

只有一个instance(又称实例或节点)对应一个oracle database即称为exclusive模式数据库。

14

DB审计系统


三、对象命名规范概览

序号

对象名

命名规范

说明

1

数据库

(Database)

开发测试阶段:

阶段简称+”_”+序号+”_”+业务简称

生产阶段:

业务简称(代表生产系统含义英文缩写的SID)

阶段简称:

D:开发阶段

T:测试阶段

2

表空间

(Tablespace)

”TBS_”+模块简称+”_”+2位序号


3

角色(Role)

”R_”+用户名+”_”+操作类型

操作类型:

DMLQRY

4

用户(User)

模块简称+用户类别

用户类别:

OPRDATA

5

(Table)

模块简称+”_”+业务描述

表约束:

主键约束:PK_+表名_+字段名;

外键约束:FK_+表名_+字段名;

唯一约束:UN_+表名_+字段名;

非空约束:NN_+表名_+字段名;

值检查约束:CK_+表名_+字段名;


6

分区表

(Partition Table)

分区表的表名与普通表一致

分区索引的命名与普通索引一致

表分区的命名格式为:”表名_+分区特征+_pt

索引分区的命名格式为:”索引名_+分区特征+_pi


7

索引(Index)

”IDX_”+表名+”_”+字段名或字段名组合


8

同义词

(Synonym)

若系统同义词无冲突:

则同义词名与其指向的对象同名

若有冲突:

则采用 数据库用户名+”_”+表名


9

序列号

(Sequence)

表名+”_”+字段名+ “_SEQ”


10

视图(View)

模块简称+”_”+视图描述+”_V”


11

物化视图(MV)

模块简称+”_”+物化视图描述+ “_MV”


12

存储过程

(Procedure)

模块简称+”_”+过程描述+“_PRC”


13

触发器(Trigger)

模块简称+”_”+触发器描述+ “_TRI”


14

(Package)

模块简称+”_”+包描述+“_PKG”


15

函数(Function)

模块简称+”_”+函数功能描述+ “_FUN”


16

数据库链接

(DB Link)

对于公共链接:

远程库名+”_”+远程用户名+”_DBLINK”

对于私有链接

模块简称+”_”+远程库名+”_”+远程用户名+”_DBLINK”


三、通用规则

序号

规则项

详细描述

1

对象名长度限制

ORACLE数据库内部有规定,所有对象的命名长度,不能超过30个字符;如果长度超过了30个字符,则对象描述部分采用缩写的方式,单词缩写必须能够完整表达原有英文全称的含义。

缩写原则:

·包含四个或四个以下字符的单词,可以不必缩写;

·所有的缩写必须唯一,不能有多义;

·一个单词的缩写必须以该单词的首字母开头;

·缩写中不能包含数字或特殊字符;

·缩写应当从命名右侧的单词开始,自右向左地进行缩写,直到满足所需的长度为止。

缩写方法:(按照下述步骤逐一来缩写)

1.  查看公司现有的单词缩写列表(见下),看看是否已存在该单词缩写;

2.  不管该单词的首字母是元音还是辅音,都以它作为缩写的首字母;

3.  如果该单词中有两个连续的相同辅音字母,则只取其一;

4.  如果该单词以两个连续的相同元音字母结尾,则这两个元音字母都保留;

5.  然后去掉单词中剩下的其他元音字母;

6.  如果单词中包含“CK”这样的字母组合,则去掉字母C,保留字母K

举例1:单词Doorbell

1.  在现有单词缩写列表中没有Doorbell的缩写;

2.  首字母d需要保留,并作为缩写的首字母;

3.  两个连续的辅音字母l,去掉其中一个,只保留一个。得到doorbel

4.  这个单词没有以连续的元音字母结尾;

5.  其他的元音字母都去掉。得到drbl

6.  这个单词没有包含“ck”字母组合。

最终Doorbell这个单词的缩写就是drbl

举例2:单词Entitlement

1.  在现有单词缩写列表中没有Entitlement的缩写;

2.  首字母e保留(虽然它是一个元音字母);

3.  这个单词没有连续的两个辅音字母;

4.  这个单词没有以连续的元音字母结尾;

5.  其他的元音字母都去掉。得到enttlmnt

6.  这个而单词没有包含“ck”字母组合。

最终Entitlement这个单词的缩写就是enttlmnt

举例3:单词Grantee

1.  在现有单词缩写列表中没有Grantee的缩写;

2.  首字母g保留;

3.  这个单词没有两个连续的辅音字母;

4.  结尾的两个连续的相同元音字母ee都保留。得到grantee

5.  去掉剩下的元音字母。得到grntee

6.  这个单词没有包含“ck”字母组合。

最终Grantee这个单词的缩写就是grntee

2

对象名大小写

对象命名都采用大写方式

3

下划线为分隔符

所有的命名中,单词之间必须以下划线作为分隔符,如customer_name

4

英文单词组成

命名以英文单词组成,不允许使用汉语拼音

5

不允许使用关键字

命名中不允许出现ORACLE数据库中的关键字(Reserved Word),如:userremark等单词不允许使用。Oracle关键字可从v$reserved_words中查询。

6

命名禁止使用双引号

为避免出现大小写敏感问题,禁止使用双引号将对象引用,如,不允许定义这样的带双引号的字段名:”user

四、命名约束

1.数据库的命名格式 - 开发测试阶段:阶段简称+”_”+序号+”_”+业务简称;生产阶段:业务简称(代表生产系统含义英文缩写SID)其中'

是否正确

举例

说明

错误

TEMPLATEDBORCLTEST


正确

D0DPMDPM业务开发阶段数据库

T0DPMDPM业务测试阶段数据库

DPMDPM业务生产阶段数据库


2.表空间  

规范2: 表空间的命名格式为:”TBS_”+模块全称+”_”+2位序号

建议1: 创建表空间时指定存储选项

如:create tablespace的时候建议指定extent management local autoallocate 和segment space management auto。

是否正确

举例

说明

错误

TESTROLE1


正确

R_SECURITYDATA_DML:数据用户DML权限角色

R_SECURITYDATA_QRY:数据用户查询权限角色

R_SECURITYOPR_DML:操作用户DML权限角色

R_SECURITYOPR_QRY:操作用户查询权限角色


3.角色 (Role)

规范3: 角色的命名格式为:”R_”+用户名+”_”+操作类型

操作类型:DML、QRY

数据用户:”R_”+数据用户名+”_”+”DDL”

”R_”+数据用户名+”_”+”DML”

”R_”+数据用户名+”_”+”QRY”

操作用户:”R_”+操作用户名+”_”+”DML”

”R_”+操作用户名+”_”+”QRY”

是否正确

举例

说明

错误

TESTROLE1


正确

R_SECURITYDATA_DML:数据用户DML权限角色

R_SECURITYDATA_QRY:数据用户查询权限角色

R_SECURITYOPR_DML:操作用户DML权限角色

R_SECURITYOPR_QRY:操作用户查询权限角色


4.用户 (User)

规范4: 用户的命名格式为:模块全称+用户类别

用户类别:OPR、DATA

操作用户:模块全称+”OPR”

数据用户:模块全称+”DATA”

是否正确

举例

说明

错误

TESTUSER01


正确

SECURITYDATA:数据权限用户

SECURITYOPR:操作权限用户

PUB_QUERY:查询权限用户

PUB_TEST:测试用户


下一页