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 规定
· 表内的每一个值都只能被表达一次。
· 表内的每一行都应该被唯一的标识(有唯一键)。
· 表内不应该存储依赖于其他键的非键信息。
2. 实体表都必须包含四个字段:编号(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_promotionWHERE TO_CHAR(gmt_modified,’yyyy-mm-dd’) = ‘20001-09-01’;正确:SELECT service_id,service_name FROM service_promotionWHERE 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 categoryWHERE category_id = ‘123’; -- id’s type is number
正确:SELECT category_id, category_name FROM categoryWHERE category_id = 123; -- id’s type is number
3.4删除
- 删除记录时,必须有Where唯一条件
- 当有主从表时,要先删除从表记录,在删除主表记录
3.5修改
- 修改记录时,必须有Where唯一条件
![a660a439e610192abe135f34513e9d93.png](https://i-blog.csdnimg.cn/blog_migrate/7adddcb66d8f447ea084683e80b3ffaf.jpeg)