1、数据库命名规范数据库命名规范1、编写目的使用统一的命名和编码规范,使数据库命名及编码风格标准化,以便于阅读、理解和继承。2、适用范围本规范适用于公司范围内所有以ORACLE作为后台数据库的应用系统和项目开发工作。3、对象命名规范3.1 数据库和SID数据库名定义为系统名+模块名 全局数据库名和例程SID 名要求一致 因SID 名只能包含字符和数字,所以全局数据库名和SID 名中不能含有“_”等字符3.2 表相关3.2.1 表空间 面向用户的专用数据表空间以用户名+_+data命名 ,如Aud 用户专用数据表空间可命名为Aud_data 面向应用的表空间:应用名+_+模块名+_data (数据空
2、间)应用名+_+模块名+_idx (索引空间)应用名+_+模块名+_tmp (临时空间)3.2.2 表空间文件表空间文件命名以表空间名+两位数序号(序号从01开始)组成,如dms_vorder_data01 等3.2.3 表表命名要遵循以下原则: 一般表采用“系统名+t_+模块名+_+表义名” 格式构成(模块名一般不超过10位) 若数据库中只含有单个模块,命名可采用“系统名+t_+表义名”格式构成 模块名或表义名均以其英文命名,命名过程中适当截取,最多不超过50个字符; 表别名命名规则:取表义名的前3 个字符加最后一个字符。如果存在冲突,适当增加字符(如取表义名的前4 个字符加最后一个字符等)
3、 临时表采用“系统名+t_tmp_+表义名” 格式构成 表的命名如 dmst_vorder_declare:系统名(经销商管理系统 dms)+t_+模块名(整车订单 vorder)+_+表义名(申报 declare) 关联表命名为Re_表A_表B,Re 是Relative的缩写,表A 和表B均采用其表义名或缩写形式。3.2.4 属性(列或字段)属性命名遵循以下原则: 采用有意义的列名,为实际含义的英文截取,且字符间可有下划线 属性名前不要加表名等作为前缀 属性后不加任何类型标识作为后缀 关联字段命名以 “cd+_+关联表的表义名(或缩写)+_+字段名”进行所有表必须有以下字段:字段名中文字段类
4、型备注IdId号Number表主键,对应sequence 为seq_+表名factorycode工厂编码Varchar2(50)createtime创建时间Date默认系统时间createby创建人Varchar2(100)updatedtime修改时间Dateupdatedby修改人Varchar2(100)Lockedflag锁定标记Varchar2(2)默认为0, 1为锁定,0为解锁Lockedtime锁定时间DateLockedby锁定人Varchar2(100)Deleteflag删除标记Varchar2(2)默认为0, 1为删除,0为正常可用注意:在用POWER DESIGNER进
5、行设计时,注意将每个字段的备注都填上(内容可为其中文含义及特殊说明,以便数据库文档的生成及后续开发的人员的理解)3.2.5 主键 任何表都必须定义主键 表主键命名为:“pk+_+表名(或缩写)+_+主键标识3.2.6 外键表外键命名为: “fk+_+表名(或缩写)+_主表名(或缩写)+_+主键标识3.2.7 CHECK约束CHECK 约束命名为: “chk+_+CHECK约束的列名(或缩写)”3.2.8 UNIQUE约束UNIQUE 约束命名为: “unq+_+UNIQUE约束的列名(或缩写)”3.2.9 索引索引的命名为:“idx_+表名(或缩写)+_+列名”。其中多单词组成的属性列列名取前
6、几个单词首字符再加末单词首字符组成如yd_kh 表khid 上的index: idx_yd_kh_khid3.2.10 触发器 AFTER型触发器系统名+tr_+_+aft +_row BEFORE型触发器系统名+tr_+_+bef_+_row INSTEAD OF型触发器系统名+ti_+_+_row 各种类型的触发器中i,u,d 分别表示insert、update 和delete行级触发器,后加_row 标识,语句级触发器不加,如 yddftr_CSH_i_row3.2.11 簇簇以簇中要存储的各个表(或表别名)及表间加and的组成 命名,即表“A+And+表B”,如存储GR(工人)和GRJ
7、N(工人技能)表的簇命名为GRAndGRJN3.3 视图视图命名以系统名+v_+模块名作为前缀,其他命名规则和表的命名类似3.4 序列序列命名以seq_+含义名(一般为表名)组成3.5 同义词同义词命名与其基础对象的名称一致,但要去除其用户前缀或含有远程数据库链接的后缀3.6 存储对象相关3.6.1 存储过程存储过程命名由“系统名+sp_+存储过程标识(缩写)”组成存储过程标识要以实际含义的汉语拼音的首字符构成,并用下划线分割各个组成部分。如增加代理商的帐户的存储过程为“dfsp_ZJDLSZH”。3.6.2 函数函数命名由“系统名+fn_+函数标识”组成3.6.3 包包命名由“系统名+pkg
8、_+包标识”组成3.6.4 函数文本中的变量采用下列格式命名: 参数变量命名采用“i (o或io)+_+名称”形式,前缀i 或o 表输入还是输出参数 过程变量命名采用“l_+名称”形式 全局包变量命名采用“g_+名称”形式 游标变量命名采用cur_“名称”形式 常量型变量命名采用“c+_+名称”形式 变量名采用小写,若属于词组形式,用下划线分隔每个单词 变量用来存放表中的列或行数据值时,使用%TYPE、%ROWTYPE 方式声明变量,使变量声明的类型与表中的保持同步,随表的变化而变化3.7 用户及角色 用户命名由“系统名称+_+user+_+名词(或缩写)或名词短语(或缩写)”组成 角色命名由
9、“系统名称+_+role+_+名词(或缩写)或名词短语(或缩写)”组成3.8 数据库链接 数据库链接命名由“远程服务器名+_+数据库名+_+link”组成 若远程服务器名和数据库名一致,上式“_+数据库名”部分省去3.9 命名中的其它注意事项 命名都不得超过50个字符。 不要在对象名的字符之间留空格 小心保留词,要保证你的命名没有和保留词、数据库系统或者常用访问方法冲突4、 编码规范 4.1 一般性注释4.1.1 注释尽可能简洁、详细而全面4.1.2 创建每一数据库对象时都要加上COMMENT ON注释以说明该对象的功能和用途;建表时,对某些数据列也要加上COMMENT ON注释,以说明该列和
10、/或列取值的含义。如:XX 表中有CZZT列属性为NUMBER(10, 0)可加COMMENT ON 注释如下COMMENT ON COLUMN XX.CZZT IS 0 = 正常, 1 = 等待, 2 = 超时, 3 = 登出4.1.3 注释语法包含两种情况:单行注释、多行注释单行注释:注释前有两个连字符(-),一般对变量、条件子句可以采用该类注释。多行注释:符号/*和*/之间的内容为注释内容。对某项完整的操作建议使用该类注释。4.2 函数文本注释4.2.1 在每一个块和过程(存储过程、函数、包、触发器、视图等)的开头放置注释/* *name : -函数名 *function : -函数功能
11、 *input : -输入参数 *output : -输出参数 *author : -作者 *Create Date : -创建时间 *Change History : -函数更改历史(包括作者、时间、更改内容等) 2010-04-15 李成明 修改原因和修改内容*/ CREATE OR REPLACE PROCEDURE dfsp_xxx 4.2.2 传入参数的含义应该有所说明如果取值范围确定,也应该一并说明。取值有特定含义的变量(如boolean类型变量),应给出每个值的含义。4.2.3 在每一个变量声明的旁边添加注释。说明该变量要用作什么通常,简单使用单行注释就行了,例如l_sfzh C
12、HAR(11) -身份证号码4.2.4 在块的每个主要部分之前添加注释在块的每个主要部分之前增加注释,解释下组语句目的,最好是说明该段语句及算法的目的以及要得到的结果,但不要对其细节进行过多的描述4.2.5 在块和过程的开头注释中还可以增加要访问的数据库等信息4.3 常用SQL 语句的编写规范4.3.1 CREATE语句CREATE TABLE dft_dksz(YHBS VARCHAR2(20) NOT NULL, ZHGX DATE, DKKHD VARCHAR2(24), CONSTRAINT pk_dksz_yhbs PRIMARY KEY (YHBS) )4.3.2 SELECT语句
13、查询语句采用以下原则编写(可最大化重用共享池中的SQL 语句,提高应用程序性能): 将SELECT 语句分为5部分:(1) 由SELECT 开头,后跟一个显示查询结果的列表;(2) 由FROM 开头,后跟一个或多个获取数据所涉及的表;(3) 由WHERE 开头,后跟一个或多个确定所需值的条件;(4) 由GROUP BY开头,后跟一个或多个表列名,通过这些列以对查询结果进行汇总;(5) 由ORDER BY开头,后跟一个或多个表列名,通过这些列以对查询结果进行排序。 每个部分分行编写,将每一行的第一个关键字与第一行的SELECT尾部对齐,如SELECT col1, col2, col3 FROM
14、table1 WHERE col1 col2 GROUP BY col1, col2 ORDER BY col1; 关键字用大写,列名和表名采用小写 语句中嵌入逗号时,在逗号后面加一空格,当逗号是最后一个字符时,把它放在本行 当语句的同一部分要延续到下一行时,按下列格式排列:SELECT col1, col2, col3, col4, col5, col6, col7, col8, col9, col10 将语句中WHERE 和AND 部分格式化,书写布局类似于WHERE AND AND 当语句中出现括号时,括号的两边不留空格 在SQL 语句使用运算符时,操作两边应各留一个空格,如WHERE
15、X = Y AND A = B AND C = D4.3.3 INSERT语句INSERT INTO (, , ., , ) VALUES (, , ., , )4.3.4 UPDATE语句UPDATE SET = 4.3.5 DELETE语句DELETE FROM table1 WHERE col1 = ?4.4 条件执行语句(IF)编写规范条件执行语句IFELSE 按以下格式编写IF THEN ELSE (或ELSIF) THEN END IF;注:(1) 在IFTHEN和ELSE(或ELSIF)及ELSETHEN和END IF间可包含一条或多条PL/SQL语句,而不需要加BEGIN 和E
16、ND(2) IFELSEENDIF 语句可以嵌套(3) 注意ELSIF的写法4.5 循环语句编写规范4.5.1 简单循环语句LOOP EXIT WHEN END LOOP;4.5.2 FOR循环语句FOR 变量 IN 变量取值范围LOOP END LOOP;4.5.3 WHILE循环语句WHILE LOOP END LOOP;4.6 函数文本(存储过程、函数和包等) 对于存储过程、函数等程序块都要有异常处理部分,在异常部分的最后都要设置OTHERS异常情态处理器,以提高程序的自检能力,格式如下:BEGIN EXCEPTION WHEN excepname1 THEN WHEN excepname2 THEN WHEN OTHERS THEN END; 对于子程序、触发器、包等带名的程序块,要使用结束标识,如CREATE OR REPLACE PROCEDURE XXXsp_XXX IS BEGIN END XXXsp_XXX;/* 此处的过程名XXXsp_XXX是可选的,规范要求写上,与块开始的CREATE相对应 */
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1