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字段规范
3 使用规范
3.1综合
3.2查询
错误:
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删除
3.5修改
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 DROP LEVEL PRIOR TO
ASC ELSE LIKE PRIVILEGES TRIGGER
AUDIT EXCLUSIVE LOCK PUBLIC UID
BETWEEN EXISTS LONG RAW UNION
BY FILE MAXEXTENTS 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
COMMENT HAVING NOCOMPRESS ROWS VARCHAR2
COMPRESS IDENTIFIED NOWAIT SELECT VIEW
CONNECT IMMEDIATE NULL SESSION WHENEVER
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