本文仔细介绍了Oracle数据库使用及命名规则,及Oracle中的缩写含义。
公司已建立的或待建立的网站,如:中文站(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. 命名只能使用英文字母,数字和下划线;
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接受的注释有三种:
?D?D 这儿是注释
/* 这儿是注释 */
REM 这儿是注释
3. 开始注释,类似JAVAK中的开始注释,主要列出文件名,编写日期,版权说明,程序功能以及修改记录:
|
4. 块注释,如表注释,PROCEDURE注释等,同JAVA:
|
5. 单行注释,如列注释:
|
三、 缩进
低级别语句在高级别语句后的,一般缩进4个空格:
|
同一语句不同部分的缩进,如果为sub statement,则通常为2个空格,如果与上一句某部分有密切联系的,则缩至与其对齐:
|
四、 断行
• 一行最长不能超过80字符
• 同一语句不同字句之间
• 逗号以后空格
• 其他分割符前空格
|
五、 大小写
属于Oracle的关键字大小,表名、列名等小写。
六、 列类型的选择
• 用CHAR(1)代替布尔值;
• 应尽量使用VARCHAR2代替CHAR类型;
• VARCHAR(2)最多4000字符;
• DATE精确到微秒,而非天;
• 使用CLOB代替LONG,BLOB代替LONG RAW;
• ORACLE只有NUMBER一种数据类型,使用时请给定长度;
七、 主键选择
选择有意义的,不太长且能唯一标识记录行的列做主键,没有这种列时,才考虑使用SEQUENCE做主健。
八、 列长度的选择
应当根据实际需要选择列长度。有对应web 页面的,与页面上对应列长度一致。
对数据的验证除数据库端实现外还要尽可能在表现层控制。
九、 使用SQL语句的约定
1. 尽量避免在循环中使用SQL语句。
2. 避免在WHERE字句中对列施以函数:
|
而应使用:
|
3. 避免使用数据库的类型自动转换功能:
|
4. 避免无效的连接:
|
5. 连接(join)时要使用别名:
|
6. 取TABLE 的META信息:
|
十、 关于ALIBABA表的约定
如果使用ALIBABA BZO,设表至少有如下字段:
site VARCHAR2(32)
gmt_create DATE
gmt_modified DATE
如果从IdBizObject继承,则还有一个NUMBER型的列,通常是主键,并与某一个SEQUENCECF 对应;如果从StrIdBizObject继承,则还有一个VARCHAR2型的列。
十一、 列值约定
1. 有固定值列表的列,如status, action, site, 其值取小写;
2. 应尽可能选择数字来代表固定值列表中的值,相应的列定义为NUMBER型;
3. 用CHAR(1)表示布尔值的取大写:“Y”,“N”。
十二、 关于表重复属性的定义
不能有多择一的重复属性列;
对于能多选的重复属性列,如果不做查询列并且重复次数较多,应使用ID_VARRAY代替,如要用作查询列,重复次数多的,应另建一表,次数少的且列值为二择一时,应使用NUMBER类型,加位操作。
十三、 数据修改约定
发现Production环境中数据有误,需要改正的,应在RA TERMINAL上提交数据更新表单,由数据库操作员在当日17时前修改完毕。
数据库更程序更新的结构变动及数据更新,类似处理。
提交SQTT测试需要准备数据或更新结构的,暂时先写入测试请求中,由SQTT同志MAIL(注明测试请求表单链接即可)通过数据库操作员修改数据库。待内部网TEAM增加新的表单后,测试请求分开提交。
十四、 数据库设计流程
在新项目设计阶段会议,应有DBA参加。在SCHEMA确定以后方可开始编码。
缩写字列表:
|
特殊字列表:
|