
1.6 数据库系统设计简介
数据库系统的设计包括数据库的设计和数据库应用系统的设计。数据库设计是指设计数据库的结构特性,即为特定的应用环境构造最优的数据模型;数据库应用系统的设计是指设计出满足各种用户对数据库应用需求的应用程序。用户通过应用程序来访问和操作数据库。
按照规范设计的方法,考虑到数据库及其应用系统开发的全过程,将数据库设计分为以下6个阶段。
• 需求分析阶段。
• 概念结构设计阶段。
• 逻辑结构设计阶段。
• 物理结构设计阶段。
• 数据库实施阶段。
• 数据库运行和维护阶段。
需要指出的是,以上设计步骤既是数据库设计的过程,也包括数据库应用系统的设计过程。在设计过程中只有将这两方面有机地结合起来,互相参照、互为补充,才可以设计出性能良好的数据库应用系统。
1. 需求分析阶段
需求分析阶段是数据库设计的第一步,也是最困难、最耗时的一步。需求分析的任务是要准确了解并分析用户对系统的要求,确定所要开发的应用系统的目标,收集和分析用户对数据与处理的要求。需求分析主要是考虑“做什么”,而不是考虑“怎么做”。需求分析做得是否充分、准确,将决定以后各设计步骤能否顺利进行。如果需求分析做得不好,会影响整个系统的性能,甚至会导致整个数据库设计的返工。
需求分析阶段需要重点调查的是用户的信息要求、处理要求、安全性与完整性要求。信息要求是指用户需要从数据库中获得信息的内容与性质;由用户的信息要求可以导出数据要求,即在数据库中需要存储哪些数据;处理要求包括对处理功能的要求、对处理的响应时间的要求、对处理方式(如批处理、联机处理)的要求等。
需求分析的结果是产生用户和设计者都能接受的需求说明书,作为下一步数据库概念结构设计的基础。
2. 概念结构设计阶段
需求分析阶段描述的用户需求是面向现实世界的具体需求。将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计。概念结构是独立于支持数据库的DBMS和使用的硬件环境的。
人们提出了多种概念结构设计的表达工具,其中,最常用、最有名的是E-R模型。
在概念结构设计阶段,首先要对需求分析阶段收集到的数据进行分类、组织,形成实体、实体的属性,标识实体的码,确定实体之间的联系类型(1:1,1:n,m:n),针对各个局部应用设计局部视图(如分E-R图)。各个局部视图建立好后,还需要对它们进行合并,通过消除各局部视图的属性冲突、命名冲突、结构冲突、数据冗余等,最终集成为一个全局视图(如整体的E-R图)。
概念结构具有丰富的语义表达能力,能表达用户的各种需求,反映现实世界中各种数据及其复杂的联系,以及用户对数据的处理要求等。由于概念结构独立于具体的DBMS,因此易于理解,用它可以和不熟悉计算机的用户交换意见。
设计概念模型的最终目的是向某种DBMS支持的数据模型转换,因此,概念模型是数据库逻辑设计的依据,是整个数据库设计的关键。
3. 逻辑结构设计阶段
逻辑结构设计的任务是将概念结构进一步转化为某一DBMS支持的数据模型,包括数据库模式和外模式。
在逻辑结构设计阶段,首先需要将概念结构转化为一般的关系、网状、层次模型;然后将转化后的关系、网状、层次模型向特定DBMS支持下的数据模型转换,转换的主要依据是所选用的DBMS的功能及限制,没有通用规则。对于关系模型来说,这种转换通常都比较简单,最后对数据模型进行优化。
对于E-R图向关系模型的转换,需要解决的问题是如何将实体、实体的属性和实体之间的联系转化为关系模型。
得到初步数据模型后,还应该适当地修改、调整数据模型的结构,以进一步提高数据库应用系统的性能。关系数据模型的优化通常以规范化理论为指导。
这一阶段可能还需要设计用户子模式(外模式),即用户可直接访问的数据模式。前面已经提到,在同一系统中,不同用户可以有不同的外模式。外模式来自逻辑模式,但在结构和形式上可以不同于逻辑模式,所以它不是逻辑模式简单的子集。外模式的作用主要有:通过外模式对逻辑模式的屏蔽,为应用程序提供了一定的逻辑独立性;可以更好地适应不同用户对数据的需求;为用户划定了访问数据的范围,有利于数据的安全保密等。
定义用户外模式时应该更注重考虑用户的习惯与方便,主要包括以下3个方面。
(1)使用更符合用户习惯的别名。
(2)针对不同级别的用户定义不同的外模式,以满足系统对安全性的要求。
(3)如果某些局部应用中经常要使用某些很复杂的查询,为了方便用户,可以将这些复杂查询定义为外模式(视图),以简化用户对系统的使用。
4. 物理结构设计阶段
数据库的物理结构设计阶段用于为逻辑数据模型选取一个最适合应用环境的物理结构,包括数据库在物理设备上的存储结构和存取方法。由于不同的数据库产品所提供的物理环境、存取方法和存储结构各不相同,供设计人员使用的设计变量、参数范围也各不相同,所以数据库的物理结构设计没有通用的设计方法可以遵循。
数据库设计人员都希望自己设计的物理数据库结构能满足事务在数据库上运行时响应时间短、存储空间利用率高和事务吞吐率大的要求。为此,设计人员需要对要运行的事务进行详细的分析,获得物理数据库设计所需要的参数,并且全面了解给定的DBMS的功能、所提供的物理环境和工具,尤其是存储结构和存取方法。在确定数据存取方法时,必须清楚以下3种相关信息。
(1)数据库查询事务的信息,包括查询所需要的关系、查询条件所涉及的属性、查询连接条件所涉及的属性、查询结果所涉及的属性等。
(2)数据更新事务的信息,包括被更新的关系、每个关系上的更新操作所涉及的属性、修改操作要改变的属性值等。
(3)每个事务在各关系上运行的频率和性能要求。
关系数据库物理设计的内容主要有:为关系模式选择存取方法和存储结构,包括设计关系、索引等数据库文件的物理存储结构、确定系统配置参数等。
在初步完成物理结构的设计之后,还需要对物理结构进行评价,评价的重点是时间和空间效率。如果评价结果满足原设计要求,则可以进入到物理实施阶段,否则,就需要重新设计或修改物理结构,有时甚至要返回到逻辑设计阶段,修改数据模型。
5. 数据库实施阶段
完成数据库物理设计之后,设计人员就要用DBMS提供的数据定义语言和其他实用程序将数据库逻辑设计和物理设计结果严格地描述出来,成为DBMS可以接受的源代码,再经过调试产生目标模式,然后就可以组织数据入库了,这就是数据库实施阶段,具体包括以下内容。
(1)用所选用的DBMS提供的数据定义语言(Data Definition Language,DDL)来严格描述数据库结构。
(2)组织数据入库。数据库结构建立好后,就可以向数据库中装载数据了。组织数据入库是数据库实施阶段最主要的工作。对于小型系统,可以选择使用人工方法装载数据。对于中、大型系统,可以使用计算机辅助数据入库,如使用数据录入子系统提供录入界面,对数据进行检验、转换、综合、存储等。
需要装入数据库中的数据通常分散在各个部门的数据文件或原始凭证中,所以首先必须把需要入库的数据筛选出来。对于筛选出来的数据,其格式往往不符合数据库要求,还需要进行一定的转换,这种转换有时可能很复杂。最后才可以将转换好的数据输入到计算机中。
(3)编制与调试应用程序。数据库应用程序的设计应该与数据库设计并行进行。因此,在部分数据录入到数据库中之后,就可以开始对应用程序进行调试了。调试应用程序时由于数据入库尚未完成,可以先使用模拟数据,模拟数据应该具有一定的代表性,足够测试系统的多数功能。应用程序的设计、编码和调试方法、步骤应遵循软件工程的规范。
(4)数据库试运行。应用程序调试完成,并且已有一小部分数据入库后,就可以开始数据库的试运行了。数据库试运行也称为联合调试,其主要工作如下。
• 功能测试:实际运行应用程序,执行对数据库的各种操作,测试应用程序的各种功能是否满足设计要求。
• 性能测试:测试系统的性能指标,分析其是否达到设计目标。如果结果不符合设计目标,则需要返回物理设计阶段,调整物理结构,修改参数。有时甚至需要返回逻辑设计阶段,调整逻辑结构。
需要注意的是,组织数据入库的工作量非常大,如果在数据库试运行后还要修改数据库设计,则可能需要重新组织数据入库。所以可以采用分期输入数据的方法,先输入小批量数据供前期的联合调试使用,待试运行基本合格后再输入大批量数据,逐步增加数据量,逐步完成运行评价。
在数据库试运行阶段,系统还不稳定,硬件和软件的故障随时都可能发生。系统的操作人员对新系统还不熟悉,不可避免地会发生一些误操作。因此,必须首先做好数据库的转储和恢复工作,一旦发生故障,能使数据库尽快恢复,尽量减少对数据库的破坏。
6. 数据库运行和维护阶段
数据库试运行结果符合设计目标后,数据库就可以投入正式运行了。数据库投入运行标志着开发任务的基本完成和维护工作的开始。由于应用环境在不断变化,数据库运行过程中物理存储会不断变化,因此,对数据库设计进行评价、调整、修改等维护工作是一个长期的任务,也是设计工作的继续和提高。
在数据库运行阶段,对数据库经常性的维护工作主要是由DBA完成的。这一阶段的工作主要包括以下几点。
(1)数据库的转储和恢复。转储和恢复是系统正式运行后最重要的维护工作之一。DBA要针对不同的应用要求制订不同的转储计划,定期对数据库和有关文件进行备份。一旦系统发生故障,可以尽快对数据库进行恢复。
(2)数据库的安全性、完整性控制。在数据库运行过程中,由于应用环境的变化,对安全性的要求也会发生变化,DBA需要根据实际情况的变化修改原有的安全性控制,根据用户的实际需要授予不同的操作权限。由于应用环境的变化,数据库的完整性约束条件也会变化,也需要DBA不断修正,以满足用户要求。
(3)数据库性能的监督、分析和改进。在数据库运行过程中,DBA必须监督系统运行,对监测数据进行分析,找出改进系统性能的方法。有些DBMS提供检测系统性能工具,可以利用该工具获取系统运行过程中一系列性能参数的值。通过仔细分析这些数据,判断当前系统是否处于最佳运行状态。如果不是,则需要通过调整某些参数来进一步改进数据库性能。
(4)数据库的重组织和重构造。数据库运行一段时间后,由于记录的不断增、删、改,会使数据库的物理存储变坏,从而降低数据库存储空间的利用率和数据的存取效率,使数据库的性能下降。因此,需要对数据库进行重新组织(全部重组织或部分重组织),以提高系统的性能。