《Oracle数据库开发和设计规范.pdf》由会员分享,可在线阅读,更多相关《Oracle数据库开发和设计规范.pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1/13文档可自由编辑 Oracle 数据库开发和设计规范 1 命名原则 1.1 约定 是指对数据库、数据库对象如表、字段、索引、序列、存储过程等的命名约定;命名使用富有意义的英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划线分割 避免使用 Oracle 的保留字如 LEVEL、关键字如 TYPE(见 Oracle保留字和关键字);各表之间相关列名尽量同名;除数据库名称长度为 18 个字符,其余为 130 个字符,Database link 名称也不要超过 30 个字符;命名只能使用英文字母,数字和下划线;1.2 表名 规则如下:2/13文档可自由编辑 命名规则为 xxx_yyy_Tab
2、leName。xxx 表示子系统的名称,由三个字母构成;yyy 表示子系统中的子模块的名称(可以没有);TableName为表含义 TableName 规则如下:使用英文单词或词组作为表名,不得使用汉语拼音 用名词和名词短语作表名 不使用复数 正确的命名,例如:sys_user biz_order 1.3 存储过程 规则如下:命名规则为 xxx_yyy_StoredProcedureName。xxx 表示子系统的名称,由三个字母构成;yyy 表示子系统中的子模块的名称(可以没有);StoredProcedureName 为存储过程含义 3/13文档可自由编辑 StoredProcedureNa
3、me 规则如下:用动词或动词短语来命名,并带有宾语 需要符合用 Pascal 命名规则。尽量谨慎地使用缩写 尽量不要和关键字重合 不要用任何名前缀(例如 U,B)StoredProcedureName 内不使用下划线 当操作依赖条件时,一般结尾使用 By+条件 存储过程正确的命名,例如:sys_InsertUser sys_SearchUserByUserID sys_DeleteUserByUserID 1.4 视图 规则如下:4/13文档可自由编辑 视图的命名采用 xxx_yyy_ViewName_v。xxx 表示子系统的名称,由三个字母构成;yyy 表示子系统中的子模块的名称(可以没有)
4、;_v 后缀表示视图,ViewName 部分表示视图的含义。ViewName 规则如下:用名词和名词短语,不使用复数 用 Pascal 命名规则 尽量谨慎地使用缩写 尽量不要和关键字重合 不要用任何名前缀(例如 U,B)ViewName 中使用下划线 视图正确的命名,例如:sys_UserView_v biz_UserOrderView_v 1.5 索引 5/13文档可自由编辑 规则如下:table_name_column_name_idx。多单词组成的 column name,取前几个单词首字母,加末单词组成column_name。如:tst_sample 表 member_id 上的索引:
5、tst_sample_mid_idx sys_news 表 title 上的索引:sys_news_titile_idx;1.6 序列 规则如下:table_name_seq;如:tst_sample 表的序列:tst_sample_seq 1.7 主键 主键命名:table_name_pk;如:tst_sample 表的主键:tst_sample_pk 6/13文档可自由编辑 1.8 外键 外键命名:table_name_column_name_fk;多单词组成的 column name,取前几个单词首字母,加末单词组成column_name。如:tst_sample 表 user_id 字
6、段的外键:tst_sample_uid_fk tst_sample 表 type_id 字段的外键:tst_sample_tid_fk 2 设计规范 2.1 规范约定 1.遵守数据的设计规范 3NF 规定 表内的每一个值都只能被表达一次。表内的每一行都应该被唯一的标识(有唯一键)。表内不应该存储依赖于其他键的非键信息。7/13文档可自由编辑 2.实体表都必须包含四个字段:编号(ID)、代码(Code)、创建人(Created By)、创建时间(Creation Time)、修改人(Modified By)、修改时间(Modification Time)、删除标志(Delete Status)。
7、其含义如下:编号是系统内的唯一标识 代码是客户为这个实体的编码,这个字段看需要确定是否保留 创建人是是指数据库记录创建人 创建时间是指数据库记录创建时间,默认为 SYSDATE 修改人是是指数据库记录修改人 修改时间是指数据库记录修改时间,默认为 SYSDATE 删除标志是本条记录是否已删除的标志(0:没有删除;1:已经删除),数据中的数据不做真正删除,只设置这个标志 这五个字段的命名规则如下 实体名字段名称,如 user_id、user_code、created_by、creation_time、modified_by、modification_time、delete_status。这五个字
8、段的类型和长度规则如下 n 编号 INTEGER n 代码 VARCHAR2(30)8/13文档可自由编辑 n 创建人 INTEGER n 创建时间 DATE n 修改人 INTEGER n 修改时间 DATE n 删除标志 CHAR(1)2.2 字段规范 1.一行记录必须表内唯一,表必须有主键。2.枚举类型使用 NUMBER,且需要说明枚举类型的各个不同取值的含义 3.ID 结尾的字段为仅由数字组成,Code 结尾的字段为仅由字母或数字组成 4.用 CHAR(1)表示布尔值的取大写:“Y”,“N”。5.应尽量使用 VARCHAR2 代替 CHAR 类型;6.VARCHAR(2)最多 4000
9、 字符;7.DATE 精确到秒,而非天;8.使用 CLOB 代替 LONG,BLOB 代替 LONG RAW;9/13文档可自由编辑 9.使用 NUMBER 数据类型时请给定长度,例如:NUMBER(5,2)表示整数部分最大 3 位,小数部分为 2 位;3 使用规范 3.1 综合 1.如果开发过程中需要建立索引,需要提交书面的更改请求,说明所需索引的定义(名称、字段列表、顺序、索引类型)以及建立的理由。数据库管理员统一维护索引并将提交的请求更改。2.数据库各表的初始数据(包含各代码表、配置表)需要提交给数据库管理员。3.不得使用触发器。4.涉及到数据库多表数据的更改(Insert/Delete
10、/Update)必须使用数据库事务进行控制,并且必须有完整事务开始和提交/回滚机制。不能使用范围事务 5.尽量避免 Union 操作的使用,需要使用时,请向数据库管理员咨询使用 Union 操作的影响。6.SQL 语句和存储过程,尽量使用 PL/SQL Develper 的代码美化器美化。7.属于 ORACLE 的关键字大小,表名、列名等小写。10/13文档可自由编辑 3.2 查询 1.在表查询中,一律不要使用*作为查询的字段列表,需要哪些字段必须显式写明 2.在表查询中,必须有 Where 条件,除非此表为非增长表 3.在表查询中,一次最多返回的记录条数不要超过 1000 条或记录内容不要大
11、于 1MB 的数据。4.在表查询中,作 Order By 排序时,优先使用主键列,索引列 5.多表关联查询时,优先使用 Where 条件,再作表关联,并且需要保证被关联的字段需要有索引。6.避免在 WHERE 字句中对列施以函数:错误:SELECT service_id,service_name FROM service_promotion WHERE TO_CHAR(gmt_modified,yyyy-mm-dd)=20001-09-01;正确:SELECT service_id,service_name FROM service_promotion 11/13文档可自由编辑 WHERE g
12、mt_modified =TO_DATE(2001-9-01,yyyy-mm-dd)AND gmt_modified TO_DATE(2001-9-02,yyyy-mm-dd);1.避免使用数据库的类型自动转换功能:错误:SELECT category_id,category_name FROM category WHERE category_id=123;-ids type is number 正确:SELECT category_id,category_name FROM category WHERE category_id=123;-ids type is number 3.4 删除 1
13、.删除记录时,必须有 Where 唯一条件 2.当有主从表时,要先删除从表记录,在删除主表记录 3.5 修改 1.修改记录时,必须有 Where 唯一条件 12/13文档可自由编辑 4 Oracle 保留字和关键字 ACCESS DECIMAL INITIAL ON START ADD NOT INSERT ONLINE SUCCESSFUL ALL DEFAULT INTEGER OPTION SYNONYM ALTER DELETE INTERSECT OR SYSDATE AND DESC INTO ORDER TABLE ANY DISTINCT IS PCTFREE THEN AS
14、DROP LEVEL PRIOR TO ASC ELSE LIKE PRIVILEGES TRIGGER AUDIT EXCLUSIVE LOCK PUBLIC UID BETWEEN EXISTS LONG RAW UNION BY RENAME UNIQUE FROM FLOAT MINUS RESOURCE UPDATE CHAR FOR MLSLABEL REVOKE USER CHECK SHARE MODE ROW VALIDATE CLUSTER GRANT MODIFY ROWID VALUES COLUMN GROUP NOAUDIT ROWNUM VARCHAR COMME
15、NT HAVING NOCOMPRESS ROWS VARCHAR2 COMPRESS IDENTIFIED NOWAIT SELECT VIEW CONNECT IMMEDIATE NULL SESSION WHENEVER 13/13文档可自由编辑 CREATE IN NUMBER SET WHERE CURRENT INCREMENT OF SIZE WITH DATE INDEX OFFLINE SMALLINT CHAR VARHCAR VARCHAR2 NUMBER DATE LONG CLOB BLOB BFILE INTEGER DECIMAL SUM COUNT GROUPING AVERAGE TYPE (学习的目的是增长知识,提高能力,相信一分耕耘一分收获,努力就一定可以获得应有的回报)