4.1 数据库设计概述
数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。数据库设计时需要综合企业各个部门的存档数据和数据需求,分析各个数据之间的关系,按照DBMS提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型。
4.1.1 数据库设计的内容
数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求。数据库设计涉及的内容很广泛,设计的质量与设计者的知识、经验和水平有密切的关系。
数据库设计面临的主要困难和问题如下。
1)懂得计算机与数据库的人一般都缺乏应用业务知识和实际经验,而熟悉应用业务的人又往往不懂计算机和数据库,同时具备这两方面知识的人很少。
2)在开始时往往不能明确应用业务的数据库系统目标。
3)缺乏很完善的设计工具和方法。
4)用户的要求往往不是一开始就明确的,而是在设计过程中不断地提出新的要求,甚至在数据库建立后还会要求修改数据库结构和增加新的应用。
5)应用业务系统千差万别,很难找到一种适合所有应用业务的工具和方法。
数据库设计的目标是为用户和各种应用系统提供一个信息基础设施和高效率的运行环境。一个成功的数据库系统应具备如下特点。
1)功能强大。
2)能准确地表示业务数据。
3)使用方便,易于维护。
4)对最终用户操作的响应时间合理。
5)便于数据库结构的改进。
6)便于数据库的检索和修改。
7)有效的安全机制。
8)冗余数据最少或不存在。
9)便于数据的备份和恢复。
4.1.2 数据库设计的特点
大型数据库的设计和开发工作量大而且比较复杂,涉及多门学科,是一项数据库工程,也是一项软件工程。数据库设计的很多阶段都可以对应于软件工程的阶段,软件工程的某些方法和工具也适合于数据库工程。但数据库设计是与用户的业务需求紧密相关的,因此它有很多自身的特点。主要特点如下。
(1)三分技术,七分管理,十二分基础数据
数据库系统的设计和开发本质上是软件开发,不仅涉及有关的开发技术,还涉及开发过程中管理的问题。要建设好一个数据库应用系统,除了要有很强的开发技术,还要有完善有效的管理,通过对开发人员和有关过程的控制管理,实现“1+1>2”的效果。一个企业数据库建设的过程是企业管理模式改革和提高的过程。
在数据库设计中,基础数据的作用非常关键,但往往被人们忽视。数据是数据库运行的基础,数据库的操作就是对数据的操作。如果基础数据不准确,则在此基础上的操作结果也就没有意义了。因此,在数据库建设中,数据的收集、整理、组织和不断更新是至关重要的环节。
(2)综合性
数据库的设计涉及的范围很广,包括计算机专业知识以及业务系统的专业知识,同时还要解决技术及非技术两方面的问题。
(3)结构(数据)设计和行为(处理)设计相结合
结构设计是根据给定的应用环境,进行数据库模式或子模式的设计,它包括数据库概念设计、逻辑设计和物理设计。行为设计是指确定数据库用户的行为和动作,用户的行为和动作就是对数据库的操作,这些操作通过应用程序来实现,它包括功能组织、流程控制等方面的设计。在传统的软件开发中,注重处理过程的设计,不太重视数据结构的设计。只要有可能就尽量推迟数据结构的设计,这种方法对数据库设计是不适合的。
数据库设计的主要精力首先放在数据结构的设计上,比如数据库表的结构、视图等,但这并不等于将结构设计和行为设计相互分离。相反,必须强调在数据库设计中要把结构设计和行为设计结合起来。
4.1.3 数据库设计方法的分类
早期数据库设计主要是采用手工与经验相结合的方法。设计的质量与设计人员的经验和水平有直接关系,缺乏科学理论和工程方法的支持,设计质量难以保证。为了使数据库设计更合理、更有效,需要有效的指导原则,这种原则称为数据库设计方法。
首先,一个好的数据库设计方法,应该能在合理的期限内,以合理的工作量,产生一个有实用价值的数据库结构。这里的实用价值是指满足用户关于功能、性能、安全性、完整性及发展需求等方面的要求,同时又要服从特定的DBMS的约束,可以用简单的数据模型来表达。其次,数据库设计方法应具有足够的灵活性和通用性,不但能使具有不同经验的人使用,而且不受数据模型和DBMS的限制。最后,数据库设计方法应该是可以再生的,即不同的设计者使用同一方法设计同一问题时,可以得到相同或相似的设计结果。
多年来,经过不断的努力和探索,人们提出了各种数据库设计方法,运用工程思想和方法提出的各种设计准则和规范都属于规范设计方法。下面重点介绍其中4种方法。
1)新奧尔良(New Orleans)方法。该方法是一种比较著名的数据库设计方法,它将数据库设计分为4个阶段:需求分析、概念结构设计、逻辑结构设计和物理结构设计。这种方法注重数据库的结构设计,而不太考虑数据库的行为设计。
其后,S. B. Yao等人又将数据库设计分为5个阶段,主张数据库设计应该包括设计系统开发的全过程,并在每个阶段结束时进行评审,以便及早发现设计错误并纠正。各阶段也不是严格线性的,而是采取“反复探寻、逐步求精”的方法。
2)基于E-R模型的数据库设计方法。该方法用E-R模型来设计数据库的概念模型,是概念设计阶段广泛采用的方法。
3)3NF(第三范式)的设计方法。该方法用关系数据理论为指导来设计数据库的逻辑模型,是设计关系数据库时在逻辑设计阶段可采用的有效方法。
4)ODL(Object Definition Language)方法。该方法是面向对象的数据库设计方法。它用面向对象的概念和术语来说明数据库结构。ODL可以描述面向对象的数据库结构设计,可以直接转换为面向对象的数据库。
上面这些方法都是在数据库设计的不同阶段上支持实现的具体技术和方法,都属于常用的规范设计法,规范设计法从本质上看仍然是手工设计方法,基本思想是过程迭代和逐步求精。
4.1.4 数据库设计的阶段
按照规范设计的方法,同时考虑数据库及其应用系统开发的全过程,可以将数据库设计分为6个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施以及数据库运行和维护。数据库设计的全过程如图4-1所示。
图4-1 数据库设计步骤
数据库设计开始之前,首先必须选定参加的人员,包括系统分析人员、数据库设计人员、应用开发人员、数据库管理员和用户代表。各种人员在设计过程中分工不同。
系统分析和数据库设计人员是数据库设计的核心人员,他们将自始至终参与数据库设计,他们的水平决定了数据库系统的质量。用户要积极参与需求分析,数据库管理员对数据库进行专门的控制和管理,包括进行数据库权限的设置、数据库的监控和维护等工作。应用开发人员包括程序员和操作员,他们分别负责编制程序和准备软硬件环境,在系统实施阶段参与进来。如果所设计的数据库应用系统比较复杂,还应该考虑是否需要使用数据库设计工具以及选用何种工具,以提高数据库设计质量并减少设计工作量。
1.需求分析阶段
需求分析是对用户提出的各种要求加以分析,对各种原始数据加以综合、整理。该阶段是形成最终设计目标的首要阶段。需求分析是整个设计过程的基础,是最困难、最耗费时间的一步。对用户的各种需求,能否做出准确无误、充分完备的分析,并在此基础上形成最终目标,是整个数据库设计成败的关键。
2.概念结构设计阶段
概念结构设计是对用户需求进一步抽象、归纳,并形成独立于DBMS和有关软硬件的概念数据模型的设计过程。这是对现实世界中具体数据的首次抽象,完成从现实世界到信息世界的转化过程。数据库的逻辑结构设计和物理结构设计都是以概念设计阶段所形成的抽象结构为基础进行的。因此,概念结构设计是整个数据库设计的关键。数据库的概念结构通常用E-R模型来刻画。
3.逻辑结构设计阶段
逻辑结构设计是将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化的设计过程。由于逻辑结构设计是基于具体DBMS的实现过程,因此,选择什么样的数据库模型尤为重要,其次是数据模型的优化。数据模型有层次模型、网状模型、关系模型、面向对象的模型等,设计人员可以选择其中之一,并结合具体的DBMS实现。逻辑结构设计阶段后期的优化工作已成为影响数据库设计质量的一项重要工作。
4.物理结构设计阶段
物理结构设计阶段是将逻辑结构设计阶段所产生的逻辑数据模型转换为某种计算机系统所支持的数据库物理结构的实现过程。这里,数据库在相关存储设备上的存储结构和存取方法,称之为数据库的物理结构。完成物理结构设计后,对该物理结构做出相应的性能评价,若评价结果符合原设计要求,则进一步实现该物理结构。否则,对该物理结构做出相应的修改,若属于最初设计问题所导致的物理结构的缺陷,必须返回到概念设计阶段修改其概念数据模型或重新建立概念数据模型,如此反复,直至评价结构最终满足原设计要求为止。
5.数据库实施阶段
数据库实施阶段,即数据库调试、试运行阶段。一旦数据库的物理结构形成,就可以用已选定的DBMS来定义、描述相应的数据库结构,装入数据,以生成完整的数据库;编制有关应用程序,进行联机调试并转入试运行,同时进行时间、空间等性能分析,若不符合要求,则需要调整物理结构、修改应用程序,直至高效、稳定、正确地运行该数据库系统为止。
6.数据库运行和维护阶段
数据库实施阶段结束标志着数据库系统投入正常的运行工作。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。
随着对数据库设计的深刻了解和设计水平的不断提高,人们已经充分认识到数据库的运行和维护工作与数据库设计的紧密联系。
数据库设计是一个动态和不断完善的过程。运行和维护阶段开始,并不意味着设计过程的结束。在运行和维护过程中出现问题,需要对程序或结构进行修改,修改的程度也不相同,有时会引起对物理结构的调整、修改。因此,数据库运行和维护阶段是数据库设计的一个重要阶段。
数据库设计过程的各个阶段可用图4-2概括描述。
图4-2 数据库设计步骤各个阶段的描述
设计一个完善的数据库应用系统是不可能一蹴而就的,往往是上述6个阶段的不断反复。