文档库 最新最全的文档下载
当前位置:文档库 › ORACLE编码规范

ORACLE编码规范

ORACLE编码规范
ORACLE编码规范

密级:内部公开

文档编号:NTT_SD_OBMGF

版本号:V1.0

ORACLE编码规范

惠州市新中新电子技术开发有限公司

------------------------------------------------------------------------------------------------------ 惠州市新中新电子技术开发有限公司对本文件资料享受著作权及其它专属权利,未经书面许可,不得将该等文件资料(其全部或任何部分)披露予任何

第三方,或进行修改后使用。

文件更改摘要:

目录

1.前提 (6)

2.英文使用原则 (6)

3.逻辑对象的定义规范 (6)

3.1. ORACLE表空间定义 (6)

3.1.1.原则 (6)

3.1.2.命名 (6)

3.2. ORACLE数据文件 (7)

3.2.1.数据文件的存放 (7)

3.2.2.数据文件的命名 (7)

3.2.3.数据文件的大小 (7)

3.2.4.数据文件属性 (7)

3.3. 用户管理 (7)

3.3.1.用户创建 (7)

3.3.2.用户授权 (7)

3.3.3.密码管理 (8)

3.3.4.用户命名规范 (8)

3.4. 表定义 (8)

3.4.1.表名 (8)

3.4.2.主键(PRIMARY KEY) (9)

3.5. 列 (9)

3.5.1.列类型 (9)

3.5.2.列长度 (9)

3.6. 索引 (10)

3.7. 主键 (10)

3.8. 外键 (10)

4.表分析 (10)

5.PL/SQL存储过程编写规范 (10)

5.1. 命名 (10)

5.2. 格式 (11)

5.3. 大小写规则 (11)

5.4. 语句规范 (12)

5.4.1.SELECT语句的格式标准: (12)

5.4.2.UPDATE语句的格式标准: (12)

5.4.3.INSERT语句的格式标准: (13)

5.4.4.DELETE语句的格式标准: (13)

5.4.5.UNION,INTERSECT及MINUS (13)

5.4.6.尽量避免使用GOTO.. .. https://www.wendangku.net/doc/1c14677080.html,BEL语句; (14)

5.4.7.ORACLE的伪表与伪列: (14)

5.4.8.使用%ROWTYPE 和%TYPE (15)

5.4.9.尽量不使用NOT IN子句; (15)

5.4.10.不要在WHERE 子句中使用函数作为条件; (15)

5.4.11.使用SELECT COUNT(1) (15)

5.4.12.EXISTS 子句中,使用SELECT 1; (15)

5.4.13.使用CREATE T ABLE AS; (15)

5.4.14.使用TRUNCATE T ABLE; (16)

5.4.15.在PL/SQL 中使用sqlcode,sqlerrm (16)

5.4.16.适当使用ORACLE的HINT; (16)

5.5. 注释要求 (17)

5.5.1.位置要求 (17)

5.5.2.存储过程注释要求 (17)

5.5.3.代码片断注释要求 (17)

5.6. 代码片断处理要求 (18)

5.6.1.变量的声明 (18)

5.6.2.数据选取 (18)

5.6.3.游标的使用 (18)

5.6.4.错误处理要求 (19)

5.6.5.尾注要求 (20)

6.C/C++嵌入式SQL书写规范 (20)

6.1. S ELECT语句格式标准 (21)

6.2. U PDATE语句格式标准 (21)

6.3. D ELETE语句格式标准 (21)

6.4. I NSER T 语句格式标准 (22)

6.5. 日期、时间使用格式 (22)

7.JDBC&ORACLE使用注意点 (22)

7.1. 关闭自动提交功能,提高系统性能 (22)

7.2. 在动态SQL或有时间限制的命令中使用S TA TEMENT对象 (22)

7.3. 在成批处理重复的插入或更新操作中使用P REPARED S TA TEMENT对象 (23)

7.4. 利用SQL完成数据库内的操作 (23)

8.数据库设计开发约定 (23)

8.1. 英文命名全部大写,单词之间用下划线分隔 (23)

8.2. V ARCHAR类型字段最长为4000 (24)

8.3. 所有数值型的字段统一使用NUMBER(X)/ NUMERI C(X) (24)

8.4. 索引名统一为IDX_T ABLE N AME[_X] (24)

8.5. SQL查询条件中注意字段的类型要一致 (24)

8.6. 字段别名统一用AS方式 (24)

9.存储过程开发约定 (25)

9.1. 存储过程命名约定 (25)

9.2. 存储过程变量前缀命名约定 (25)

9.3. 存储过程参数传递约定 (26)

9.4. 返回值约定 (26)

9.5. 异常处理约定 (27)

1.前提

1.数据库设计工具使用PowerDesigner。

2.英文使用原则

1.使用英文名称时,统一使用大写。单词之间用下划线“_”进行分隔。使用范围包括表、视图、序列号、字段、函数、存储过程、过程包、用户名、角色名、同义词

名、表空间名等。

2.单词长度大于7的可以考虑用缩写,但需报备数据库审核小组,由数据库审核小组负责形成英文单词缩写汇总表,统一所有英文单词的缩写格式。

3.逻辑对象的定义规范

3.1. ORACLE表空间定义

3.1.1.原则

每个用户定义自已的表空间,每个用户至少一个表空间,非SYSTEM用户不得使用SYSTEM表空间。

表和索引分开存储,存放在不同的表空间,为每个用户建立单独的用于专门存放索引的表空间。

如果条件允许,应将数据量较大的表归类(大于100万条记录)单独指定表空间,并将该表空间的BLOCK_SIZE指定大于等于16K

随时间推移不断增大的流水表应考虑采用分区的方式进行存储。每个分区单独指定一个表空间与之对应。

3.1.2.命名

用户表表空间命名格式:TBS_UserName 或TBS_UserName_BlockSize

例如: TBS_OLAP 或 TBS_OLAP_16K

索引表空间命名格式:TBS_UserName_IDX 或TBS_UserName_BlockSize

例如: TBS_OLAP_IDX 或 TBS_OLAP_IDX_8K

3.2. ORACLE数据文件

3.2.1.数据文件的存放

为了便于管理,数据文件应统一存放在指定目录

3.2.2.数据文件的命名

数据文件命名前缀应与表空间名一致,并加扩展名以示区别,例如:TBS_E_METADB.ORA

当一个表空间有多个数据文件时,分别以表空间名加序号并加扩展名来命名各个数据文件,例如:TBS_E_ODS.ORA、TBS_E_ODS_2.ORA

3.2.3.数据文件的大小

每个数据文件的大小建议不超过2G

3.2.

4.数据文件属性

将数据文件属性设置成自动扩展,以防止表空间满后出现无法插入的错误

3.3. 用户管理

3.3.1.用户创建

每个相对独立的模型建立一个用户

每个数据库实例建议另外单独建一个DBA用户,如E_DBA,平常数据库管理员用该用户进行数据库管理,只有在数据库启动和关闭时才用SYS用户进行登录。

3.3.2.用户授权

普通用户仅授予CONNECT 和RESOURCE 角色权限,除DBA用户外,不得给普通用户授予DBA角色权限。

3.3.3.密码管理

用户密码设置应避免使用弱密码,特别是SYS/SYSTEM和另外单独建的DBA用户。

3.3.

4.用户命名规范

用户名由公司标识+数据逻辑层+“_”+用途简称(英文)命名如下:

?系统管理层:ES_(System)

◆ES_SYSTEM:系统管理库;

◆ES_METADB:元数据库;

◆ES_WF:工作流管理;

◆ES_...:其它系统管理数据库

?接口层:EI_(Interface)

◆EI_HA:沪A接口

◆EI_SA:深A接口

◆EI_HB:沪B接口

◆EI_SB:深B接口

◆EI_ST:三板接口

◆EI_OF:开放式基金接口

◆EI_...:其它外部接口

?应用程:EA_(Application)

◆EA_PUB:公用业务管理

◆EA_FUND:资金账务管理

◆EA_SEC:股份账务管理

◆EA_...:其它应用数据库

?一级历史数据

◆原库名+_HIST:如E_FUND历史库,E_FUND_HIST

?二级历史数据

◆同一级历史数据,具体可以等到确定二级历史数据的管理规范后再确定。

