数据库设计
5.1 表的设计
设计表时,应对表进行规范化,使其具有十分简单的结构:
1、 关键问题是减少数据库中的信息冗余。如果在某些情况下有目的地创建数据库冗余能够明显提高应用的性能,也可以加上冗余信息;
2、 应判断一个模式中各属性之间存在的关系(即实体-关系图),明确标识出表间关系的过程是在一个数据库中决定主键和引用完整性规则的基础;
3、 每个表都应有一个主键——即一个列或一组列,它的值可以唯一标识表中的一行,主键的特性——唯一性、静态性、简洁性;
4、 对每个表进行完整性约束,需设置表的NOT NULL、PRIMARY KEY、UNIQUE、FOREIGN KEY及CHECK属性;
5、 在一个模式设计中有效地使用视图来增加安全级,用不同的透视来显示表中的数据以及把复杂的查询隐藏起来;
6、 使用索引来提高应用程序的速度。
5.2 总体要求
1、 合理设计系统表结构,尽量少的使用系统提供的序号型(serial)类型字段;
2、 对表中的每个字段,如果可能,应建立其对应的外部键;
3、 合理的设计表的完整性约束;
4、 对于经常查询的字段,建立索引以提高速度;
5、 给每个表取其对应的英文单词名为其表名,避免使用下划线(_);
6、 给每个字段取其对应的英文单词名为其字段名,避免使用下划线(_),对各表中相同意义的字段,取相同的字段名,并保证其类型和长度等属性一致;
7、 使用优化性能的SQL语句设计;
8、 正确的设计事务,保证事务确实是一个真正的工作单元,而不是多单元,使数据库中的事务尽可能短,从而减少系统中的资源竞争,并获得最佳性能;
9、 使用数据库存储过程和触发器来减少客户/服务器网络传输量、实施数据完整性、增强对象的安全性、增加功能度。
10、 提高系统安全性,应对数据库用户进行库级和表级授权。