数据库对象命名规范(值得参考)

1 数据库对象命名规范sql

1.1 基本命名原则数据库

如下基本原则适用于全部数据库对象命名,如无特别说明则为强制规范。数据结构

Ø规范:遵循行业规范函数

当有相关国家/行业强制性数据结构标准规范存在时,用于存储某业务数据的业务表在表名命名上原则上应该听从标准规定,其表中相关字段的中文名称(即数据项名称)若标准规范上有规定的应遵循规定。此外,若标准规范上对数据项的类型、长度有规定的,原则上也应当遵循或保证能直接兼容保存和访问。工具

Ø规范:字母所有大写原则编码

全部数据库对象命名字母所有大写。Oracle对大小写不敏感,可是有些数据库对大小写敏感,统一大写有助于在多个数据库间移植。spa

Ø规范:字符范围原则设计

只能使用英文字母、下划线、数字进行命名,首位字符必须是英文字母。日志

Ø规范:分段命名原则代码规范

命名中多个单词间采用下划线分隔,以便阅读同时方便某些工具对数据库对象的映射。如XXX_XXX_XXX,但不限于三段式。

Ø规范:勿用保留词

数据库对象命名不能直接使用数据库保留关键字,但分段中可使用。如USER不能用于表名、列名等,可是USER_NAME能够用于列名,USER_INFO也能够用于表名。详细保留关键字请参见最后第6.1节,保留字。

Ø规范:简单命名原则

命名尽量简单,避免太长的命名,尽可能使用缩写形式,可是缩写也要可以表达命名的含义。数据库对象命名总长度不得超过30字节,以避免超过数据库命名长度限制(Oracle有30的限制,Mysql为64,SQL SERVER也是64)。建议每一个单词分段长度不要超过6位。

Ø建议:富有含义原则

数据库对象命名一般用能表示其内容或者含义的英文单词或其缩写表示也可用其中文名称各字词的拼音首写字母或者拼音简写方式表示。数字应尽可能避免使用。

此外在公安行业,对于业务表上表示业务属性的字段名(即字段英文名)的命名,业内广泛默认的规范一般是以其中文名称的每一个汉字拼音首字母组成。考虑行业习惯和一般思路建议用:建议用于表示用户业务应用属性的数据项字段名采用中文拼音首字母命名,对于其它纯粹用于应用系统内部使用的则尽可能使用英文单词进行命名。另外,当按中文名称拼音首字母组合出来后出现与其它字段名重名时,则将最后命名的这个数据项的最后一个汉字用其完整拼音字母代替。

Ø建议:同义性原则

对于同一含义尽可能使用相同的单词命名,无论使用英文单词、英文缩写仍是拼音首字母,以避免引发误解。如TELEPNHOE的A表中表示固定电话号码,在B表中就不该该用于表示移动电话号码。尽可能避免同一单词表示多种含义的状况。

Ø建议:命名方式一致原则

在一个系统、一个项目中尽可能采用一致的命名方式,都采用英文单词或者拼音首字母。尤为要避免在一个对象命名中同时采用英文单词和拼音首字母。如确实须要在一个项目中采用两种命名方式,考虑系统功能设计相关表(开发)使用英文单词命名,业务相关的表(实施)使用拼音首字母。

Ø建议:扩展性原则

各系统或者项目在遵循本规范的基础上能够根据须要制定更明确的规范细则,以知足项目管理须要。如对模块进行统一命名,而后用于表名的前缀。建议每一个系统在启动开发时创建数据字典,管理命名中使用的英文单词、英文单词缩写、拼音首字母缩写等,对用于命名的单词进行统一管理。

1.2 命名前缀规范

Ø规范:如下对象命名采用固定前缀进行命名,前缀表示数据库对象的类型,前缀代码规范以下:

 

类型

前缀规范

说明

T_

TABLE

无前缀

表空间

TS_

TABLESPACE

用户

无前缀

分区

PT_

PARTITION

视图

VW_

VIEW ,V_用于表示变量

物化视图

MV_

MATERIAL VIEW

索引

IDX_

INDEX缩写,不区分索引类型。约束型索引参照约束命名。

主键约束

PK_

PRIMARY KEY

外键约束

FK_

FOREIGN KEY

惟一约束

UK_

UNIQUE KEY

序列

SEQ_

SEQUENCE

函数

F_

FUNCTION

过程

SP_

STORE PROCEDURE

PKG_

PACKAGE

触发器

TRG_

TRIGGER

数据库链

DBL_

DATABASE LINK

同义词

通常与目标对象同名须要时以SYN_开头

普通变量

V_

VARIABLE

游标变量

CUR_

CURSOR

输入参数

P_

PARAMETER

输出参数

O_

OUT

 

 

1.3 表和列Tables and Table Columns

 

1.3.1 

Ø规范:表的命名以T_开头;
说明:公司一直以来对信息代码表特殊规范以BM_(表码)或者DM_(代码)开头,考虑历史特殊状况信息代码类表命名方式能够沿用历史习惯。表码表的规范名称为信息代码表,所以信息代码表之后将统一使用DM_开头。