3.4. 表定义

3.4.1.表名

在PowerDesigner中建模时,表的中文名称统一使用,代码+名称的格式,如柜台客户

信息表的中文名称:TR_CUST_INFO客户信息表。

一般情况下,不使用前缀,但是如果一个库中的表很多(如开放式基金接口库等),为便于分类管理,也可以采用前缀标进行分类。

3.4.2.主键(PRIMARY KEY)

根据实际情况,尽可能为每张表建一个唯一主键,主键字段类型最好用整数。选择有意义的,不太长且能唯一标识记录行的列做主键,没有这种列时,才考虑使用SEQUENCE做主键。

3.5. 列

3.5.1.列类型

●字符型字段使用V ARCHAR2类型,除了能明确定长的字段,应尽量避免使用CHAR

类型(ORACLE的CHAR类型在位数不足时会自动补空格)

●V ARCHAR2的定义最多4000字符,如超出应考虑使用其它字段类型

●数字型字段统一使用NUMBER型,并指定长度,整型使用NUMBER(m),如

NUMBER(6);浮点型使用NUMBER(m,n),如NUMBER(8,2)等。

●日期、时间型字段使用视情况采用DA TE 型或CHAR型,一般记录日志的日期、

时间字段用DA TE型。如果日期和时间分成两个字段,可以考虑日期采用

NUMBER(8),可节省存储空间和提高效率。

●尽量使用V ARCHAR2 (1)代替布尔值

●使用CLOB代替LONG,BLOB代替LONG RAW

●字段名缩写应有专门英文单词缩写表进行统一维护

3.5.2.列长度

应当根据实际需要选择列长度。有对应web 页面的,与页面上对应列长度一致。

对数据长度的验证除数据库端实现外还要尽可能在表现层控制。

3.6. 索引

●索引名统一为IDX_TableName[_x],例如IDX_TR_CUST_INFO 或

IDX_M_OPLOG_2

●每张表的索引不超过4个

●复合索引的列不超过4个

●分区表的索引统一建成本地索引(即建索引时,加LOCAL)

●对于表中的数据记录频繁地被删除或插入,对这些表要经常性重建索引,使用

Alter index rebuild命令。

3.7. 主键

主键名统一为PK_TABLENAME

3.8. 外键

外键名统一为FK_TABLENAME[_X]

4.表分析

定期对所有的表和索引进行分析,可提高查询的性能。

ANALYZE TABLE TabName COMPUTE STA TISTICS;

ANALYZE INDEX IndexName COMPUTE STA TISTICS;

可写个后台定时脚本,每天晚上对用户表和索引进行一次全面的分析。

不可以对SYSTEM用户和SYS用户的表和索引进行分析!

5.PL/SQL存储过程编写规范

5.1. 命名

总体原则:名称必须能准确描述出该标识符的功能、效用

存储过程、函数命名

沿用公司原有《Database Server端编码规范》中的命名规范。

参数、变量命名

沿用公司原有《Database Server端编码规范》中的命名规范。

5.2. 格式

标准函数格式

FUNCTION name [{parameter[,parameter,...]}] RETURN datatypes IS

[local declarations]

BEGIN

execute statements

[EXCEPTION

exception handlers]

END [name];

标准过程格式

PROCEDURE name [(parameter[,parameter,...])] IS

[local declarations]

BEGIN

execute statements

[EXCEPTION

exception handlers ]

END [name]

TAB的转换

为了保证不同编辑器中浏览的版式一致,统一将编辑器设置为TAB转换为4个空格。

缩进

保证对应的begin-exception-end和if-end if 的字符头在同一垂直线上,缩进

排版全部用PL/SQL Developer中的PL/SQL Beautifier进行自动排版。

5.3. 大小写规则

为了方便代码的统一,除引号内的字符,所有PL/SQL或SQL代码都使用大写。

(注:关键字、变量等可以通过PL/SQL中的设置,用颜色及字体来区分)

5.4. 语句规范

5.4.1.SELECT语句的格式标准:

SELECT Column_name1,Column_name2

INTO :Parameter1,:Parameter2

FROM Table1 A, Table2 B

WHERE A.Column_name = B.Column_name;

在写查询语句的时候,要求语句的条件排列先后顺序要考虑语句执行的性能,要做到语句能很好的利用到现有的索引,一般原则上不允许在一条查询语句中有超过五张以上的表进行关联,因为当超过五张表关联时Oracle将不再做语句的优化处理;对语句的性能可以通过“执行计划”来跟踪,在PL/SQL Developer中的Explain Plan Window中可分析ORACLE 的执行计划。

以下是SELECT的语法,详细的使用方法请查阅相关资料

SELECT [DISTINCT | ALL] {* | column1[, column2]...}

FROM {table_1 | (subquery)} [alias]

[, {table_2 | (subquery)} [alias]]...

[WHERE condition]

