以下几条是我几年做项目总结出来的经验,可能不一定对,特别是对于做产品。写出来与大家一起交流。
1、 数据表、字段、表空间、用户等所有数据库对象命名不要带有项目标识和单位名称,例如**局**项目,所有表的名称、表空间名称、数据文件、用户等不要带有**局的拼音缩写等字样,因为往往一个系统开发完成后会在其它地方使用,如果带有单位标识会令其它单位感到不愉快。最好是每个系统有一个专有名称,如电子政务信息系统使用EGIS标识,这样系统迁移的时的工作量比较小。
2、 尽量避免使用Long Raw、BLOB等大字段,如果不可避免的话建议建立一个公共的BLOB字段表,所有BLOB信息都集中存放,千万不要把BLOB字段分散到各个表中。因为一旦有BLOB、LONG RAW等大字段会给备份、数据访问、数据查询带来麻烦。例如一个数据表中有BLOB字段,在很多场合就不能使用select * from Tablename进行查,如在WebService
3、 应用系统要单独建立用户,表空间,表空间分为数据表空间、索引表空间、临时表空间,所有的数据表都要放在数据表空间中,所有索引都要放在索引表空间中。避免应用系统与Oracle进行资源争用从而影响系统运行效率。
4、 字段数据类型尽量选用字符型,长度、大小要留有余地,如编号之类的字段,如果正常编号长度为10的话,设计时可以定义到14,这样方便以后系统扩充时使用。
5、 对于数据表的访问一定要具体到字段名,尽可以不要用select * from tablename之类的查询语名,尽量采用select field1,field2,field3….. from tablename之类的话。
6、 查询语句中一定要指定排序字段及排序方式,在以下情况可以不用排序,如查询出来的结果是中间结果,程序还要对其进行处理,为了加快查询速度(排序对SQL语句的执行速度有很大影响)可以放弃排序。
7、 采用函数实现编码到名称的转换操作,通过SQL语句查询出来的数据不需要编码到名称的转换操作。避免在程序中参查询结果进行遍历
8、 系统中经常会有图片、XML、文本、各类文档等数据,通常采用BLOB字段存放这些信息,建议把这些大数据量的表单独建立表空间存放,并建立专门用户,同时建立一个公共同义词,这样可以大大提高数据备份速度。
9、 对哪些要定期发布的数据,如果实时性要求不高的话可以采用中间结果表的策略,建立JOB定期对各数据表中的数据进行制取,经整理后把结果存放到中间结果表中,发布数据直接读取中间表,这样可以达到提高速度的,对于应用网上对外发布、查询的应用中非常有效。
10、 一定要建立数据字典表,详细描述各类及字段的说明,类型,对天自定义查询、统计和其它自定义场合非常有用,同时也方便同事之间的沟通。
11、 采用Oracle全文搜索解决查询速度问题,特别是用多个%查询问题,如地址、权属人查询。
12、 不要轻易参对已经稳定的数据库升级,如Oracle9i升级到Oracle 10g,因为升级以后可以带来其它的问题。
13、 安装数据库和SDE软件时一定要先看SDE的支持的软件清单,特别是小版本问题,否则以后会出现由于版本带来两者不兼容的问题。如arcSDE 9.1 和Oracle 9.2.0.1,Oracle 10.2.0.1.0。