ORACLE数据库命名编码规范
版本记录:
当前版本:
作 者:
完成日期:
签 收 人:
文件状态:
[ ] 草稿
[√] 正式发布
[ ] 正在修改
签收日期:
1、 编写目的
使用统一的命名和编码规范,使数据库命名及编码风格标准化,以便于阅读、理解和
继承。
2、 适用范围
本规范适用于公司范围内所有以ORACLE作为后台数据库的应用系统和项目开发工作。
3、 对象命名规范
3.1 数据库和SID
数据库名定义为系统名+模块名
Ø 全局数据库名和例程SID 名要求一致
Ø 因SID 名只能包含字符和数字,所以全局数据库名和SID 名中不能含有“_”等字符
3.2 表相关
3.2.1 表空间
Ø 面向用户的专用数据表空间以用户名+_+data命名 ,如Aud 用户专用数据表空间可命
名为Aud_data
Ø 面向用户的专用索引表空间以用户名+_+idx命名
第2/9页
Ø 面向用户的专用临时表空间以用户名+_+tmp命名
Ø 面向用户的专用回滚段表空间以用户名+_+rbs 命名
Ø 面向应用的表空间以应用名+_data/应用名+_idx/应用名+_tmp/应用名+_rbs 命名
Ø LOB 段数据专用表空间以其数据表空间+_+lobs 命名,如上例中数据表空间为
Aud_data,则LOB 段表空间可命名为Aud_data_lobs
3.2.2 表空间文件
表空间文件命名以表空间名+两位数序号(序号从01开始)组成,如Aud_data01 等
3.2.3 表
表命名要遵循以下原则:
Ø 一般表采用“系统名+t_+模块名+_+表义名” 格式构成
Ø 若数据库中只含有单个模块,命名可采用“系统名+t_+表义名”格式构成
Ø 模块名或表义名均以其汉语拼音的首字符命名,表义名中汉语拼音均采用小写,且
字符间不加分割符;
Ø 表别名命名规则:取表义名的前3 个字符加最后一个字符。如果存在冲突,适当增
加字符(如取表义名的前4 个字符加最后一个字符等)
Ø 临时表采用“系统名+t_tmp_+表义名” 格式构成
Ø 表的命名如
dft_gy_cbap:系统名(电费 df)+t_+模块名(高压 gy)+_+表义名(抄表安排 cbap)
dft_cbbj: 系统名(电费 df)+t_+表义名(抄表标记 cbbj)
dft_tmp_hj: 系统名(电费 df)+tmp+表义名(合计hj)(此处为临时表)
Ø 关联表命名为Re_表A_表B,Re 是Relative的缩写,表A 和表B均采用其表义名或
缩写形式。
3.2.4 属性(列或字段)
属性命名遵循以下原则:
Ø 采用有意义的列名,为实际含义的汉语拼音的首字符,且字符间不加任何分割符
Ø 属性名前不要加表名等作为前缀
Ø 属性后不加任何类型标识作为后缀
Ø 不要使用“ID”作为列名
Ø 关联字段命名以 “cd+_+关联表的表义名(或缩写)+_+字段名”进行
第3/9页
3.2.5 主键
Ø 任何表都必须定义主键
Ø 表主键命名为:“pk+_+表名(或缩写)+_+主键标识”
如“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 触发器
Ø AFTER型触发器
系统名+tr_+<表名>_+<i,u,d的任意组合> +[_row]
Ø BEFORE型触发器
系统名+tr_+<表名>_+bef_<i,u,d的任意组合>+[_row]
Ø INSTEAD OF型触发器
系统名+ti_+<表名>+_+<i,u,d的任意组合>+[_row]
Ø 各种类型的触发器中
i,u,d 分别表示insert、update 和delete
行级触发器,后加_row 标识,语句级触发器不加,如 yddftr_CSH_i_row
3.2.11 簇
第4/9页
簇以簇中要存储的各个表(或表别名)及表间加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 函数文本中的变量采用下列格式命名:
Ø 参数变量命名采用“i (o或io)+_+名称”形式,前缀i 或o 表输入还是输出参数
Ø 过程变量命名采用“l+_+名称”形式
Ø 全局包变量命名采用“g+_+名称”形式
Ø 游标变量命名采用“名称+_+cur”形式
Ø 常量型变量命名采用“c+_+名称”形式
Ø 变量名采用小写,若属于词组形式,用下划线分隔每个单词
Ø 变量用来存放表中的列或行数据值时,使用%TYPE、%ROWTYPE 方式声明变量,使变量声
第5/9页
明的类型与表中的保持同步,随表的变化而变化
3.7 用户及角色
Ø 用户命名由“系统名称+_+user+_+名词(或缩写)或名词短语(或缩写)”组成
Ø 角色命名由“系统名称+_+role+_+名词(或缩写)或名词短语(或缩写)”组成
3.8 数据库链接
Ø 数据库链接命名由“远程服务器名+_+数据库名+_+link”组成
Ø 若远程服务器名和数据库名一致,上式“_+数据库名”部分省去
3.9 命名中的其它注意事项
Ø 命名都不得超过30个字符。
Ø 不要在对象名的字符之间留空格
Ø 小心保留词,要保证你的命名没有和保留词、数据库系统或者常用访问方法冲突
4、 编码规范
4.1 一般性注释
4.1.1 注释尽可能简洁、详细而全面
4.1.2 创建每一数据库对象时都要加上COMMENT ON注释,以说明该对象的功能和用途;建表时,
对某些数据列也要加上COMMENT ON注释,以说明该列和/或列取值的含义。
如: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 在每一个块和过程(存储过程、函数、包、触发器、视图等)的开头放置注释
/************************************************************************
第6/9页
*name : --函数名
*function : --函数功能
*input : --输入参数
*output : --输出参数
*author : --作者
*CreateDate : --创建时间
*UpdateDate : --函数更改信息(包括作者、时间、更改内容等)
*************************************************************************/
CREATE [OR REPLACE] PROCEDURE dfsp_xxx