[CONNECT BY condition [START WITH condition]

[GROUP BY expn] [HAVING expn]

[{ UNION [ALL] | INTERSECT | MINUS } SELECT . . . ]

[ ORDER BY [expn ] [ ASC | DESC]

[ FOR UPDATE [OF [user.]table | view] column ]

[NOWAIT]

5.4.2.UPDATE语句的格式标准:

UPDATE Table SET Column_name1 = :Parameter1,

Column_name2 = :Parameter2

WHERE Column_name = :Pareameter;

以下是UPDATE的语法,详细的使用方法请查阅相关资料

UPDATE [user.]table[@db_link][alias]

SET { column1=express1[,column2=experss2]...|

(column1[,column2]...)=(subquery) }

[WHERE condition|current of cursor];

5.4.3.INSERT语句的格式标准:

INSERT INTO TableName(Column_name1,Column_name2)

VALUES(:Parameter1,:Parameter2)

INSERT INTO TableName(Column_name1,Column_name2)

SELECT Column_name1,Column_name2

FROM Table

WHERE Column_name = :Pareameter

不允许出现 INSERT INTO TableName VALUES (:Parameter1,:Parameter2)的写法。

也不允许出现 INSERT INTO TableName SELECT * FROM Table 的写法

5.4.4.DELETE语句的格式标准:

DELETE FROM TableName WHERE Column_name1 = :Parameter1

以下是DELETE的语法,详细的使用方法请查阅相关资料

DELETE [ FROM ] [user.]table [@db_link][Alias] [WHERE condition];

5.4.5.UNION,INTERSECT及MINUS

有时需要从多个表中组合具有一种相似类型的信息。Union 可以完成将两个以上的表的相类似的查询结果合并在一起,并且相同的只取其一;如果union all 则

表示返回所有行(不管是否重复)。Intersect返回在两个表中都有相同内容的信息。

Minus 则返回只在一个表中出现的信息

1.语法:

select ...

union[all]

select ...

select ...

intersect

select ...

select ...

minus

select ...

5.4.

6.尽量避免使用GOTO.. .. https://www.wendangku.net/doc/1c14677080.html,BEL语句;

除非有特殊的需求,否则应尽量避免使用GOTO.. .. https://www.wendangku.net/doc/1c14677080.html,BEL语句。

5.4.7.ORACLE的伪表与伪列:

Oracle系统为了实现完整的关系数据库功能,系统专门提供了一组称为伪列(Pseudocolumn)的数据库列,这些列不是在建立对象(如建表)时由我们完成的,而是在我们建立对象时由自动Oracle完成的。Oracle目前有以下的伪列:

●CURRVA L and NEXTVA L 使用序列号的保留字

●LEVEL 查询数据所对应的级

●ROWID 记录的唯一标识

●ROWNUM 限制查询结果集的数量

Oracle 还提供了一个DUAL 的伪表,该表主要目的是保证在使用SELECT 语句中语句的完整性而提供的,如:我们要查询当前的系统日期及时间,而系统的日期

和时间并是放在一个指定的表里。所以在 from 语句后就没有表名给出。为了使用

from 后有个表名,我们就用DUAL代替。如:

例1:查询Oracle系统日期及时间:

SQL> select to_char( sysdate,'yyyy.mm.dd hh24:mi:ss') from DUAL;

TO_CHAR(SYSDATE,'YY

-------------------

2004.09.24 17:28:09

例2:计算一下 5000+5000*0.1 的结果是多少,则:

SQL> select 5000+5000*0.1 from DUAL;

5000+5000*0.1

-------------------

5500

5.4.8.使用%ROWTYPE 和%TYPE

PL/SQL 可以声明与数据库行有相同类型的记录或者与数据库字段相同的变量类型

例:

DECLARE

V_CUST_CODE TR_CUSTINFO.CUST_CODE%TYPE;

R_D_CODENOTE D_CODENOTE%TYPE;

BEGIN

……

END;

5.4.9.尽量不使用NOT IN子句;

尽量不使用NOT IN子句,而用 NO EXISTS 或 MINUS 等其它方法替代它。

5.4.10.不要在WHERE 子句中使用函数作为条件;

除非你不考虑执行效率问题,否则请不要在WHERE 子句中使用函数作为条件。例如WHERE TO_NUMBER(TEL_NBR)=7654321 这种写法是效率非常低下的。

5.4.11.使用SELECT COUNT(1)

SELECT COUNT(*) 改为 SELECT COUNT(1) 能提高速度;

5.4.12.EXISTS 子句中,使用SELECT 1;

EXISTS 子句中,SELECT * 改为 SELECT 1 能提高速度;

5.4.13.使用CREATE T ABLE AS;

如果可能,请使用

CREATE TABLE TabName AS SELECT * FROM ……

来替代

INSERT INTO TabName SELECT * FROM …… ,

特别是在记录数比较多的情况下,前者的速度上会有非常明显的优势。

5.4.14.使用TRUNCATE T ABLE;

如果是删除全表,请使用TRUNCATE TABLE TabName 来替代 DELETE FROM TabName,能有效提高速度,并释放该表所占的存储空间,减少磁盘碎片。由于TRUNCATE TABLE

是DDL语言,在存储过程中不能直接使用,应加上EXECUTE IMMEDIATE,使用方法

如下:EXECUTE IMMEDIATE ‘TRUNCATE TABLE TabName’;

使用前请注意是否有权限问题。

5.4.15.在PL/SQL 中使用sqlcode,sqlerrm

当存储过程执行出错抛出EXCEPTION时,可通过sqlcode 和sqlerrm取得当前的ORACLE错误代码和错误信息,以下是使用范例:

DECLARE

V_SQLCODE number(6);

V_ERRMSG varchar2(512);

BEGIN

UPDATE dept SET username = (SELECT username FROM work_group)

WHERE rownum=1;

EXCEPTION

WHEN OTHERS THEN

V_SQLCODE := sqlcode;

V_ERRMSG := sqlerrm;

Dmbs_output.put_line (‘程序出错,错误代码:’|| V_SQLCODE||’错误信息:’||

V_ERRMSG);

END;

5.4.1

6.适当使用ORACLE的HINT;

在大数据量地进行INSERT INTO …… SELECT ……的时候,可使用/*+append*/这个HINT 加快执行速度,使用方法如下:

INSERT /*+append*/ INTO ……. SELECT ……

使用该HINT之后,必须马上提交或回滚,否则对该表的任何读写操作都会报错。

在多个表进行关联操作的时候,有时用 /*+rule*/ 这个HINT可能带来意想不到的效果,这要根据实际情况比较分析使用前后的速度,适当取舍。使用方法如下:

SELECT /*+rule*/ …… FROM …… WHERE ……

5.5. 注释要求

5.5.1.位置要求

注释行的长度以在最大化窗口内可以看到全部内容为宜,如果一行不够显示需要换行,下一行注释语句与上一行注释语句应对齐。

变量申明的注释放在变量申明语句的后面,并以-- 为注释语句

注释行一律放在被注释语句的上一行。

注释行中,注释命令与注释内容空一个空格,如:

V_BpMode VARCHAR2(10) ; -- 用户服务类型

BEGIN

-- 选取用户服务类型

BEGIN

SELECT BpMode INTO V_BpMode FROM ACC_BP WHERE User_ID = I_User_ID ;

EXCEPTION

WHEN NO_DATA_FOUND THEN

WHEN OTHERS THEN

END ;

5.5.2.存储过程注释要求

/****************************************************************** 概要说明:

中文名称:

用途:

语法信息:

调用举例:

功能修订:

简要说明:

修订记录:

<修订日期> <修订人> : 修改内容简要说明

〈续简要说明>

******************************************************************/

5.5.3.代码片断注释要求

当处理流程比较复杂,不容易让其它人看懂时,应该加以注释

注释行放在被注释的代码片断上一行,并与代码片断第一行对齐。

5.6. 代码片断处理要求

5.6.1.变量的声明

函数内部变量的声明统一放在函数代码段的开始部分,不允许分散在函数内小代码片断中。

全局公共变量统一放在一个包声明内,并放在包声明代码段开始部分。

包体内局部公共变量放在包体代码段开始部分。

5.6.2.数据选取

为了规避触发Oracle 意外错误,应遵守如下规则

1) 从数据表中选取一行数据到变量

范例

BEGIN

SELECT * INTO V_Acc FROM Acc_Bp WHERE User_ID = I_User_ID ;

EXCEPTION

WHEN NO_DATA_FOUND THEN

……相应处理;

WHEN OTHERS THEN

……相应处理;

END ;

2) 做类型转换时

BEGIN

V_PensonId = TO_NUMBER( I_In ) ;

EXCEPTION

WHEN OTHERS THEN

……相应处理;

END ;

5.6.3.游标的使用

除非特殊需要,统一使用如下范例

BEGIN

FOR rec IN (SELECT * FROM Acc_Bp WHERE BpMode = ‘省网中文’) LOOP

……

END LOOP ;

END ;

5.6.4.错误处理要求

可预见的错误处理,并使得流程无法继续时,应向操作员报告发生这些错误的原因,可能发生的影响。

不可以预见的Oracle 系统内部错误,则应向操作员报告如下信息:

错误发生地点、错误发生的环境或关键条件、关键性的帮助信息、错误信息。

备注:

错误发生地点包括:包名称函数名

错误发生的环境或关键条件、关键性的帮助信息的取舍与多寡,取决于如何能使系统管

理员或开发人员掌握发生错误的具体原因

信息报告的组织格式如下:

(包名称.函数名)发生的条件或关键条件关键性的帮组信息:SQLERRM

范例

FUNCTION PayToAcnt( IN_Pay IN Jf_PayList%ROWTYPE ) RETURN VARCHAR2

IS

V_Acc Acc_Bp%ROWTYPE ;

SYSTEM_ERROR EXCEPTION ;

BEGIN

BEGIN

SELECT * INTO V_Acc FROM Acc_Bp WHERE User_ID = I_https://www.wendangku.net/doc/1c14677080.html,er_Id ;

EXCEPTION

WHEN NO_DATA_FOUND THEN

Pub.SetErrMsg( ‘无法找到用户(User_ID=’ || I_https://www.wendangku.net/doc/1c14677080.html,er_ID || ‘)’ ) ;

RAISE SYSTEM_ERROR ;

WHEN OTHERS THEN

Pub.SetErrMsg( ‘(S_ToAcnt.PayToAcnt)取Acc_Bp表,User_ID=’|| I_https://www.wendangku.net/doc/1c14677080.html,er_ID || ‘意外错误:’ || SQLERRM ) ;

RAISE SYSTEM_ERROR ;

WHEN

END ;

RETURN ‘成功’

EXCEPTION

WHEN SYSTEM_ERROR THEN

RETURN ‘失败’ ;

WHEN OTHERS THEN

Pub.SetErrMsg( ‘(S_ToAcnt.PayToAcnt)User_Id=’|| I_https://www.wendangku.net/doc/1c14677080.html,er_ID || ‘,Money=’

||I_Pay.PayMoney || ‘,Free=’ || I_PayList.PayFree || ‘意外错误:’ || SQLERRM ) ;

RAISE ‘失败’ ;

END PayToAcnt;

5.6.5.尾注要求

如果存在3重以上的循环,应加尾注,尾注内容为LOOP+循环层级,LOOP 与 END LOOP 都应该加注,如:

LOOP -- LOOP1

……

LOOP -- LOOP2

……

LOOP -- LOOP3

……

END LOOP ; -- LOOP3

……

END LOOP -- LOOP2

……

END LOOP -- LOOP1

如果存在3重以上条件,应加尾注。只要在END IF 上加尾注,尾注内容为条件内容如: IF 条件1 THEN

IF 条件2 THEN

IF 条件3 THEN

END IF ; --条件3

END IF ; -- 条件2

END IF ; --条件1

如果条件内部代码片断超过10行,应加尾注,如:

IF 条件1 THEN

…… -- 10 行以上处理代码

END IF ; -- 条件1

6.C/C++嵌入式SQL书写规范

首先声明,因公司原有的开发规范不建议采用C/C++中直接嵌入SQL的作法。而是将嵌入式SQL统一放在存储过程作实现。以下只是制定书写规范,如有特殊的需求要采用嵌

ORACLE数据库设计规范

1命名原则 1.1约定 u是指对数据库、数据库对象如表、字段、索引、序列、存储过程等的命名约定; U命名使用富有意义的英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划线分割 u避免使用Oracle的保留字如LEVEL、关键字如TYPE (见Oracle保留字和关键字); u各表之间相关列名尽量同名; u除数据库名称长度为1 — 8个字符,其余为1 — 30个字符,Database link 名称也不要超过30个字符; u命名只能使用英文字母,数字和下划线; 1.2表名 规则如下: 命名规则为xxx_yyy_TableName 。xxx表示开发公司的名称,最多五个字母构成,尽量用简称;yyy 表示子系统中的子模块的名称(可以没有),最多五个字母构成,尽量用简称;TableName 为表含义,最多十个字母构成,尽量用简称 TableName 规则如下: u使用英文单词或词组作为表名,不得使用汉语拼音 u用名词和名词短语作表名 u不使用复数 正确的命名,例如: fiber_sys_user fiber_biz_order 1.3存储过程 规则如下: 命名规则为xxx_yyy_StoredProcedureName 。xxx表示开发公司的名称,最多五个字母构成,尽量用 简称;yyy表示子系统中的子模块的名称(可以没有),最多五个字母构成,尽量用简称;

StoredProcedureName 规则如下: u用动词或动词短语来命名,并带有宾语 u需要符合用Pascal命名规则。 u尽量谨慎地使用缩写 u尽量不要和关键字重合 u不要用任何名前缀(例如U , B) u StoredProcedureName 内不使用下划线 u当操作依赖条件时,一般结尾使用By+条件 存储过程正确的命名,例如: sys_lnsertUser sys_SearchUserByUserlD sys_DeleteUserByUserlD 1.4视图 规则如下: u视图的命名采用xxx_yyy_ ViewName_v 。xxx表示开发公司的名称,最多五个字母构成,尽量用简称;yyy表示子系统中的子模块的名称(可以没有),最多五个字母构成,尽量用简称;_v后缀表示视图, ViewName 部分表示视图的含义,最多十个字母构成,尽量用简称。 ViewName 规则如下: u用名词和名词短语, u不使用复数 u用Pascal命名规则 u尽量谨慎地使用缩写 u尽量不要和关键字重合 u不要用任何名前缀(例如U,B) u ViewName 中使用下划线 视图正确的命名,例如:

软件工程-数据库设计规范与命名规则

数据库设计规范、技巧与命名规范 一、数据库设计过程 数据库技术是信息资源管理最有效的手段。 数据库设计是指:对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据, 满足用户信息要求和处理要求。 数据库设计的各阶段: A、需求分析阶段:综合各个用户的应用需求(现实世界的需求)。 B、在概念设计阶段:形成独立于机器和各DBMS产品的概念模式(信息世界模型),用E-R图来描述。 C、在逻辑设计阶段:将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式。 然后根据用户处理的要求,安全性的考虑,在基本表的基础上再建立必要的视图(VIEW)形成数据的外模式。 D、在物理设计阶段:根据DBMS特点和处理的需要,进行物理存储安排,设计索引,形成数据库内模式。 1. 需求分析阶段 需求收集和分析,结果得到数据字典描述的数据需求(和数据流图描述的处理需求)。 需求分析的重点:调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性与完整性要求。 需求分析的方法:调查组织机构情况、各部门的业务活动情况、协助用户明确对新系统的各种要求、确定新系统的边界。 常用的调查方法有:跟班作业、开调查会、请专人介绍、询问、设计调查表请用户填写、查阅记录。 分析和表达用户需求的方法主要包括自顶向下和自底向上两类方法。自顶向下的结构化分析方法(Structured Analysis, 简称SA方法)从最上层的系统组织机构入手,采用逐层分解的方式分析系统,并把每一层用数据流图和数据字典描述。 数据流图表达了数据和处理过程的关系。系统中的数据则借助数据字典(Data Dictionary,简称DD)来描述。 2. 概念结构设计阶段 通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,可以用E-R图表示。 概念模型用于信息世界的建模。概念模型不依赖于某一个DBMS支持的数据模型。概念模型可以转换为计算机上某一 DBMS 支持的特定数据模型。 概念模型特点: (1) 具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识。 (2) 应该简单、清晰、易于用户理解,是用户与数据库设计人员之间进行交流的语言。 概念模型设计的一种常用方法为IDEF1X方法,它就是把实体-联系方法应用到语义数据模型中的一种语义模型化技术, 用于建立系统信息模型。 使用IDEF1X方法创建E-R模型的步骤如下所示:

Oracle数据库数据对象分析_张达宇

Oracle数据库数据对象分析 日期:2006-01-18 08:00 点击: Oracle数据库数据对象中最基本的是表和视图,其他还有约束、序列、函数、存储过程、包、触发器等。对数据库的操作可以基本归结为对数据对象的操作,理解和掌握Oracle数据库对象是学习Oracle的捷径。 表和视图 Oracle中表是数据存储的基本结构。ORACLE8引入了分区表和对象表,ORACLE8i引入了临时表,使表的功能更强大。视图是一个或多个表中数据的逻辑表达式。本文我们将讨论怎样创建和管理简单的表和视图。 管理表 表可以看作有行和列的电子数据表,表是关系数据库中一种拥有数据的结构。用CREATE TABLE语句建立表,在建立表的同时,必须定义表名,列,以及列的数据类型和大小。例如: 这样我们就建立了一个名为products的表,关键词CREATE TABLE后紧跟的表名,然后定义了三列,同时规定了列的数据类型和大小。 在创建表的同时你可以规定表的完整性约束,也可以规定列的完整性约束,在列上普通的约束是NOT NULL,关于约束的讨论我们在以后进行。 在建立或更改表时,可以给表一个缺省值。缺省值是在增加行时,增加的数据行中某一项值为null时,oracle即认为该值为缺省值。 下列数据字典视图提供表和表的列的信息: . DBA_TABLES . DBA_ALL_TABLES . USER_TABLES . USER_ALL_TABLES . ALL_TABLES . ALL_ALL_TABLES . DBA_TAB_COLUMNS . USER_TAB_COLUMNS . ALL_TAB_COLUMNS 表的命名规则 表名标识一个表,所以应尽可能在表名中描述表,oracle中表名或列名最长可以达30个字符串。表名应该以字母开始,可以在表名中包含数

数据库设计规范

数据库设计规范 V 1.0 2007-8-28

目录 1) 目的 (3) 2) 范围 (3) 3) 术语 (3) 4) 设计概要 (3) 5) 命名规范(逻辑对象) (4) 6) 数据库对象命名 (6) 7) 脚本注释 (8) 8) 数据库操作原则 (9) 9) 常用字段命名(参考) (9)

