数据库的命名规范榜样六
分段式的
1.1 基本命名原则
以下基本原则适⽤于所有数据库对象命名,如⽆特别说明则为强制规范。
Ø规范:遵循⾏业规范
当有相关国家/⾏业强制性数据结构标准规范存在时,⽤于存储某业务数据的业务表在表名命名上原则上应该遵从标准规定,其表中相关字段的中⽂名称(即数据项名称)若标准规范上有规定的应遵循规定。此外,若标准规范上对数据项的类型、长度有规定的,原则上也应当遵循或保证能直接兼容保存和访问。
Ø规范:字母全部⼤写原则
所有数据库对象命名字母全部⼤写。Oracle对⼤⼩写不敏感,但是有些数据库对⼤⼩写敏感,统⼀⼤写有助于在多个数据库间移植。
Ø规范:字符范围原则
只能使⽤英⽂字母、下划线、数字进⾏命名,⾸位字符必须是英⽂字母。
Ø规范:分段命名原则
命名中多个单词间采⽤下划线分隔,以便阅读同时⽅便某些⼯具对数据库对象的映射。如XXX_XXX_XXX,但不限于三段式。
Ø规范:勿⽤保留词
数据库对象命名不能直接使⽤数据库保留关键字,但分段中可以使⽤。如USER不能⽤于表名、列名等,但是USER_NAME可以⽤于列名,USER_INFO也可以⽤于表名。详细保留关键字请参见最后第6.1节,保留字。
Ø规范:简单命名原则
雪海飘香命名尽可能简单,避免太长的命名,尽量使⽤缩写形式,但是缩写也要能够表达命名的含义。数据库对象命名总长度不得超过30字节,以免超过数据库命名长度限制(Oracle有30的限制,Mysql为64,SQL SERVER也是64)。建议每个单词分段长度不要超过6位。
Ø建议:富有含义原则
数据库对象命名通常⽤能表⽰其内容或者含义的英⽂单词或其缩写表⽰也可⽤其中⽂名称各字词的拼⾳⾸写字母或者拼⾳简写⽅式表⽰。数字应尽量避免使⽤。
此外在公安⾏业,对于业务表上表⽰业务属性的字段名(即字段英⽂名)的命名,业内普遍默认的规范通常是以其中⽂名称的每个汉字拼⾳⾸字母组成。考虑⾏业习惯和通常思路建议⽤:建议⽤于表⽰⽤户业务应⽤属性的数据项字段名采⽤中⽂拼⾳⾸字母命名,对于其它纯粹⽤于应⽤系统内部使⽤的则尽量使⽤英⽂单词进⾏命名。另外,当按中⽂名称拼⾳⾸字母组合出来后出现与其它字段名重名时,则将最后命名的这个数据项的最后⼀个汉字⽤其完整拼⾳字母代替。
Ø建议:同义性原则
对于同⼀含义尽量使⽤相同的单词命名,不管使⽤英⽂单词、英⽂缩写还是拼⾳⾸字母,以免引起误解。如TELEPNHOE的A表中表⽰固定电话号码,在B表中就不应该⽤于表⽰移动电话号码。尽量避免同⼀单词表⽰多种含义的情况。
Ø建议:命名⽅式⼀致原则
在⼀个系统、⼀个项⽬中尽量采⽤⼀致的命名⽅式,都采⽤英⽂单词或者拼⾳⾸字母。尤其要避免在⼀个对象命名中同时采⽤英⽂单词和拼⾳⾸字母。如确实需要在⼀个项⽬中采⽤两种命名⽅式,考虑系统功能设计相关表(开发)使⽤英⽂单词命名,业务相关的表(实施)使⽤拼⾳⾸字母。
Ø建议:扩展性原则
各系统或者项⽬在遵循本规范的基础上可以根据需要制定更明确的规范细则,以满⾜项⽬管理需要。如对模块进⾏统⼀命名,然后⽤于表名的前缀。建议每个系统在启动开发时建⽴数据字典,管理命名中使⽤的英⽂单词、英⽂单词缩写、拼⾳⾸字母缩写等,对⽤于命名的单词进⾏统⼀管理。
1.2 命名前缀规范
菜种
Ø规范:以下对象命名采⽤固定前缀进⾏命名,前缀表⽰数据库对象的类型,前缀代码规范如下:
1.3 表和列Tables and Table Columns
1.3.1 表
Ø规范:表的命名以T_开头;
说明:公司⼀直以来对信息代码表特殊规范以BM_(表码)或者DM_(代码)开头,考虑历史特殊情况信息代码类表命名⽅式可以沿⽤历史习惯。表码表的规范名称为信息代码表,因此信息代码表以后将统⼀使⽤DM_开头。
Ø规范:表名采⽤多段式命名,各单词间⽤下划线分隔;
Ø规范:表名只允许⽤英⽂字母、下划线、数字进⾏命名,不允许⽤中⽂或者其他符号;
Ø规范:表名全部字母⼤写;
Ø规范:根据历史习惯各系统常⽤表类前缀作如下约定
Ø建议:表名也⽤于相关索引、分区、分区表空间、约束、主键等命名,因此为了避免相关对象命名长度超过限制,建议表名长度不要超过20。
Ø建议:表的命名⽅式建议采⽤T_MOUDLE_ENTITY⽅式。MOUDLE表⽰数据库对象所属的系统、模块名或者主题分类。ENTITY表⽰⽬的表代表的实体名称。MOUDLE 只能由⼀个单词组成,ENTITY可以根据需要有多个单词组成。
Ø建议:命名时应尽可能地使名称能够清晰准确表达对象的内容,尽可能使⽤能代表其含义的英⽂单词、英⽂单词缩写,特殊情况也可采⽤拼⾳⾸字母。
⽰例:T_UrInfo、USER_INFO、UrInfo、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、UrName、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_MODULE_ NAME,MOUDLE可⽤于指明所属的模块的名称或者功能组。对于基本功能函
数,MOUDLE_可以不需要。
1.14 存储过程Procedures
1. 规范:除了前缀改为“SP_”,其余与函数相同。
1.15 参数Parameters、变量Variables
2.规范:输⼊函数命名规范为P_NAME
3.规范:普通类型变量命名规范为V_NAME,如数字、字符串、⽇期等。CURSOR类型变量使⽤CUR_作为前缀。隐式游标变量、记录类型变量以及对象类型变量按普通变量规范。
4.规范:输出参数命名规范为O_NAME,输出参数放在参数列表最后。
5. 建议:命名规范中的NAME部分应能清楚表⽰变量或者参数的含义,以提⾼代码可读性。避免使⽤V_1、V_M、P_1、P_N等⽆法表达具体含义的参数或者变量命名。
⽰例:
1. 1. 正确变量命名:
2. DECLARE
3. V_ORDER_DATE CHAR(8);--订单⽇期
4. V_ORDER_NO NUMBER(16);--订单号
5. CURSOR CUR_ORDER_LIST IS SELECT ……;
6. 2. 错误变量命名:
7. DECLARE
8. ORDER_DATE CHAR(8);--没有规定前缀
9. ORDER_NO NUMBER(16); --没有规定前缀
0. v_order_detail_id number(16);--⼤⼩写不规范
1. 3. 正确参数命名:
2. CREATE PROCEDURE P_NAME(
3. P_USER_ID VARCHAR2,--⽤户编号
4. O_ORDER_COUNT OUT NUMBER—输出订单数
5. ) AS ……
6. 4. 错误参数命名:
7. CREATE PROCEDURE P_NAME(
8. USER_ID VARCHAR2,--前缀不规范
望云之情