Oracle数据库编程规范
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
密级
公开()普通(√)秘密()机密()绝密()
Oracle数据库编程规范
文档编号:<文档编号(按照文档编码规范)>
文档归类:<文档归类>
作者:李程扬
创建时间:2005-11-14
修改时间:2005-11-15
版本号:v1.0
文档传阅:
一、数据库对象创建及命名规范
1、数据库字段及对象命名规范
a.数据库命名规范与PB编程规范对命名方式的约定可相互参照;
b.命名单词间分隔用下划线[_],尽可能使用与业务相匹配的单词或其缩写;
c.绝对不允许使用拼音首码及简单数字的命名方式;
d.Oracle对于对象或字段名称长度有限制,最多31个字符;
2、字段定义及类型说明
a.字段定义仅能使用以下类型
i.date:日期时间类型,存入日期字段的数据若未指明时间,时间缺省
就是[00:00:00];若未指明日期,则日期缺省是[1900-01-01];对于年份
[number(4,0)]与月份[number(6,0)]这类数据,一般用number类型定义;
ii.number:数值类型,字段所占空间与每一行数据相关,即有多少存多少;要注意其定义小数位是包含在总长度中,如number(12,2)——总长
度为12位,其中小数占2位;
iii.char:定长字符串类型,不论字符串信息多少都要占用所定义长度的空间,不足的部分用空格填充;对于一些更新操作比varchar2效率高;
长度限制为255;
iv.varchar2:非定长字符串类型,字符串信息多少就占多少空间,所以对于此类型数据在存入数据库前要去空格,以防止多余空格造成字段关联
错误;相比char可节省很多存储空间,某种程序上可提高网络传输效率;
长度限制为4000个字符;
v.clob:一般存大于4000个字节的字符串信息,如数据窗口的语法;
vi.blob:一般存二进制数据,如图片;
b.对于字符串类型,除数据固定长度字段(如char(1)、SICK_ID),其它情况都
必须使用varchar2类型;
c.对于number与varchar2类型,在定义时要预留足够的长度,因为这两种类型
都是按实际数据来分配存储空间,这样才能避免数据需求变长,字段长度修改
造成程序错误(数据窗字段及数值变量小数位定义);
d.应尽量使用number类型定义代码、状态字段;相比char或varchar2,这可
最大程度地节省空间,并可显著提度检索效率;当然,同类型已定义的字段,
为兼容原先设计,还是必须使用旧的类型定义;
e.字段命名约定
i.字段名称不必像PB变量使用前缀来标识其数据类型;
ii.字段常用后缀如下
ID/No表示唯一的序列号标识;其中ID多用于表示对人或物的标识,即指的是一种标志(如Sick_ID);而No多用于对连续号
或流水号的标识(如单据号Apply_No)
Code 表示项目代码(如项目代码Item_Code)
Name 表示名称(如项目名称Item_Name)
Class 表示类别(如单据类别Apply_Class)
Operator 表示操作员(类型用varchar(27),如Apply_Operator)
Time 表示日期或日期时间(如Audit_Time)
Dept 表示科室(如开单科室Apply_Dept)
Flag 表示标志(字段类型用char(1),值为Y或N)
Status 表示状态(字段类型用char(1))
iii.常见业务字段名称及类型定义如下
3、数据库对象定义说明:创建对象时一定要指定是在哪个模式下面
a.表
i.下面列出建表步骤(一般在PB6中新建表,再拷出相应建表语法)
建表语法
创建主键及索引
创建同义词
对象授权(所有新建对象都必须授权给zhiydba)
ii.对于表命名有以下常用后缀
_master:主表
_detail:细表
_record:记录表
_dict:系统字典/用户字典
_config:用户配置表
iii.不推荐使用表外键约束,也不推荐除空值以外的其它约束检查,这类约束判断一般在程序中处理;
b.主键:一种特殊的索引
i.主键名都是以pk_作为前缀,后面一部分用表名,即pk_+表名
ii.所有表都必须创建主键,否则这些表就没办法做更新操作
c.索引
i.索引名以idx_作为前缀,后面一部分用表名+索引相关列名或其缩写
ii.创建索引时一定要记得指明其所在模式(一般与表在同一模式下),这一点程序员常会遗漏;
iii.索引也要区分是唯一索引还是可重复索引;
iv.要查询的列尽可能创建索引,一般不推荐使用多列组合索引,而应分开建立索引;如病人ID或查询时间字段;另外,用到组合索引时要注意
索引列的顺序;
v.一个表索引最多不能超过7个,否则会影响数据更新效率,且占用存储空间,即:索引越多、查询效率高、但更新操作慢、存储占用高;
vi.对于值内容单一(如只有0与1)或大部分数据是空值的字段不用建索引;对于某些数据量很少的表(如字典),也是不用建索引;
d.视图:其命名以v_作为前缀,统一建在zhiydba模式下(可省去授权)
e.序列号:其命名以_seq作为后缀,统一建在zhiydba模式下;主要用于数据
表的主键字段取唯一值(如单据号),对于字典代码就没必要用序列号;
f.同义词:创建相应对象的同义词主要是便于编程(public),做到对象模式无关
g.用户:即模式
h.函数及存储过程:除非开放接口给其它软件供应商,否则不使用这两类对象,
因为包(package)就可代替其功能,并便于分类组织;
i.后台包/Java包:不用深入了解,知道有这些东西就可;
j.后台任务(Job):后台计划任务执行,通过dba_jobs可查询当前在执行任务;
k.触发器:Oracle的触发器一般都认为在事务处理上不安全,所以除非特殊接口,否则不准使用触发器;
二、Oracle常用函数
1、Oracle的PL/SQL语言是对SQL的过程性语言扩展,当前Oracle的SQL语法遵循
SQL92标准;
2、完整PL/SQL函数集可查阅
\\Research\ZHIS4_Tools\Database\Oracle8i资料\doc\server.816\a76989\toc.htm
3、字符串相关函数
a.||:字符串合并操作符