1) 目的 为了统一公司软件开发的设计过程中关于数据库设计时的命名规范和具体工作时的编程规范,便于交流和维护,特制定此规范。 2) 范围 本规范适用于开发组全体人员,作用于软件项目开发的数据库设计、维护阶段。 3) 术语 数据库对象:在数据库软件开发中,数据库服务器端涉及的对象包括物理结构和逻辑结构的对象。 物理结构对象:是指设备管理元素,包括数据文件和事务日志文件的名称、大小、目录规划、所在的服务器计算极名称、镜像等,应该有具体的配置规划。一般对数据库服务器物理设备的管理规程,在整个项目/产品的概要设计阶段予以规划。 逻辑结构对象:是指数据库对象的管理元素,包括数据库名称、表空间、表、字段/域、视图、索引、触发器、存储过程、函数、数据类型、数据库安全性相关的设计、数据库配置有关的设计以及数据库中其他特性处理相关的设计等。 4) 设计概要 ?设计环境 数据库:ORACLE 9i 、MS SQL SERVER 2000 等 操作系统:LINUX 7.1以上版本,显示图形操作界面; RedHat 9 以上版本 WINDOWS 2000 SERVER 以上 ?设计使用工具 使用PowerDesigner 做为数据库的设计工具,要求为主要字段做详尽说 明。对于SQL Server 尽量使用企业管理器对数据库进行设计,并且要求 对表,字段编写详细的说明(这些将作为扩展属性存入SQL Server中) 通过PowerDesigner 定制word格式报表,并导出word文档,作为数据 字典保存。(PowerDesigner v10 才具有定制导出word格式报表的功能)。

