EMPLOYEES,有一个索引建立在列CORPIDDEPARTIDEMPLOYEEID三列上,在创建语句中也依据上述顺序,就没有必要再为CORPID建立索引;也没有必要再建立以CORPID在前,DEPARTID在后的联合索引;如果EMPLOYEEID需要索引,那么为EMPLOYEEID建立一个索引是不与上面的索引重复的;DEPARTID列也类似;
控制一个表的索引数量,尽量使得一个表的索引数量小于五个;
视图的设计
在不太清楚视图用法的情况下,尽量不建。因为一旦建了,就有被滥用的危险;
如果需要建视图,只要是打算长期使用的,请写入数据库设计中。明确它的用途、目的;
建立视图时要明确写出所有要选择出的列名而不要以SELECT来代替,可以使结构清晰可读性增强,也不会增加它对表的所有字段的依赖,而表是很可能修改的,特别是增加字段。就很有可能导致使用该视图的应用程序出错;
存储过程、函数、触发器的设计
触发器的功能通常可以用其他方式实现。在调试程序时触发器可能成为干扰。假如你确实需要采用触发器,一定要经过测试再应用在生产系统中,而且必须集中对它文档化。
请把程序包、存储过程、函数、触发器,与应用程序一同加入CVS中,进行版本控制。因为此四者包含了代码,应用程序对他们的依赖程度比对表、视图的依赖程度更高;
适量但尽量少使用存储过程、函数、触发器。使用存储过程、函数、触发器的影响:
1可以减少数据库与客户端的交互,提高性能;
f2有的数据库还对他们进行了某种程度的编译,在执行的时候,不用再对其中的SQL等语句进行解析,从而提高速度;
3如果有多个应用,使用了不同的开发语言,当有某些关键的或者复杂逻辑希望共享,则可以考虑使用存储过程或者函数。因为存储过程等在数据库一级是共享的;4增强了应用对数据库的依赖,如果打算将来移植数据库的话,使用得越多,则移植的困难越大;数据库中的业务逻辑越多(存储过程等),应用以及存储过程等的维护难度也会增大;
5通常存储过程等没有面向对象的特性,不容易设计出易于扩展的结构。当存储过程比较复杂时,或者它们相互间的调用关系比较复杂时,可能难于维护;
DBA项目数据管理细节
因项目开发需要,数据库分为测试数据库和正式数据库,测试数据库为程序员开发用;无论何种原因数据库变动后必须将数据库变动脚本提交DBA,由DBA提交正式库,并修改项目数据库设计PDMPDM升级为新版本。
fr