Ø规范:表名采用多段式命名,各单词间用下划线分隔;

Ø规范:表名只容许用英文字母、下划线、数字进行命名,不容许用中文或者其余符号;

Ø规范:表名所有字母大写;

Ø规范:根据历史习惯各系统经常使用表类前缀做以下约定

 

表分类

前缀

系统参数类

T_SYS_

用户、权限类

T_USER_

系统日志类

T_LOG_

代码表

BM_

字典类

T_MD

临时表

T_TMP

 

 

Ø建议:表名也用于相关索引、分区、分区表空间、约束、主键等命名,所以为了不相关对象命名长度超过限制,建议表名长度不要超过20。

Ø建议:表的命名方式建议采用T_MOUDLE_ENTITY方式。MOUDLE表示数据库对象所属的系统、模块名或者主题分类。ENTITY表示目的表表明的实体名称。MOUDLE 只能由一个单词组成,ENTITY能够根据须要有多个单词组成。

Ø建议:命名时应尽量地使名称可以清晰准确表达对象的内容,尽量使用能表明其含义的英文单词、英文单词缩写,特殊状况也可采用拼音首字母。

示例:

 

1. 系统信息类表以T_SYS_开头、要素类表以T_IDX_开头、接口类表以T_INF_开头、临时表以T_TMP_开头、统计分析系统表以T_TJFX_开头等。表码类表以BM_开头并不认为违反规范,该例做为规范考虑历史习惯的特例。

2. T_UserInfo、USER_INFO、UserInfo、T_用户信息、TB_USER_INFO、TBL_USER_INFO、T$USER$INFO、等都是违反本规范的,正确命名为T_USER_INFO。

 

 

1.3.2 

Ø规范:列名无需使用前缀,如使用数据类型编码做为前缀;

Ø规范:列名只容许用英文字母、下划线、数字进行命名,不容许用中文或者其余符号;

Ø规范:列名字母所有大写;

Ø规范:列名采用多段式命名时,各单词间用下划线分隔;

Ø规范:列名不能直接使用数据库保留字;

Ø建议:列的命名应尽量地采用简洁明了的列名以准确描述列的内容含义, 根据须要能够一个单词或者多个单词进行命名;

Ø建议:日期类型字段推荐以“_DATE”结尾的名字命名,时间类型的字段推荐以“_TIME”结尾的名字命名。

Ø建议:主键列命名为“ID”或者以 “_ID”为后缀进行命名。对于须要在其余表中引用的主键字段以“_ID”后缀方式命名,普通表主键无需加后缀。如基础信息表的主键通常应命名为“ENTITIE_ID”方式,而一般业务数据明细表的主键则直接命名为“ID”。

示例:

 

1. 正确命名:USER_NAME、AUDIT_TIME、AUDIT_USER

2. 错误命名:USERNAME、UserName、C_USER_NAME、人员姓名,违反规范。

3. 错误命名:COMMENT、AUDIT,违反保留字

 

 

1.4 视图   Views

Ø规范:视图的命名以VW_开头

Ø规范:视图其余命名规范与表名相同

Ø建议:视图的列名通常与基表一致,可是根据须要能够与基表的列名不一样。如接口视图通常根据接口需求进行命名。

1.5 索引Indexes

Ø规范:普通索引名称以IDX_为前缀,约束性索引命名参见约束章节说明。不区分B-TREE索引,位图索引、函数索引等类型。

Ø建议:单字段索引的命名方式为:IDX_表名_字段名,表名无须前缀,命名长度太长时表名和字段名能够考虑缩写。

Ø建议:多字段联合索引命名方式同单字段,考虑长度限制,能够只列出主要字段名或者采用缩写方式描述索引字段。

示例:

 

1. 错误命名:IDX_USER_INFO,没有给出字段名

2. 错误命名:B_USER_INFO_DEPT_CODE,前缀错误。

 

 

1.6 表空间 Tablespace

Ø规范:表空间名以TS_开头

Ø建议:公用(非分区表专用)表空间命名规范为:TS_系统名_类型名。类型分为:数据DATA,索引INDX,也能够根据须要增长其余分类。系统名通常与系统主用户名一致,如门户系统为PORTAL。

Ø建议:分区表专用表空间命名规范为:TS_表名_分区编号。表名能够不用前缀,分区编号尽可能使用可以表示分区范围的编号。如按年分区能够用2004表示2004年的分区。

示例:

 

1. 正确命名:TS_PORTAL_DATA、TS_PORTAL_INDX分别表示门户系统的数据表空间和索引表空间。

2. 错误命名:PORTAL_DATA(无前缀)、TS_Portal_indx(大小写)

 

 

1.7 分区Partitions

Ø建议:分区的命名规范为为PT_表名/索引名_Pn。其中,TNAME是指分区表或分区索引的名称,n是用于区分不一样分区的惟一识别标志。若是分区表是以年份的不一样进行分区,则n为所表明的年份。

1.8 用户、模式 Scheme

Ø规范:数据库用户采用一个表明系统名称含义的英文单词或者拼音首字母进行命名,无前缀。

Ø规范:不得使用数据库自动建立的用户模式,如SYSTEM、SYS、ROOT等。