oracle数据库安装及其配置规范标准v0

Oracle数据库系统安装及配置规范 2015-10

目录 1. 数据库物理设计原则 (5) 1.1. 数据库环境配置原则 (5) 1.1.1. 操作系统环境 (5) 1.1.2. 内存要求 (5) 1.1.3. 交换区设计 (5) 1.1.4. 其他 (6) 1.2. 数据库设计原则 (6) 1.2.1. 数据库SID (6) 1.2.2. 数据库全局名 (6) 1.2.3. 数据库类型选择 (6) 1.2.4. 数据库连接类型选择 (7) 1.2.5. 数据库SGA配置 (7) 1.2.6. 数据库字符集选择 (8) 1.2.7. 数据库其他参数配置 (9) 1.2.8. 数据库控制文件配置 (9) 1.2.9. 数据库日志文件配置 (10) 1.2.10. 数据库回滚段配置 (10) 1.2.11. 数据库临时段表空间配置 (11) 1.2.12. 数据库系统表空间配置 (11) 1.3. 数据库表空间设计原则 (11) 1.3.1. 表空间大小定义原则 (11) 1.3.2. 表空间扩展性设计原则 (12) 1.4. 裸设备的使用 (12) 2. 数据库逻辑设计原则 (13) 2.1. 命名规范 (13) 2.1.1. 表属性规范 (13) 2.1.2. 索引 (14) 2.1.3. 视图 (15) 2.1.4. 实体化视图 (15) 2.1.5. 存储过程 (15) 2.1.6. 触发器 (15) 2.1.7. 函数 (16) 2.1.8. 数据包 (16) 2.1.9. 序列 (16) 2.1.10. 表空间 (16) 2.1.11. 数据文件 (16) 2.1.12. 普通变量 (16) 2.1.13. 游标变量 (17) 2.1.14. 记录型变量 (17) 2.1.15. 表类型变量 (17)

oracle数据库试题

ORACLE数据库试题 74 姓名:戴希引 一、选择题(总分50分,每题1分,*为多选)42 1.下列不属于ORACLE的逻辑结构的是(C) A 区 B 段 C 数据文件 D表空间 2. 下面哪个用户不是ORACLE缺省安装后就存在的用户( A ) A . SYSDBA B. SYSTEM C. SCOTT D. SYS 3 下面哪个操作会导致用户连接到ORACLE数据库,但不能创建表(A ) A 授予了CONNECT的角色,但没有授予RESOURCE的角色 B没有授予用户系统管理员的角色 C数据库实例没有启动 D数据库监听没有启动 4. 在Oracle中,当FETCH语句从游标获得数据时,下面叙述正确的是( C ) A 游标打开 B游标关闭 C当前记录的数据加载到变量中 D创建变量保存当前记录的数据 5. 在Oracle中,下面关于函数描述正确的是( A D)* A SYSDATE函数返回Oracle服务器的日期和时间 B ROUND数字函数按四舍五入原则返回指定十进制数最靠近的整数 C ADD_MONTHS日期函数返回指定两个月份天数的和 D SUBSTR函数从字符串指定的位置返回指定长度的子串 6. 阅读下面的PL/SQL程序块: BEGIN INSERT INTO employee(salary,last_name,first_name)VALUES(35000,’Wang’,'Fre d ’); SAVEPOINT save_a; INSERT INTO employee(salary,last_name,first_name) VALUES(40000,’Woo’,'David’); SAVEPOINT save_b; DELETE FROM employee WHERE dept_no=10; SAVEPOINT save_c; INSERT INTO employee(salary,last_name,first_name) VALUES(25000,’Lee’,'Bert’); ROLLBACK TO SAVEPOINT save_c;

浅谈对的理解对象—关系型数据库

浅谈对对象—关系型数据库的理解 姓名:杨小敏 学号:2010206190026

针对对象—关系型数据库的理解我想结合自己的专业(地图学与地理信息系统)从下面三个方面来理解:(1)关系型数据的发展以及在空间数据管理方面的优缺点(2)面向对象数据库的发展及在空间数据管理方面的优缺点(3)关系型数据库和面向对象技术的融合在数据库发展中所起到的独特作用在我们GIS专业领域内,随着信息技术的发展,各种应用系统建设的不断深入,像现在面向21世纪的应急应用系统的建设、城市基础地理空间信息数据库系统与共享平台的建设、地理信息公共服务平台的建设,小到“数字城市”的建设,大到“数字地球”乃至“智慧地球”的建设,我们已经开始不满足数值和文字的信息处理,为了达到系统建设平台尤其是公共服务平台的建设起到良好的客户友好体验,大量的图形信息,音频信息已经深入到数据库的设计中,其中尤其是空间数据库管理备受瞩目。所以,面对信息爆炸的21世纪,海量数据的存储和管路已经不是传统的数据库能解决的,空间数据管理需要更强的数据库——对象关系型数据库。 为什么空间数据需要对象关系型数据库的管理才更有效?我想简单的说一下GIS空间数据的基本特征:(1)空间特征:每个空间对象都具有空间坐标,所以在存储空间数据的同时我们要考虑数据的空间分布特征;(2)非结构化特征:通用数据库或者是传统数据库数据记录一般是结构化的,在面对空间图形信息的时候难以直接采用关系数据管理系统;(3)空间关系特征:空间数据的空间关系最重要的就是空间拓扑关系,这种拓扑结构方便了空间数据的查询和空间分析,但是给空间数据的一致性和完整性的维护增加了复杂性;(4)海量数据的特征:数据库在面对海量数据的存储和组织时,一般在二维空间上划分块或图幅,在垂直的方向上划分层在组织海量空间数据。 在空间数据的管理技术的发展中,从手工管理管理阶段到文件管理阶段再到数据库管理阶段,在三个数据管理阶段,对数据管理方式也不尽相同,在这里,我想说的是空间数据库的发展历史对空间数据管理的影响,第一是层次关系型数据库:只是数据库发展的初级阶段,这是空间数据的管理大多用文件方式管理,很显然不适合管理海量的空间数据,所以淘汰;第二是网络关系型数据库:在一定程度上解决了空间数据复杂管理的难题,但还是被日益崛起的关系型数据库所淘汰;第三是关系型数据库的发展:为了解决难于保证数据的完整性,开始将空

ORACLE编码规范

密级:内部公开 文档编号:NTT_SD_OBMGF 版本号:V1.0 ORACLE编码规范 惠州市新中新电子技术开发有限公司 ------------------------------------------------------------------------------------------------------ 惠州市新中新电子技术开发有限公司对本文件资料享受著作权及其它专属权利,未经书面许可,不得将该等文件资料(其全部或任何部分)披露予任何 第三方,或进行修改后使用。

文件更改摘要:

目录 1.前提 (6) 2.英文使用原则 (6) 3.逻辑对象的定义规范 (6) 3.1. ORACLE表空间定义 (6) 3.1.1.原则 (6) 3.1.2.命名 (6) 3.2. ORACLE数据文件 (7) 3.2.1.数据文件的存放 (7) 3.2.2.数据文件的命名 (7) 3.2.3.数据文件的大小 (7) 3.2.4.数据文件属性 (7) 3.3. 用户管理 (7) 3.3.1.用户创建 (7) 3.3.2.用户授权 (7) 3.3.3.密码管理 (8) 3.3.4.用户命名规范 (8) 3.4. 表定义 (8) 3.4.1.表名 (8) 3.4.2.主键(PRIMARY KEY) (9) 3.5. 列 (9) 3.5.1.列类型 (9) 3.5.2.列长度 (9) 3.6. 索引 (10) 3.7. 主键 (10) 3.8. 外键 (10) 4.表分析 (10) 5.PL/SQL存储过程编写规范 (10) 5.1. 命名 (10) 5.2. 格式 (11) 5.3. 大小写规则 (11) 5.4. 语句规范 (12) 5.4.1.SELECT语句的格式标准: (12) 5.4.2.UPDATE语句的格式标准: (12) 5.4.3.INSERT语句的格式标准: (13) 5.4.4.DELETE语句的格式标准: (13)

Oracle命名规则

数据库命名规则 2007-09-27 00:21:38| 分类:UML |字号订阅 数据库涉及字符规则 采用26个英文字母(区分大小写)和0 -9这十个自然数,加上下划线_组成,共63个字符。不能出现其他字符(注释除外)。 数据库对象命名规则 数据库对象包括表、视图(查询)、存储过程(参数查询)、函数、约束。对象名字由前缀和实际名字组成,长度不超过30。前缀:使用小写字母。 例如: 实际名字 实际名字尽量描述实体的内容,由单词或单词组合,每个单词的首字母大写,其他字母小写,不以数字和_开头。 因此,合法的对象名字类似如下。 数据库表命名规则 1)字段由前缀和实际名字组成。实际名字中首单词一个系统尽量采取同一单词。

