细节3 先决条件——分析和设计数据库
数据库在整个软件开发过程中扮演着重要的角色,是用来存储数据的地方,可以说数据库设计得好坏将直接影响程序的开发速度和优劣,因此分析和设计数据库就显得尤为重要。在分析和设计数据库时,首先需要对用户的需求进行分析,设计一个结构合理,能够满足用户需求的数据库。
在根据用户的需求对数据库进行分析时需要注意以下两点:
(1)在需求分析阶段一个重要而困难的任务是收集将来应用所涉及的数据。
若设计人员仅仅按当前应用来设计数据库,新数据的加入不仅会影响数据库的概念结构,而且还将影响逻辑结构和物理结构,因此设计人员应充分考虑到可能的扩充和改变,使设计易于更改。
(2)必须强调用户的参与,这是数据库应用系统设计的特点。
数据库应用系统和广泛的用户有着密切的联系,其设计和建立又可能对更多人的工作环境产生重要影响。因而,设计人员应该和用户充分合作进行合理设计,并对设计工作的最后结果承担共同的责任。
说明
需求分析阶段是数据库设计的重要阶段,需求分析最终决定着数据库设计的好坏,从而也直接关系到所开发的程序的效率和质量,所以在需求分析阶段,一定要与用户进行沟通,并考虑到可能的扩充和改变,这样才能真正设计出一个优秀的数据库,为以后程序开发的效率提供保证。
数据库设计又分为概念设计、逻辑设计和物理设计,下面分别进行讲解。
1.数据库概念设计
数据库概念设计是分析数据间的关系,并建立一个抽象的数据模型,数据库概念设计可以使用E-R图来表示实体、属性和联系。
示例:
假设有一个部门实体,部门实体有部门编号和部门名称两个属性,则部门实体的E-R图如图2.1所示。
图2.1 部门实体E-R图
说明
本示例只为部门实体的E-R 图添加了两个属性——部门编号和部门名称,并没有为部门实体添加其他属性,目的是为了说明如何建立实体的E-R图。
2.数据库逻辑设计
数据库逻辑设计就是将数据库概念设计阶段的E-R 图转换为关系数据库管理系统中的关系模式。数据库概念设计阶段的实例和联系都可以表示为关系,每个关系对应一个二维表。
示例:
将图2.1所示的部门实体的E-R图转换为关系模式,即将部门实体的E-R图转换为名为“部门”的关系,如下所示。
部门(部门编号,部门名称)
1001 Java部 1002 设计部 ...... ......
说明
本示例中的“部门”就是关系名,其中,“部门编号”和“部门名称”是“部门”这个关系的两个属性,该关系对应图2.1所示的部门实体的E-R图,当然,在“部门”这个关系中,也可以为每个属性指定具体的值,“部门编号”属性可以是1001、1002,等等,“部门名称”属性可以是Java部、设计部,等等。
将示例中的关系转换为对应的二维表,如表2.1所示,该二维表的名称为部门。
表2.1 “部门”二维表
说明
在表2.1所示的“部门”表中,表的名称“部门”与关系中的关系名“部门”是对应的,表中的字段“部门编号”和“部门名称”是与关系中的属性“部门编号”和“部门名称”相对应的,这样就实现了将E-R图转换为对应的关系和二维表。
3.数据库物理设计
数据库物理设计是指对数据库内部的物理结构进行调整,目的是为了提高数据访问的速度,因此为了提高数据处理的速度,必须要了解数据库物理设计的内容,下面是数据库物理设计应该掌握的内容。
(1)确定数据的存储结构
可以通过存取时间、存储空间和维护代码3个方面来确定数据的存储结构,并要用最优的方法使这3个方面性能都达到最佳的效果。
(2)存取路径的选择和调整
由于每个用户对数据库的应用不同,因此必须要为同一个数据库提供多个存取路径,这也是数据库物理设计所要完成的任务。
(3)确定数据的存储位置
在使用数据库时,还要根据不同数据的使用频率来确定数据的存储位置,对于使用频率较高和速度要求较快的数据应存储到硬盘上。当然,现在计算机的硬件配置都比较高,硬盘的容量也比较大,因此对于所要处理的数据都可以将其存储到硬盘上。
(4)要确定数据存储的分布
在数据库物理设计阶段还要确定块的长度、装载因子、缓冲区的大小和个数,等等,这些因素对数据的存取时间和空间都会产生影响,因此必须合理设置这些参数。例如,对于单个记录的查找,如果输入块大,数据查找的概率就高,但是由于输入块大,因此数据传输的时间就会比较长,所以在设计时必须要权衡利弊。
编程准则:数据库设计在软件开发中至关重要
数据库是程序中用于存储数据的地方,数据库设计得好坏对程序的开发至关重要。因此在进行程序开发之前,必须要设计好数据库,对于一个设计成功的数据库,对提高程序的开发进度和质量都是非常有帮助的,所以在进行程序开发之前,必须要在设计数据库上多花些时间,这样才能开发出好的软件产品。