4.2.2 传入参数的含义应该有所说明。如果取值范围确定,也应该一并说明。取值有特定含义
的变量(如boolean类型变量),应给出每个值的含义。
4.2.3 在每一个变量声明的旁边添加注释。说明该变量要用作什么
通常,简单使用单行注释就行了,例如
l_sfzh CHAR(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语句
查询语句采用以下原则编写(可最大化重用共享池中的SQL 语句,提高应用程序性能):
Ø 将SELECT 语句分为5部分:
(1) 由SELECT 开头,后跟一个显示查询结果的列表;
第7/9页
(2) 由FROM 开头,后跟一个或多个获取数据所涉及的表;
(3) 由WHERE 开头,后跟一个或多个确定所需值的条件;
(4) 由GROUP BY开头,后跟一个或多个表列名,通过这些列以对查询结果进行汇总;
(5) 由ORDER BY开头,后跟一个或多个表列名,通过这些列以对查询结果进行排序。
Ø 每个部分分行编写,将每一行的第一个关键字与第一行的SELECT尾部对齐,如
SELECT col1, col2, col3
FROM 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 X = Y
AND A = B
AND C = D
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 = '???'
第8/9页
4.4 条件执行语句(IF)编写规范
条件执行语句IF…ELSE 按以下格式编写
IF <条件表达式>
THEN
<一条或多条语句>
[ELSE (或ELSIF<条件表达式>)
THEN
<一条或多条语句>
END IF;
注:
(1) 在IF…THEN和ELSE(或ELSIF)及ELSE…THEN和END IF间可包含一条或多条PL/SQL
语句,而不需要加BEGIN 和END
(2) IF…ELSE…ENDIF 语句可以嵌套
(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 函数文本(存储过程、函数和包等)
第9/9页
Ø 对于存储过程、函数等程序块都要有异常处理部分,在异常部分的最后都要设置OTHERS
异常情态处理器,以提高程序的自检能力,格式如下:
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;/* 此处的过程名XXXsp_XXX是可选的,规范要求写上,与块开始的CREATE相对应 */

Oracle数据库命名编码规范相关推荐

  1. SQL SERVER数据库命名编码规范

    出处: http://szp930.blog.163.com/blog/static/89688252007106104857647/ 版本记录: 当前版本: 作 者: 完成日期: 签 收 人: 文件 ...

  2. 什么是oracle命名,ORACLE数据库命名规范

    ORACLE数据库命名规范 1 目的 规范数据库各种对象的命名规则. 2 数据库命名原则 2.1 数据文件 如果数据库采用文件系统,而不是裸设备,约定下列命名规则: 1)数据文件以表空间名为开始,以. ...

  3. oracle命令行查看编码,Oracle数据库查看编码和修改编码

    首先查看oracle数据库的编码 SQL> select * from nls_database_parameters where parameter ='NLS_CHARACTERSET'; ...

  4. ORACLE数据库设置编码

    下面为您介绍的是ORACLE数据库设置编码,如果您在ORACLE数据库设置方面遇到过类似的问题,不妨一看. ORACLE数据库设置编码: $ sqlplus / as sysdba    SQL> ...

  5. oracle数据库字符6,oracle 数据库字符编码

    理解ORACLE 字符集[转] 一.引言 ORACLE数据库字符集,即Oracle全球化支持(Globalization Support),或即国家语言支持(NLS)其作用是用本国语言和格式来存储.处 ...

  6. oracle转64编码,[转]将oracle数据库的编码变成utf-8

    1.改客户端字符集:通过WINDOWS的运行菜单运行Regedit,修改注册表 Start -> Run -> Rededit Under registry Editor - > H ...

  7. Oracle数据库命名规范

    1.1约定 u  数据库的schema,数据库对象如表.字段.索引.序列.存储过程等的命名约定: u  命名使用富有意义的大写英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划线分割: u  各表 ...

  8. oracle 数据库dg搭建规范1

    2019独角兽企业重金招聘Python工程师标准>>> #=====================第一部分========================# ----------- ...

  9. oracle数据库字符编码utf-8改为ZHS16GBK

    首先查看服务端字符集 select * from v$nls_parameters where parameter = 'NLS_CHARACTERSET' NLS_CHARACTERSET WE8M ...

最新文章

  1. 绘图的尺寸_AutoCAD新功能:参数化绘图,绘制看似简单,实际复杂,案例详解...
  2. JAVA爬虫Jsoup,抓取房价
  3. 在python中可以用什么关键字来声明一个类_3. Python基础语法
  4. 信息学奥赛一本通(1010:计算分数的浮点数值)
  5. day 59Bootstrap自带图表和fontawesome图标 导航和导航条 Bootstrap常用插件 sweetalert插件介绍...
  6. 【新手速成】菜鸟如何在三天内完成系统开发
  7. 亚马逊入驻商用户画像分析
  8. 开源版“微信”,了解一下~
  9. ae无法连接ame_怎么我的AE无法连接media encoder?如何解决AE链接不了media encoder的问题?求教谢谢...
  10. python集合运算求出经理和技术人员有几人_python练习集合-010
  11. 【原创】岁月如歌 一款网易歌单生成pdf的软件
  12. 百度竞价账户选对关键词究竟有多重要?如何进行关键词筛选
  13. android 动态设置控件的大小
  14. 小程序排名规则及搜索算法
  15. java change()_Change.java
  16. 碳化硅(SiC) 新一代半导体材料,打开新能源车百亿市场空间
  17. 个人表现怎么写学生_个人述职报告该怎么写
  18. java for循环 map_Java用for循环Map详细解析
  19. 算法周赛笔记(8月第1周)— LeetCode 第253场周赛
  20. 从零学习如何把win10系统装在固态硬盘上

热门文章

  1. 计算机网络 UDP协议与TCP协议首部
  2. PTA 1100 校庆(Python3)
  3. springboot好博客记录
  4. 大数据面试总结《十五》--人事面试技巧总结
  5. php 查询功能,php实现查询功能(数据访问)
  6. Java 动态生成推广海报,带用户头像、昵称、二维码
  7. 闲谈安全测试左移三板斧
  8. 基于Lora的远程农业监测与控制系统,过程回顾及经验总结
  9. python快速爬虫视频_“python怎么快速爬虫视频“python 爬网页视频教程
  10. 为什么说区块链是新的博弈竞技场