前缀:使用小写字母tb,表示表。 例如:tbMember tbMember_Info tbForum_Board tbForum_Thread1 2) 表以名词或名词短语命名,确定表名是采用复数还是单数形式,此外给表的别名定义简单规则(比方说,如果表名是一个单词,别名就取单词的前4 个字母;如果表名是两个单词,就各取两个单词的前两个字母组成4 个字母长的别名;如果表的名字由3 个单词组成,从头两个单词中各取一个然后从最后一个单词中再取出两个字母,结果还是组成4 字母长的别名,其余依次类推)对工作用表来说,表名可以加上前缀WORK_ 后面附上采用该表的应用程序的名字。在命名过程当中,根据语义拼凑缩写即可。注意,由于ORCLE会将字段名称统一成大写或者小写中的一种,所以要求加上下划线。 举例: 定义的缩写Sales: Sal 销售; Order: Ord 订单; Detail: Dtl 明细; 则销售订单明细表命名为:Sal_Ord_Dtl; 3) 如果表或者是字段的名称仅有一个单词,那么建议不使用缩写,而是用完整的单词。 举例: 定义的缩写Material Ma 物品; 物品表名为:Material, 而不是Ma. 但是字段物品编码则是:Ma_ID;而不是Material_ID 4) 所有的存储值列表的表前面加上前缀Z 目的是将这些值列表类排序在数据库最后。 5) 所有的冗余类的命名(主要是累计表)前面加上前缀X 冗余类是为了提高数据库效率,非规范化数据库的时候加入的字段或者表6) 关联类通过用下划线连接两个基本类之后,再加前缀R的方式命名,后面按照字母顺序罗列两个表名或者表名的缩写。 关联表用于保存多对多关系。 如果被关联的表名大于10个字母,必须将原来的表名的进行缩写。如果没有其他原因,建议都使用缩写。 举例:表Object与自身存在多对多的关系,则保存多对多关系的表命名为:R_Object; 表Depart和Employee;存在多对多的关系;则关联表命名为 R_Dept_Emp 附加:[表类型_]+ 表名 如果是系统公用表,[表类型_]+ 表名 如果是数据表,省略表类型部分 表名取英文全名

Oracle数据库设计规范建议

Oracle数据库设计规范建议 1 目的 本规范的主要目的是希望规范数据库设计,尽量提前避免由于数据库设计不当而产生的麻烦;同时好的规范,在执行的时候可以培养出好的习惯,好的习惯是软件质量的很好的保证。 数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。 2 适用范围 本规范的适用人员范围包括我司的所有应用开发人员以及在我司承接数据库应用开发的软件人员。 本规范的适用IT范围包括数据库对象的命名规范、设计原则、SQL语句的设计和使用、SQL语句的性能优化建议、其他与性能有关的设计原则以及设计工具的选择。 3 数据对象的命名规范 3.1 通用规范 3.1.1 使用英文:要用简单明了的英文单词,不要用拼音,特别是拼音缩写。主要目的很明确,让人容易明白这个对象是做什么用的; 3.1.2 一律大写,特别是表名:有些数据库,表的命名乃至其他数据对象的命名是大小写敏感的,为了避免不必要的麻烦,并且尊重通常的习惯,最好一律用大写; 3.2 数据库对象命名规范 3.2.1 表的命名 3.2.1.1 表名的前缀:前缀_表名_T。为表的名称增加一个或者多个前缀,前缀名不要太长,可以用缩写,最好用下划线与后面的单词分开;其目的有这样几个:3.2.1.1.1 为了不与其他项目或者其他系统、子系统的表重名; 3.2.1.1.2 表示某种从属关系,比如表明是属于某个子系统、某个模块或者某个项目等等。表示这种从属关系的一个主要目的是,从表名能够大概知道如何去找相关的人员。比如以子系统为前缀的,当看到这个表的时候,就知道有问题可以去找该子系统的开发和使用人员; 3.2.2 视图命名:相关表名_V(或者根据需要另取名字); 3.2.3 程序包命名:程序包名_PKG(用英文表达程序包意义); 3.2.4 存储过程命名:存储过程名_PRO(用英文表达存储过程意义);

Oracle数据库开发规范

项目编号:××× xxx Oracle数据库开发规范 Oracle DB Development Standardization <部门名称> **年**月**日 文档信息: 文档名称: 文档编号: 文档版本日期: 起草人: 起草日期: 复审人: 复审日期: 版本历史: 版本 日期 作者 更改参考 说明

审批信息: 签字/日期 审核 审批 目录 1 概述 4 1.1 编写目的 4 1.2 文档约定 4 1.3 预期的读者和阅读建议 4 1.4 参考文献 5 2 数据库对象命名 6 2.1 命名总体原则 6 2.2 表名 6 2.3 视图 6 2.4 同义词 6 2.5 序列7 2.6 索引7 2.7 存储过程7 2.8 存储函数8 2.9 存储程序包8 2.10 触发器8 2.11 字段8 2.12 其他9 3 设计规范9 3.1 范围9 3.2 表空间9 3.3 字符集10 3.4 主外键约束10 3.5 分区表10 3.6 RAC下的序列设计10 3.7 字段10 3.8 表结构设计11 3.9 索引设计11 3.10 临时表11 4 SQL编写规范 12 4.1 书写规范12 4.2 SQL语句的索引使用13 4.3 SQL语句降低系统负荷 15 5 PL/SQL编程规范18

5.1 书写规范18 5.2 常用数据库操作语句编码规范19 5.3 常用过程控制结构20 5.4 Condition 21 5.5 Cursor 22 5.6 变量定义与赋值22 5.7 过程与函数调用23 5.8 例外处理(Exception) 23 5.9 例外处理的错误消息24 5.10 注释(Comment) 25 5.11 应用调试控制27 5.12 并发控制27 5.13 代码测试、维护29 1 概述 1.1 编写目的 为规范软件开发人员的Oracle数据库开发提供参考依据和统一标准。 1.2 文档约定 说明本文档中所用到的专用术语定义或解释,缩略词定义。 1.3 预期的读者和阅读建议 本文档适用于所有开发员。 1.4 参考文献 列出有关的参考文件,如: a.属于本项目的其他已发表文件; b.本文件中各处引用的文档资料。 列出这些文件的标题、作者,说明能够得到这些文件资料的来源。 2 数据库对象命名 2.1 命名总体原则 本规范所涉及数据库对象主要是指表、视图、同义词、索引、序列、存储过程、函数、触发器等; 命名应使用富有意义的英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划线分割;避免使用Oracle的保留字或关键字,如LEVEL和TYPE; 各表之间相关列名尽量同名; 除数据库模式对象名称长度为1-8个字符,其余对象名称均要求不超过30个字符; 命名只能使用大写英文字母,数字和下划线,且以英文字母开头。 2.2 表名 规则:XXX_MMM_DDDD 说明:XXX代表子系统或模块名称(2-3个字母构成); MMM代表子模块名称(2-3个字母构成,根据实际情况可以没有); DDDD为表的简称含义,使用英文单词或词组构成,可包括下划线,但不得使用汉语拼音。 示例:PO_HEADERS_ALL 2.3 视图 规则:XXX_MMM_DDDD_V 说明:XXX代表子系统或模块名称(2-3个字母构成);

