表空间数据文件采用自动扩展的方式,扩展容量快大小按2的整数倍(1M、2M、4M、8M、16M、32M、64M)进行扩展,创建表空间时尽量采用nologing选项。表空间的最大限制一般采用unlimited,除非确切知道表空间数据文件的最大使用范围。
(一般windows 32位系统的文件最大2G,64位的unix系统系统文件最大128G,但也要注重文件格式设定的文件大小),建议最大为2G。表空间采用local治理方式,例如:
CREATE TABLESPACETBS_USERINFO
DATAFILE
'/oradata/tbs_userinfo.dbf'
SIZE 8M
REUSE
AUTOEXTEND ON
NEXT 2M
MAXSIZE UNLIMITED
NOLOGGING
EXTENT MANAGEMENT
LOCAL
AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;
1.4 裸设备的使用
一个scsi设备可以 14个分区,unix操作系统256个分区,性能比文件系统方式高15%左右,空间大于要小于(实际分区大小减两个Oracle的数据块),比如100M,大于为100000K,推荐在unix使用软连接(ln)方式把裸设备形成文件,用加入表空间时加resue 选项,当然也可只接把设备加入表空间,移动裸设备使用dd命令
对于windows平台,oracle提供软连接工具,实现裸设备的使用,计算一条记录的长度
2 数据库逻辑设计原则
2.1 命名规范
2.1.1 表属性规范
2.1.1.1 表名
前缀为Tbl_ 。数据表名称必须以有特征含义的单词或缩写组成,中间可以用“_”分割,例如:tbl_pstn_detail。表名称不能用双引号包含。
2.1.1.2 表分区名
前缀为p 。分区名必须有特定含义的单词或字串。
例如 :tbl_pstn_detail 的分区p2004100101表示该分区存储 2004100101时段的数据。
2.1.1.3 字段名
字段名称必须用字母开头,采用有特征含义的单词或缩写,不能用双引号包含。
2.1.1.4 主键名
前缀为PK_。主键名称应是 前缀+表名+构成的字段名。假如复合主键的构成字段较多,则只包含第一个字段。表名可以去掉前缀。
2.1.1.5 外键名
前缀为FK_。外键名称应是 前缀+ 外键表名 + 主键表名 + 外键表构成的字段名。表名可以去掉前缀。
2.1.2 索引
4.1.2.1 普通索引
前缀为IDX_。索引名称应是 前缀+表名+构成的字段名。假如复合索引的构成字段较多,则只包含第一个字段,并添加序号。表名可以去掉前缀。
2.1.2.2 主键索引
前缀为IDX_PK_。索引名称应是 前缀+表名+构成的主键字段名,在创建表时候用using index指定主键索引属性。
2.1.2.3 唯一所以
前缀为IDX_UK_。索引名称应是 前缀+表名+构成的字段名。
2.1.2.4 外键索引
前缀为IDX_FK_。索引名称应是 前缀+表名+构成的外键字段名。
2.1.2.5 函数索引
前缀为IDX_func_。索引名称应是 前缀+表名+构成的特征表达字符。
2.1.2.6 蔟索引
前缀为IDX_clu_。索引名称应是 前缀+表名+构成的簇字段。
2.1.3 视图
前缀为V_。按业务操作命名视图。
2.1.4 实体化视图
前缀为MV_。按业务操作命名实体化视图。
2.1.5 存储过程
前缀为Proc_ 。按业务操作命名存储过程
2.1.6 触发器
前缀为Trig_ 。触发器名应是 前缀 + 表名 + 触发器名。
2.1.7 函数
前缀为Func_ 。按业务操作命名函数
2.1.8 数据包
前缀为Pkg_ 。按业务操作集合命名数据包。
2.1.9 序列
前缀为Seq_ 。按业务属性命名。
2.1.10 表空间
2.1.10.1 公用表空间
前缀为Tbs_ 。 根据存储的特性命名,例如: tbs_parameter 。
2.1.10.2 专用表空间
Tbs__nn。该表空间专门存储指定的某一个表,或某一表的若干个分区的数据
2.1.11 数据文件
nn.dbf 。
nn =1,2,3,4,…等。
2.1.12 普通变量
前缀为Var_ 。 存放字符、数字、日期型变量。
2.1.13 游标变量
前缀为Cur_ 。存放游标记录集。
2.1.14 记录型变量
前缀为Rec_ 。 存放记录型数据。
2.1.15 表类型变量
前缀为Tab_ 。 存放表类型数据。
2.1.16 数据库链
前缀为dbl_ 。 表示分布式数据库外部链接关系。
2.2 命名
2.2.1 语言
命名应该使用英文单词,避免使用拼音,非凡不应该使用拼音简写。命名不答应使用中文或者非凡字符。
英文单词使用用对象本身意义相对或相近的单词。选择最简单或最通用的单词。不能使用毫不相干的单词来命名
当一个单词不能表达对象含义时,用词组组合,假如组合太长时,采用用简或缩写,缩写要基本能表达原单词的意义。
当出现对象名重名时,是不同类型对象时,加类型前缀或后缀以示区别。
2.2.2 大小写
名称一律大写,以方便不同数据库移植,以及避免程序调用问题。
2.2.3 单词分隔
命名的各单词之间可以使用下划线进行分隔。
2.2.4 保留字
命名不答应使用SQL保留字。
2.2.5 命名长度
表名、字段名、视图名长度应限制在20个字符内(含前缀)。
2.2.6 字段名称
同一个字段名在一个数据库中只能代表一个意思。比如telephone在一个表中代表“电话号码”的意思,在另外一个表中就不能代表“手机号码”的意思。
不同的表用于相同内容的字段应该采用同样的名称,字段类型定义。
2.3 数据类型
2.3.1 字符型
固定长度的字串类型采用char,长度不固定的字串类型采用varchar。避免在长度不固定的情况下采用char类型。假如在数据迁移等出现以上情况,则必须使用trim()函数截去字串后的空格。
2.3.2 数字型
数字型字段尽量采用number类型。
2.3.3 日期和时间
2.3.3.1 系统时间
由数据库产生的系统时间首选数据库的日期型,如DATE类型。
2.3.3.2 外部时间
由数据导入或外部应用程序产生的日期时间类型采用varchar类型,数据格式采用:YYYYMMDDHH24MISS。
2.3.3.3 大字段
如无非凡需要,避免使用大字段(blob,clob,long,text,image等)。
2.3.3.4 唯一键
对于数字型唯一键值,尽可能用系列sequence产生。
2.4 设计
2.4.1 范式
如无性能上的必须原因,应该使用关系数据库理论,达到较高的范式,避免数据冗余,但是假如在数据量上与性能上无非凡要求,考虑到实现的方便性可以有适当的数据冗余,但基本上要达到3NF.如非确实必要,避免一个字段中存储多个标志的做法。如11101表示5个标志的一种取值。这往往是增加复杂度,降低性能的地方。