表的设计规范

表的设计规范

2.1、表的主键规范

遵循如下三点原则:第一:有无原则:除临时表和外部表,以及流水表,日志表外,其他表都要建立主键;第二:构成原则主键不能使用含有实际语义的列,应该增加一个xx_id字段做主键,类型为number,取值来自序列sequence第三:创建原则:对于500万以上的表,请数据组参与设计实施,采用先建唯一索引再添加主键约束的方式来创建主键;

2.2、表的主键列规范

对于实体表,主键就是一列,就是没有任何语义的自增的NUMBER列,对于关系表,主键就是相关实体表主键形成的复合主键,是多列;

2.3、使用注释的规范

原则

每个表,每个字段都要有注释,说明其含义,对于冗余字段还要特别说明其维护方法,外键字段说明参照与那个表

衡量

原则上谁设计谁注释

方法

查询字典表user_tab_commentsuser_col_comments可知道表和字段的注释信息

实施

对表添加注释:

SQL>comment  on  table    is 'xx';

对字段添加注释:

SQL>comment on column .  is 'xx';

2.4、一个表所含字段总长度的规范

原则

一个表中的所有字段,应当能存储在一个数据块中(BLOCK),也即:表的单行字段总长度减去pctfree)

衡量

对不含有大对象数据类型字段的表,字段数大于50个的,请数据组参与设计

方法

查询字典表USER_TAB_COLUMNS中的字段DATA_LENGTH得到表中所有字段的总长度,再依据db_block和表的pctfree参数可以判断是否一个数据行可以存储在一个数据块(BLOCK)

实施

如果所有字段的总长度超出了一个数据块,那么需要将该表拆分成两个(甚至多个)表,拆分的依据是字段的频繁使用程度,也就是频繁使用的字段在一个表中,很少被使用的字段放在另一个表中,他们之间使用相同的主键值,用主外键关联。这点就是“一个表所含字段访问频繁度的规范”

2.5、一个表所含字段访问频繁度的规范

原则

一个表中的各字段的访问频繁度应该基本一致

衡量

如果一个表的字段数超过50个, 请数据组参与审核

方法

如果一个表的字段数过多超过50个,并且依据业务逻辑确定该表中一些字段频繁被访问,另一些字段则很少被访问,则该表需要做拆分处理,这在OLAP系统中比较常见;

目的:这样可以避免读取频繁信息时多读取很少被访问的信息,可以提高IO性能,减少内存耗费;

实施

将访问频繁度相差太远的字段拆分到两个表中,一个表存频繁访问的字段,另一个表存很少被访问的字段;

2.6、一个表所含数据量的规范

原则

一个非分区表中的数据量不要超过500

衡量

一个非分区表中的数据量超过500万, 请数据组参与设计成分区表,如果该表数据量超过5000万,请DBA参与设计

方法

在系统上线前,通过对业务分析,判断一个表的数据量;在系统上线后,可以通过exp的日志,Top性能SQLcount(1)来发现数据量大的表

实施

将这些表进行分区,具体方法请参看分区表的设计规范

 

2.7、大对象字段(BLOBCLOB)使用规范

原则

存储图片,视频,音频,文件,500字节以上文本等占用太多空间的字段(大对象字段),不能和其他字段存储在一个表中

衡量

含有大对象(BLOBCLOB)字段的表设计和存储请数据组参与设计

方法

方法一:数据库存储,可以重新建一个表专门存储该大对象字段,该表基本为两个字段,一个为大对象编号ID为主键,一个为大对象内容本身,并将该主键在原表中作外键关联,该大对象表存储在单独的表空间中;方法二:操作系统存储,将这些文件存储在操作系统空间中,大对象字段存储该文件的全路径名

比较:如果该大对象字段常被修改,那么采用方法一;

如果该大对象信息为静态,加载后基本不变,那么可以采用方法二,它有一个致命缺点就是信息存储在数据库外部,不安全,容易丢失。

 

2.8、增量同步表的设计规范

字典信息表和需要使用增量同步的表必须增加如下属性:

属性名

类型

取值

说明

Status

Char(1)

Y/N Y为激活N为作废,默认为Y

标识该行是否使用。用于软删除,软删除需将主键和唯一约束列添加随机数后缀。

Create_time

Date

默认为sysdate

创建时间

Update_time

Date

默认为sysdate

最后修改时间

 

2.9、表的表空间使用规范

原则

依据表的DML频度而使用不同的表空间

衡量

表空间的规划由建库人员完成

方法

为了减少空间碎片问题,(1)将很少被DML(增删改)的静态表,放在一组表空间中;(2)将只发生INSERT的表放到一组表空间中,(3)而将常发生两种以上DML操作的动态表放在另一组表空间中,这三组表空间不能相交

实施

在上线前,依据需求分析确定动态表和静态表,将他们做最分离;上线运行之后,依据数据库性能分析得到的信息来区分动态表和静态表

2.10、索引的表空间使用规范

原则

表和索引原则上应该使用不同的表空间存储,并且不同DML频度的表的索引,放在不同的表空间中

衡量

表空间的规划有数据组或者DBA实施

方法

绝大多数情况下,动态表的索引必然是动态的,静态表的索引必然是静态的,依据对表的分析来确定索引的动静性

实施

将动态表的索引放在一组表空间中,静态表的索引放在另一个表空间中,两组不相交。而且和表所在的表空间也不相交。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27573546/viewspace-761474/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/27573546/viewspace-761474/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值