数据库命名设计规范

数据库命名、设计规范 一、数据库表及字段 1.数据库表的命名规范: 表的前缀应该用系统或模块的英文名的缩写(全部大写)。如果系统功能简单,没有划分为模块,则可以以系统英文名称的缩写作为前缀,否则以各模块的英文名称缩写作为前缀。例如:如果有一个模块叫做BBS(缩写为BBS),那么你的数据库中的所有对象的名称都要加上这个前缀:BBS_ + 数据库对象名称,BBS_CustomerInfo标示论坛模块中的客户信息表。 表的名称必须是易于理解,能表达表的功能的英文单词或缩写英文单词,无论是完整英文单词还是缩写英文单词,单词首字母必须大写。如果当前表可用一个英文单词表示的,请用完整的英文单词来表示;例如:系统资料中的客户表的表名可命名为:SYS_Customer。如果当前表需用两个或两个以上的单词来表示时,尽量以完整形式书写,如太长可采用两个英文单词的缩写形式;例如:系统资料中的客户物料表可命名为:SYS_CustItem。 表名称不应该取得太长(一般不超过三个英文单词)。表名长度不能超过30个字符,表名中含有单词全部采用单数形式,单词首字母必须大写。在命名表时,用单数形式表示名称。例如,使用 Employee,而不是 Employees。对于有主明细的表来说。明细表的名称为:主表的名称 + 字符Dts。例如:采购定单的名称为:PO_Order,则采购定单的明细表为:PO_OrderDts;对于有主明细的表来说,明细表必须包含两个字段:主表关键字、SN,SN字段的类型为int型,目的为与主表关键字联合组成明细表的关键字,以及标示明细记录的先后顺序,如1,2,3……。表必须填写描述信息,后台表名尽量与前台表名相同,后台独有的表应以_b作为后缀。如r_gggd_b。 数据库表的命名采用如下规则: 1)表名用模块名_开头,表名长度不能超过30个字符,表名中含有单词全部采用单数形式,单词首字母必须大写。 2)多个单词间用下划线(_)进行连接。若库中有多个系统,表名采用系统名称+单词或多个单词,系统名是开发系统的缩写,如VNET。

命名规范_C (Sharp)

命名规范_C(Sharp) 1.命名规范 a)类 【规则1-1】使用Pascal规则命名类名,即首字母要大写。 【规则1-2】使用能够反映类功能的名词或名词短语命名类。 【规则1-3】不要使用“I”、“C”、“_”等特定含义前缀。 【规则1-4】自定义异常类应以Exception结尾。 【规则1-5】文件名要能反映类的内容,最好是和类同名。 b)类字段 【规则2-1】用camel规则来命名类成员变量名称,即首单词(或单词缩写)小写。 【规则2-2】类字段变量名前可加“_”前缀。 【规则2-3】坚决禁止在普通变量前加“m_”(这是VC老命名规则)。 c)方法 【规则3-1】方法名采用Pascal规则,第一个字符要大写。 【规则3-2】方法名应使用动词或动词短语。 【规则3-3】类中访问修饰符或功能相同的方法应该放在一起,且公共或实现接口的方法在前。 d)属性 【规则4-1】使用名词定义属性,属性使用Pascal规则,首字符大写。 【规则4-2】属性和相应字段名称要关联,可以使用“重构”菜单来生成属性。 e)参数 【规则5-1】参数采用camel规则命名,且首字符小写。 【规则5-2】使用描述性参数名称,参数名称应当具有最够的说明性。 【规则5-3】不要给参数加匈牙利语类型表示法的前缀。 【规则5-4】检查方法所有输入参数的有效性。 f)常量 【规则6-1】只读常量使用Pascal命名规则,即首字母大写。 【规则6-2】枚举名使用Pascal规则命名,枚举成员本质属于常量,命名规则同上。 【规则6-3】枚举值从小到大顺序定义。 【规则6-4】静态字段或属性采用Pascal规则,即首字符大写。 g)接口

Oracle数据库设计策略及规范

Oracle数据库设计策略及规范 设计策略及规范 1. 目的 定义Oracle数据库设计规范,作为数据库规划、设计、开发以及维护人员的技术参考资料。用以规范和指导相关人员的设计行为。 2. 概述 本文档根据Oracle数据库性能特点,描述对表、视图、存储过程、对象命名等方面的设计规范。 3. 基本策略 3.1 设计策略 ◆?分类拆分数据量大的表。 对于经常使用的表(如某些参数表或代码对照表),由于其使用频率很高,要尽量减少表中的记录数量。例如,银行的户主账表原来设计成一张表,虽然可以方便程序的设计与维护,但经过分析发现,由于数据量太大,会影响数据的迅速定位。如果将户主账表分别设计为活期户主账、定期户主账及对公户主账等,则可以大大提高查询效率。 ◆?分区策略 在拥有数500行以上的表时,采用分区策略。 ◆?索引设计。 对于大的数据库表,合理的索引能够提高整个数据库的操作效率。在索引设计中,索引字段应挑选重复值较少的字段;在对建有复合索引的字段进行检索时,应注意按照复合索引字段建立的顺序进行。例如,如果对一个5万多条记录的流水表以日期和流水号为序建立复合索引,由于在该表中日期的重复值接近整个表的记录数,用流水号进行查询所用的时间接近3秒;而如果以流水号为索引字段建立索引进行相同的查询,所用时间不到1秒。因此在大型数据库设计中,只有进行合理的索引字段选择,才能有效提高整个数据库的操作效率。 ◆?有时候为了提高性能。减少表的关联,恰当的数据冗余是允许的。 ◆?索引对新增,删除,更新的性能影响比较大,对相关的表的索引使用要权衡 ◆?为表和索引建立不同的表空间,禁止在系统表空间中放入非核心oracle系统成分的对象,确保数据表空间和索引表空间位于不同的磁盘磁盘驱动器上。 ◆?对于经常发生同时查询或频繁查询的表,最好把他放到不同的磁盘空间上 4. 逻辑设计规范 4.1 范式 ◆?如果没有性能上的原因,应该使用关系数据库理论,达到较高的范式,避免数据冗余。 ◆?如果在数据量上与性能上无特别要求,考虑到实现的方便性可以有适当的数据冗余,但基本上要达到3NF。 4.2 表设计 ◆?对于数据量比较大的表,根据表数据的属性进行分区,以得到较好的性能。如果表按某些字段进行增长,则采用按字段值范围进行范围分区;如果表按某个字段 的几个关键值进行分布,则采用列表分区;对于静态表,则采用Hash分区或列表分区;在范围分区中,如果数据按某关键字段均衡分布,则采用子分区的复合分区方法。 ◆?每个表均创建类型为Sequence的主键字段。 4.3 索引设计 ◆?常规OLTP应用,创建B-TREE索引,不创建位图索引。 ◆?不需要为小型数据表(<5000)创建索引。 ◆?给单个表创建的索引不超过5个,特别是海量交易类表。 ◆?索引条件查询结果记录,不超总记录的20%。 ◆?不要给固定选项的字段创建独立索引。 如只有‘男,女’的性别字段;‘是,否’的状态字段等,不要创建独立索引,位可以建立复合索引。 ◆?对于复合索引,索引字段顺序比较关键,把查询频率比较高的字段排在索引组合的最前面。 ◆?索引放到独立的表空间,该表空间不需要REDO LOG。 ◆?含有外键约束的表的字段,必须有单独索引。如订单明细的表头外键。 5. 对象命名规范 5.1 一般规范 5.1.1 语言 ◆?命名使用英文单词,不使用复数。 ◆?英文单词使用同对象本身意义相对或相近的单词。选择最简单或最通用的单词。不能使用毫不相干的单词来命名。 ◆?当一个单词不能表达对象含义时,用词组组合,如果组合太长时,采用简写或缩写,缩写要基本能表达原单词的意义。 ◆?当出现对象名重名时,是不同类型对象时,加类型前缀或后缀以示区别。 ◆?禁止使用中文或拼音缩写进行命名

