数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。
一、数据库设计的原则
表设计原则
1
(1)规范化与反规范化
规范化的优点是减少了数据冗余,节约了存储空间,相应逻辑和物理的I/O次数减少,同时加快了增、删、改的速度。但是一个完全规范化的设计并不总能生成最优的性能,因为对数据库查询通常需要更多的连接操作,从而影响到查询的速度,而且范式越高性能就会越差。出于性能和方便管理的考虑,原则上表设计应满足第三范式。有时为了提高某些查询或应用的性能而可以破坏规范规则,即反规范化。
数据应当按两种类别进行组织:频繁访问的数据和频繁修改的数据。对于频繁访问但是不频繁修改的数据,内部设计应当物理不规范化。对于频繁修改但并不频繁访问的数据,内部设计应当物理规范化。比较复杂的方法是将规范化的表作为逻辑数据库设计的基础,然后再根据整个应用系统的需要,物理地非规范化数据。
(2)数据表分类说明
根据应用的实际需要和特点,可以将数据表进行如下分类:
1
l 基本数据表:描述业务实体的基本信息。例如,人员基本信息、单位基本信息等。
l 标准编码表:描述属性的列表值。例如,职称、民族、状态等。
l 业务数据表:记录业务发生的过程和结果。例如,人员调动登记、变更通知单等。
l 系统信息表:存放与系统操作、业务控制有关的参数。例如,用户信息、权限、用户配置信息等。
l 统计数据表:存放业务数据统计值。例如,通知单统计、人员类别统计等。
l 临时处理表:存放业务处理过程中的中间结果。
l 其他类型表:存放应用层的日志、消息记录等。
字段设计原则
1
(1)一般来说,应该使用能正确存储和表示数据的最小类型。如果不确定需要什么数据类型,则选择不会超出范围的最小类型。
(2)选择更简单的数据类型。例如,比较整数的代价小于比较字符,因为字符集和排序规则使字符比较更复杂。
(3)尽可能把字段定义为 NOT NULL。对于字段能否NULL,应该在SQL建表脚本中明确指明,不应使用缺省。
(4)一个表中的字段不要太多,理论上不要超过80个。
(5)数据库中所有布尔型中数值0表示为假;数值1表示为真
(6)当字段定义为字符串类型时使用VARCHAR2而不用NVARCHAR
(7)字段尽可能有默认值,字符型的默认值为一个空字符值串,数字型的默认值为数值0。
键设计原则
1
(1)为关联字段创建外键。