ORACLE数据库开发规范
注:本规范基于ORACLE10G。对于其他数据库以及ORACLE数据库其他的版本,本规范并不一定合适。
目录
目录 3
1:字符集、字段类型 4
:字符集 4
:字段类型 4
2:命名规范 6
:命名规则表 6
:命名规范: 7
3:书写规范 9
:缩进风格与对齐 9
:语句书写规则 9
:其他 11
4:表 13
5:触发器 14
6:主键和外键: 15
7:索引 16
:建立索引 16
:使用索引 16
8:视图 18
9:存储过程和函数 19
10:注释规范 22
:总则 22
:存储过程、函数头注释 22
:文件注释 23
11:脚本规范 25
12:SQL语句性能优化 27
13:冗余信息 31
14:异常处理 32
附录 33
数据库三个范式 33
1:字符集、字段类型
:字符集
ORACLE的数据库实例有2个字符集设置:数据库字符集和国家字符集。
【规则1-1-1】数据库字符集设置为ZHS16GBK,国家字符集设置为AL16UTF16。
【规则1-1-2】不要试图修改数据库的字符集。如果需要不同字符集的数据库实例,那只能重新建立一个新的数据库实例。
:字段类型
【规则1-2-1】定长文本型字段都要声明char,不定长文本型字段都要声明成varchar2(如果确实需要,也可以使用nvarchar2)类型。
例如:
Create table t_test (name varchar2(10), department nvarchar2(20));
请注意,在ZHS16GBK字符集下,每一个汉字是占用2个字节,而每一个英文字母和符号占用一个字节。上面的name字段可以最多存储5个汉字,或者是10个字母。而department字段可以最多保存20个字符,不论是汉字或者字母。
也可以如下声明:
Create table t_test (name varchar2(10 char), department varchar2(20 char));
这样的话,不论是汉字或者是字母,name字段就可以保存最多10个字符,。
【规则1-2-2】所有的日期型都要声明成文本型,形同:yyyyMMdd。其中,yyyy是4位数的年份,MM是两位数的月份,dd是两位数的日期。举例如下:
20050112表示2005年1月份12日
【规则1-2-3】所有的时间型都要声明成文本型,形同:hh24:mi:ss。其中,hh24表示是24进制的小时,mi是分钟,ss是秒数。
举例如下:
11:12:13表示11点12分13秒。
【规则2-2-3】如果一个字段需要同时包含日期和时间,需要分成日期型和时间型两种类型的字段进行设计。
【规则1-2-4】bool型字段一律定义成char(1)类型,'0 '表示false,'1 '表示true。同时需要在该字段上面加约束,使合法的取值只能是0,1。
【规则1-2-5】所有的整型字段都应该声明为 number(n),n为整型字段有效长度。
比如
Create table t_test (age number(3))
字段age能存储从-999 到 999的数字。当然,可以在这个字段上加约束,以约束它只能保存正数。不要如以下的方式定义整型:
Create table t_test (age number)。
因为这样定义等价于:
Create table t_test (age number(38))
很显然,这个字段定义得实在太大太大了。不但没有必要,而且对数据库有负面影响。
【规则1-2-6】所有的浮点数定义为:number(p,s),其中的p是表示精度,或者总位数,取1-38中数字。S是小数位数,合法值为:-84--127。
比如:
Create table table1 (salary number(8,2))
这个salary字段表示,精确到小数点后面2位,总共最多有8位数字,这样算来,在小数点前面,最多能有6位数字。,最大负数是-。
【规则1-2-7】如果一个字段保存的是一系列的编码(枚举型),则该字段必须定义成文本型。字段中保存的是大写字母。
举例如下:
Customer表格有一个字段customer_type,该字段对应的是客户的类型编码,字段类型是char(1),其中,'N'表示普通客户,'V'表示VIP客户。同时必须增加约束,以保证枚举选择以外的值不能被插入。
【规则1-2-8】如无特殊
Oracle数据库开发规范 来自淘豆网m.daumloan.com转载请标明出处.