oracle数据库命名规范

竭诚为您提供优质文档/双击可除oracle数据库命名规范 篇一:oracle数据库管理脚本命名规范 oracle資料庫管理腳本命名規範 oracle中的数据字典是数据库中的非常重要的一部分,提供了相关数据库的信息,它是所有oracle用户(从应用 的最终用户、应用的设计开发者到数据库管理员)的非常重要的信息来源。数据字典的创建,是在oracle数据库创建 完毕后,运行一些相关的数据库管理脚本来完成的。当采用oracle统一安装器(oracleuniversalinstaller)创建数据库时,oracle服务器有关的字典视图和脚本最后会被自动安装。但当需要升级目前的oracle数据库服务器时,数据库 管理员必须要手工重新运行创建这些视图或脚本的sql。安 装完数据库后,oracle数据库管理脚本就存放在操作系统中。对于unix和nt操作系统,分别位于不同的物理目录下,见表1所示: 表1数据库管理脚本在操作系统中的物理位置 oracle中几乎所有的系统管理脚本都保存在该文件目 录下,该目录下含有上百个不同文件。这些不同的文件都有

什么作用呢?本文将详细讨论组成oracle数据库管理脚本的命名规范。这样用户看到某个文件大概就可以知道该文件主要用途是什么。该目录下的文件按照功能不同可分为4大类,oracle为了容易区分这几类不同的文件,对于文件的命名遵从一定的规则。见表2所示。 表2数据库管理脚本命名规范 下面来详细介绍这四种不同类型的脚本功能: 1、cat*.sql脚本 该类脚本主要用于创建数据字典视图。其中,脚本catalog.sql和catproc.sql是创建数据库后必须要运行的两个脚本。这两个脚本的功能说明见表3所示。 (1)catalog.sql 该脚本创建相对于系统基表的视图和系统动态性能视图以及他们的同义词。该脚本又同时运行创建其他对象的脚本,主要有: 基本pl/sql环境,包括pl/sql的声明: -数据类型 -预定义例外 -内建的过程和函数 -sql操作等 审计 导入/导出

实验四 Oracle数据库对象

实验四Oracle数据库对象 一、实验目的 了解Oracle的表、视图、索引、序列、同义词的基本概念和基本用法。 二、实验内容和步骤 1、查看用户具有的对象和可访问的对象(操作结果截图填入空白处) 以SCOTT连接数据库。 (1)查看用户模式中各种类型的对象数量 selectobject_type,count(*) from user_objects group by object_type (2)确定用户模式有权访问的对象总数 selectobject_type,count(*) from all_objects group by object_type

(3)确定谁拥有用户能够看见的对象 select distinct owner from all_objects 2、创建基本表(填入代码) 创建上图基本表KHB,要求表创建在表空间USER_DATA

3、创建临时表(填入代码) (1)创建一个基于会话的临时表。 a) 创建临时表tmp_khb_1(与KHB同结构); b)插入一条记录khbh=’00000001’,khmc=’aaa’; c)以SCOTT用户启动第2个SQL*PLUS会话; d) 在第2个会话中查询tmp_khb_1;(操作代码及操作结果截图)

e)插入一条记录khbh=’00000002’,khmc=’bbb’; f)在第1个会话中查看第2个会话的数据;(操作代码及操作结果截图) g)在第1个会话中,将表截断; h)在第2个会话中,观察表中是否仍然存在记录;(操作代码及操作结果截图)

(2)创建一个基于事务的临时表 a) 创建临时表tmp_khb_2(与KHB同结构); b) 插入一条记录khbh=’00000001’,khmc=’aaa’; c)查询tmp_khb_2;(操作代码及操作结果截图) d)事务提交commit;

Oracle数据库使用及命名规则的详解

Ekw719 公司已建立的或待建立的网站,如:中文站(CHINA),国际站(ALIBABA),华商站(CHINESE)等。 OLPS Online process system,在线处理系统,即我们的会员可以浏览的网站所连接的数据库,也是我们所说的前台。 BOPS Back Office process system,后台处理系统,即我们的网站的发布系统。 BZO Business Object(?),公司网站低层JAVA对象,主要负责与数据库打交道。 一、命名约定 1.是指数据库、数据库对象如TABLE、SEQUENCE、PROCEDURE、COLUMN等的命名约定; 2.命名富有意义英文词汇,除个别通用的(见列表),要避免使用缩写),多个单词组成的,中间以下划线分割; 3.除数据库名称长度为1-8个字符,其余为1-30个字符,Database link名称也不要超过30个字符; 4.命名只能使用英文字母,数字和下划线;'Ekw719'> 5.避免使用Oracle的保留字如level、关键字如type(见列表); 6.名表之间相关列名尽量同名; 7.数据库的命名:网上数据库命名为“OLPS”+表示站点(SITE,以下同)的2-4个字符,后台数据库命名为“BOPS”+表示站点的2-4个字符。测试数据库命名为“OLPS|BOPS”+“TEST”,开发数据库命名为“OLPS|BOPS”+“TEST”,用模式(SCHEMA/USER)的不同来区分不同的站点。 8.INDEX命名:table_name+column_name+index_type(1 byte)+idx,各部分以下划线(_)分割。多单词组成的column name,取前几个单词首字母,加末单词组成column_name。如:sample表member_id上的index: sample_mid_idx news表title上的unique index:news_titile_uidx; 9.SEQUENCE命名:seq_+table_name; 二、注释说明 1.本注释说明主要用于PL/SQL程序及其它SQL文件,其它可作参考; 2.SQLPLUS接受的注释有三种: ――这儿是注释 /*这儿是注释*/ REM这儿是注释 3.开始注释,类似JAVAK中的开始注释,主要列出文件名,编写日期,版权说明,程序功能以及修改记录:REM REM$Header: filename, version, created date,auther REM REM Copyright REM

Oracle 数据库视图与基表的关系

Oracle 数据库视图与基表的关系 一:首先解释什么是视图:视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表,与真实表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据。视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间,并且基表的变化会导致视图相应的改变。 二:视图的创建: CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] 其中: OR REPLACE:若所创建的试图已经存在,Oracle自动重建该视图; FORCE:不管基表是否存在ORACLE都会自动创建该视图; NOFORCE:只有基表都存在ORACLE才会创建该视图: alias:为视图产生的列定义的别名; subquery:一条完整的SELECT语句,可以在该语句中定义别名可以挑选某个表中你需要的属性; WITH CHECK OPTION :插入或修改的数据行必须满足视图定义的约束; WITH READ ONLY :该视图上不能进行任何DML操作。 三:视图的修改:直接利用前边创建时的or replaece 重建即可。 四:视图上的DML 操作: 1.一般简单视图,也就是基表只有一个的视图,是可以通过修改视图来修改基表的,Oracle是可以通过视图来修改Base table的。所谓base table就是用来构建视图的表,也就是视图的数据来源表。但是这种修改是有条件的。比如: create view v_emp as select empno,ename,job,deptno from emp where deptno=10 with check option constraint emp_cnst; 如果有这个限制,那么通过视图v_emp 插入数据的deptno字段的值必须是10,否则就会报“ORA-01402: 视图WITH CHECK OPTIDN 违反where 子句”的异常。 2.针对复杂视图,也就是基表有多个表,通过内连接查询建立的视图,只能通过视图来修改key_preserved表, 什么是Key-Preserved Table呢.Oracle给出的定义是: A table is key preserved if every key of the table can also be a key of the result of the join. It is not necessary that the key or keys of a table be selected for it to be key preserved. It is sufficient that if the key or keys were selected, then they would also be key(s) of the result of the join. 如果某一个表的主键可以作为这个join结果(view通常是几个表的join结果)的主键,那么这个表就是key preserved table。 这个表的主键并非一定要出现在select出来的结果集中(select list里面),但是如果其出现在结果集中,那么它必须可以满足作为这个结果集的主键的要求。 通过下面的例子来解释: create view liuwenhe as select e.ename, e.empno, e.job, d.deptno, d.dname from emp e,dept d where e.empno in (10,30) and e.deptno = d.deptno;emp表的主键是empno,dept表的主键

相关文档