(转)Oracle 9i 数据库设计指引全集(2)

表空间数据文件采用自动扩展的方式,扩展容量快大小按2的整数倍(1M、2M、4M、8M、16M、32M、64M)进行扩展,创建表空间时尽量采用nologing选项。表空间的最大限制一般采用unlimited,除非确切知道表空间数据文件的最大使用范围。(一般windows 32位系统的文件最大2G,64位的unix系统系统文件最大128G,但也要注意文件格式设定的文件大小),建议最大为2G。表空间采用local管理方式,例如:
  
  CREATE TABLESPACE TBS_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个标志的一种取值。这往往是增加复杂度,降低性能的地方。

posted @ 2009-02-27 15:14  AK47+  阅读(337)  评论(0编辑  收藏  举报