Oracle数据库开发和设计规范

1 命名原则

1.1约定

  • 是指对数据库、数据库对象如表、字段、索引、序列、存储过程等的命名约定;
  • 命名使用富有意义的英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划线分割
  • 避免使用Oracle的保留字如LEVEL、关键字如TYPE(见Oracle保留字和关键字); 各表之间相关列名尽量同名;
  • 除数据库名称长度为1-8个字符,其余为1-30个字符,Database link名称也不要超过30个字符;
  • 命名只能使用英文字母,数字和下划线;

1.2表名

规则如下:

命名规则为xxx_yyy_TableName。xxx表示子系统的名称,由三个字母构成;yyy表示子系统中的子模块的名称(可以没有);TableName为表含义

TableName规则如下:

ü 使用英文单词或词组作为表名,不得使用汉语拼音

ü 用名词和名词短语作表名

ü 不使用复数

正确的命名,例如:

sys_user

biz_order

1.3存储过程

规则如下:

命名规则为xxx_yyy_StoredProcedureName。xxx表示子系统的名称,由三个字母构成;yyy表示子系统中的子模块的名称(可以没有);StoredProcedureName为存储过程含义

StoredProcedureName规则如下:

ü 用动词或动词短语来命名,并带有宾语

ü 需要符合用Pascal 命名规则。

ü 尽量谨慎地使用缩写

ü 尽量不要和关键字重合

ü 不要用任何名前缀 (例如 U,B)

ü StoredProcedureName内不使用下划线

ü 当操作依赖条件时,一般结尾使用 By+条件

存储过程正确的命名,例如:

sys_InsertUser

sys_SearchUserByUserID

sys_DeleteUserByUserID

1.4视图

规则如下:

ü 视图的命名采用xxx_yyy_ViewName_v。xxx表示子系统的名称,由三个字母构成;yyy表示子系统中的子模块的名称(可以没有);_v后缀表示视图,ViewName部分表示视图的含义。

ViewName规则如下:

ü 用名词和名词短语,

ü 不使用复数

ü 用Pascal 命名规则

ü 尽量谨慎地使用缩写

ü 尽量不要和关键字重合

ü 不要用任何名前缀 (例如 U,B)

ü ViewName中使用下划线

视图正确的命名,例如:

sys_UserView_v

biz_UserOrderView_v

1.5索引

规则如下:

table_name_column_name_idx。

多单词组成的column name,取前几个单词首字母,加末单词组成column_name。

如:

tst_sample表member_id上的索引: 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

1.8外键

外键命名:table_name_column_name_fk;

多单词组成的column name,取前几个单词首字母,加末单词组成column_name。

如:

tst_sample表user_id字段的外键: tst_sample_uid_fk

tst_sample表type_id字段的外键: tst_sample_tid_fk

2 设计规范

2.1规范约定

  1. 遵守数据的设计规范3NF 规定

· 表内的每一个值都只能被表达一次。

· 表内的每一行都应该被唯一的标识(有唯一键)。

· 表内不应该存储依赖于其他键的非键信息。

  1. 实体表都必须包含四个字段:编号(ID)、代码(Code)、创建人(Created By)、创建时间(Creation Time)、修改人(Modified By)、修改时间(Modification Time)、删除标志(Delete Status)。其含义如下:

ü 编号是系统内的唯一标识

ü 代码是客户为这个实体的编码,这个字段看需要确定是否保留

ü 创建人是是指数据库记录创建人

ü 创建时间是指数据库记录创建时间,默认为SYSDATE

ü 修改人是是指数据库记录修改人

ü 修改时间是指数据库记录修改时间,默认为SYSDATE

ü 删除标志是本条记录是否已删除的标志(0:没有删除;1:已经删除),数据中的数据不做真正删除,只设置这个标志

这五个字段的命名规则如下

ü 实体名+字段名称,如user_id、user_code、created_by、creation_time、modified_by 、modification_time 、delete_status。

ü 这五个字段的类型和长度规则如下

n 编号 INTEGER

n 代码 VARCHAR2(30)

n 创建人 INTEGER

n 创建时间DATE

n 修改人 INTEGER

n 修改时间DATE

n 删除标志 CHAR(1)

2.2字段规范

一行记录必须表内唯一,表必须有主键。
枚举类型使用 NUMBER,且需要说明枚举类型的各个不同取值的含义
ID结尾的字段为仅由数字组成,Code结尾的字段为仅由字母或数字组成
用CHAR(1)表示布尔值的取大写:“Y”,“N”。
应尽量使用VARCHAR2代替CHAR类型;
VARCHAR(2)最多4000字符;
DATE精确到秒,而非天;
使用CLOB代替LONG,BLOB代替LONG RAW;
使用NUMBER数据类型时请给定长度,例如:NUMBER(5,2) 表示整数部分最大3位,小数部分为2位;

3 使用规范

3.1综合

如果开发过程中需要建立索引,需要提交书面的更改请求,说明所需索引的定义(名称、字段列表、顺序、索引类型)以及建立的理由。数据库管理员统一维护索引并将提交的请求更改。
数据库各表的初始数据(包含各代码表、配置表)需要提交给数据库管理员。
不得使用触发器。
涉及到数据库多表数据的更改(Insert/Delete/Update)必须使用数据库事务进行控制,并且必须有完整事务开始和提交/回滚机制。不能使用范围事务
尽量避免Union操作的使用,需要使用时,请向数据库管理员咨询使用Union操作的影响。
SQL语句和存储过程,尽量使用PL/SQL Develper的代码美化器美化。
属于ORACLE的关键字大小,表名、列名等小写。

3.2查询

在表查询中,一律不要使用* 作为查询的字段列表,需要哪些字段必须显式写明
在表查询中,必须有Where条件,除非此表为非增长表
在表查询中,一次最多返回的记录条数不要超过1000条或记录内容不要大于1MB的数据。
在表查询中,作Order By排序时,优先使用主键列,索引列
多表关联查询时,优先使用Where条件,再作表关联,并且需要保证被关联的字段需要有索引。
避免在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
WHERE gmt_modified

= TO_DATE(‘2001-9-01’,’yyyy-mm-dd’)
AND gmt_modified
< TO_DATE(‘2001-9-02’,’yyyy-mm-dd’);

避免使用数据库的类型自动转换功能:
错误:
SELECT category_id, category_name FROM category
WHERE category_id = ‘123’; – id’s type is number

正确:
SELECT category_id, category_name FROM category
WHERE category_id = 123; – id’s type is number

3.4删除

删除记录时,必须有Where唯一条件
当有主从表时,要先删除从表记录,在删除主表记录

3.5修改

修改记录时,必须有Where唯一条件

4 Oracle保留字和关键字

https://blog.csdn.net/jieouyang/article/details/8260429

猜你喜欢

转载自blog.csdn.net/wanlixingzhe/article/details/83627518