使用统一的命名和编码规范,使数据库命名及编码风格标准化,以便于阅读、理解和继承。
本规范适用于公司范围内所有以ORACLE作为后台数据库的应用系统和项目开发工作。
3、 对象命名规范
3.1 数据库和SID
数据库名定义为系统名+模块名
Ø
Ø
3.2 表相关
3.2.1 表空间
Ø
Ø
Ø
Ø
Ø
Ø
3.2.2 表空间文件
表空间文件命名以表空间名+两位数序号(序号从01开始)组成,如Aud_data01等
3.2.3 表
表命名要遵循以下原则:
模式指的是用户,模块?
Ø
Ø
Ø
Ø
Ø
Ø
dft_gy_cbap:系统名(电费 df)+t_+模块名(高压 gy)+_+表义名(抄表安排 cbap)
dft_cbbj: 系统名(电费 df)+t_+表义名(抄表标记 cbbj)
dft_tmp_hj: 系统名(电费 df)+tmp+表义名(合计hj)(此处为临时表)
Ø
3.2.4 属性(列或字段)
属性命名遵循以下原则:
Ø
Ø
Ø
Ø
Ø
3.2.5 主键
Ø
Ø
如“pk_YHXX_IDKH”等
3.2.6 外键
表外键命名为: “fk+_+表名(或缩写)+_主表名(或缩写)+_+主键标识”
如“fk_YHLX_YHXX_SFZH”等
3.2.7 CHECK约束
CHECK约束命名为: “chk+_+CHECK约束的列名(或缩写)”
3.2.8 UNIQUE约束
UNIQUE约束命名为: “unq+_+UNIQUE约束的列名(或缩写)”
3.2.9 索引
索引的命名为:“表名(或缩写)+_+列名+_idx”。
其中多单词组成的属性列列名取前几个单词首字符再加末单词首字符组成
如yd_kh表khid上的index: yd_kh_khid_idx
3.2.10 触发器
Ø
系统名+tr_+<表名>_+
Ø
系统名+tr_+<表名>_+bef_+[_row]
Ø
系统名+ti_+<表名>+_++[_row]
Ø
i,u,d分别表示insert、update和delete
行级触发器,后加_row标识,语句级触发器不加,如 yddftr_CSH_i_row
3.2.11 簇
簇以簇中要存储的各个表(或表别名)及表间加and的组成命名,即表“A+And+表B…”,如存储GR(工人)和GRJN(工人技能)表的簇命名为GRAndGRJN
3.3 视图
视图命名以系统名v_+模块名作为前缀,其他命名规则和表的命名类似
3.4 序列
序列命名以seq_+含义名组成
3.5 同义词
同义词命名与其基础对象的名称一致,但要去除其用户前缀或含有远程数据库链接的后缀
3.6 存储对象相关
3.6.1 存储过程
存储过程命名由“系统名+sp+_+存储过程标识(缩写)”组成
存储过程标识要以实际含义的汉语拼音的首字符构成,并用下划线分割各个组成部分。
如增加代理商的帐户的存储过程为“sfsp_ZJDLSZH”。
3.6.2 函数
函数命名由“系统名+f+_+函数标识”组成
3.6.3 包
包命名由“系统名+pkg+_+包标识”组成
3.6.4 函数文本中的变量采用下列格式命名:
Ø
Ø
Ø
Ø
Ø
Ø
Ø
3.7 用户及角色
Ø
Ø
3.8 数据库链接
Ø
Ø
3.9 命名中的其它注意事项
Ø
Ø
Ø
4、 编码规范
4.1 一般性注释
4.1.1 注释尽可能简洁、详细而全面
4.1.2 创建每一数据库对象时都要加上COMMENT ON注释,以说明该对象的功能和用途;建表时,对某些数据列也要加上COMMENT ON注释,以说明该列和/或列取值的含义。
如:XX表中有CZZT列属性为NUMBER(10, 0)可加COMMENT ON注释如下
4.1.3 注释语法包含两种情况:单行注释、多行注释
单行注释:注释前有两个连字符(--),一般对变量、条件子句可以采用该类注释。
多行注释:符号之间的内容为注释内容。对某项完整的操作建议使用该类注释。
4.2 函数文本注释
4.2.1 在每一个块和过程(存储过程、函数、包、触发器、视图等)的开头放置注释
CREATE [OR REPLACE] PROCEDURE dfsp_xxx
…
4.2.2 传入参数的含义应该有所说明。如果取值范围确定,也应该一并说明。取值有特定含义的变量(如boolean类型变量),应给出每个值的含义。
4.2.3
通常,简单使用单行注释就行了,例如
4.2.4 在块的每个主要部分之前添加注释
在块的每个主要部分之前增加注释,解释下—组语句目的,最好是说明该段语句及算法的目的以及要得到的结果,但不要对其细节进行过多的描述
4.2.5 在块和过程的开头注释中还可以增加要访问的数据库等信息
4.3 常用SQL语句的编写规范
4.3.1 CREATE语句
CREATE TABLE dft_dksz(
)
4.3.2 SELECT语句
查询语句采用以下原则编写(可最大化重用共享池中的SQL语句,提高应用程序性能):
Ø
(1) 由SELECT开头,后跟一个显示查询结果的列表;
(2) 由FROM开头,后跟一个或多个获取数据所涉及的表;
(3) 由WHERE开头,后跟一个或多个确定所需值的条件;
(4) 由GROUP BY开头,后跟一个或多个表列名,通过这些列以对查询结果进行汇总;
(5) 由ORDER BY开头,后跟一个或多个表列名,通过这些列以对查询结果进行排序。
Ø
SELECT col1, col2, col3
Ø
Ø
Ø
SELECT col1, col2, col3, col4, col5, col6,
Ø
WHERE
Ø
Ø
WHERE X = Y
4.3.3 INSERT语句
INSERT INTO <要插入的表名>
(<列1>, <列2>, .., <列n-1>, <列n>)
VALUES (<列1值>, <列2值>, .., <列n-1值>, <列n值>)
4.3.4 UPDATE语句
UPDATE <要更新的表名>
SET <要更新的列> = <列值>
4.3.5 DELETE语句
DELETE FROM table1
WHERE col1 = '???'
4.4 条件执行语句(IF)编写规范
条件执行语句IF…ELSE按以下格式编写
IF <条件表达式>
THEN
[ELSE (或ELSIF<条件表达式>)
THEN
END IF;
注:
(1)
IF间可包含一条或多条PL/SQL语句,而不需要加BEGIN和END
(2)
(3)
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 函数文本(存储过程、函数和包等)
Ø
BEGIN
…
EXCEPTION
WHEN excep—name1 THEN
…
WHEN excep—name2 THEN
…
WHEN OTHERS THEN
…
END;
Ø
CREATE OR REPLACE PROCEDURE XXXsp_XXX IS
…
BEGIN
…
END XXXsp_XXX;