Ø建议:建立数据库用户时通常不要授予DBA权限。

1.9 完整性约束Integrity Constraints

1.9.1 主键Primary Keys

Ø建议:主键约束的命名格式为PK_表名,表名不带前缀。如采用字段后加PRIMARY KEY方式添加主键则无需命名,由数据库自动命名。

示例:

 

1. 表T_SYS_MENU的主键约束命名为PK_SYS_MENU。

 

 

1.9.2 外键Foreign Keys

Ø建议:外键约束的命名格式为FK_表名_字段名,表名不用前缀,字段名较长时能够缩写。

1.9.3 惟一关键字约束Unique Keys

建议:惟一关键字约束命名规范为UK_表名,表名能够不带前缀。通常状况不会出现一个表除了主键外还有多个惟一约束的状况,确实须要时能够命名为UK_表名_n,n为索引区分标识能够是字段名或者序号。

1.9.4 其余约束Other Constraints

建议:CHECK约束的命名格式为CK_表名_字段名,表名能够不带前缀,名字太长时表名和字段名能够根据须要缩写。

1.10 同义词Synonyms

建议:同义词的目的是用于方便对其余用户或者数据库的对象的使用,所以同义词在命名时,通常与原数据对象名称相同,如须要前缀可采用SYN_。

1.11 序列号Sequences

Ø规范:序列号的命名应以SEQ_开头

Ø规范:序列号命名格式为SEQ_主键列名或者SEQ_表名。前者适用于主键列用有含义字母进行命名的,后者适用于直接用ID命名主键的状况。表名能够不用前缀。

示例:

 

1. 正确命名:SEQ_ORDER_NO用于订单表头主键列ORDER_NO的序列号,SEQ_ORDER_DETAIL用于订单明细表主键列ID的序列号。

2. 错误命名:SQ_ORDER_NO、ORDER_NO、SEQ_order_no

 

 

1.12 包Packages

Ø规范:包的命名以PKG_开头

Ø建议:包的命名格式PKG_MOUDLE,MOUDLE用表明模块或者功能组的名字进行命名。建议在有可能的状况下尽可能使用包。

示例:

 

1. 正确命名:PKG_REPORT表示报表模块的包名

2. 错误命名:PK_REPORT,PK_前缀用于主键。REPORT_PKG,应使用前缀方式命名而不是后缀。Pkg_report,大小写不符合规范。

 

 

1.13 函数Functions

Ø规范:函数命名以F_开头

Ø建议:包中的函数的命名规范为F_NAME,NAME表示相应的功能用途描述;所属的模块或者功能组已经在函数所引用的包中指出。

Ø 建议:独立的函数的命名规范为F_MODULENAMEMOUDLE可用于指明所属的模块的名称或者功能组。对于基本功能函数,MOUDLE_能够不须要。

1.14 存储过程Procedures

1. 规范:除了前缀改成“SP_”,其他与函数相同。

1.15 参数Parameters、变量Variables

2.规范:输入函数命名规范为P_NAME

3.规范:普通类型变量命名规范为V_NAME,如数字、字符串、日期等。CURSOR类型变量使用CUR_做为前缀。隐式游标变量、记录类型变量以及对象类型变量按普通变量规范。

4.规范:输出参数命名规范为O_NAME,输出参数放在参数列表最后。

5. 建议:命名规范中的NAME部分应能清楚表示变量或者参数的含义,以提升代码可读性。避免使用V_一、V_M、P_一、P_N等没法表达具体含义的参数或者变量命名。

示例:

 

1. 正确变量命名:

DECLARE
   V_ORDER_DATE CHAR(8);--订单日期
   V_ORDER_NO NUMBER(16);--订单号
   CURSOR CUR_ORDER_LIST IS SELECT ……;

2. 错误变量命名:

DECLARE
   ORDER_DATE CHAR(8);--没有规定前缀
   ORDER_NO NUMBER(16); --没有规定前缀
   v_order_detail_id number(16);--大小写不规范

3. 正确参数命名:
CREATE PROCEDURE P_NAME(
   P_USER_ID VARCHAR2,--用户编号
   O_ORDER_COUNT OUT NUMBER—输出订单数
)  AS ……

4. 错误参数命名:
CREATE PROCEDURE P_NAME(
   USER_ID VARCHAR2,--前缀不规范
   P_dept_code VARCHAR,--大小写错误
   P_2 OUT NUMBER—前缀不规范,命名没有含义
)  AS ……

 

 

1.16 触发器 Triggers

规范:触发器的命名规范为:TRG_表名_触发器类型。表名不带前缀,触发器的类型由触发时机和触发动做组成:‘B’表示前触发,‘A’表示后触发,‘INSERT’‘UPDATE’‘DELETE’描述触发动做。

示例:

 

1.正确命名:

针对业务系统缴费表(前触发)的触发器的命名为TRG_BS_CHARGE_BINSERT。

2.错误命名:

TRG_BS_CHARGE ,无规定后缀BS_CHARGE_BINSERT,无规定前缀TrgBsCharge,违法大小写规定和分段命名原则

相关文章
相关标签/搜索