1第6章数据库设计26.1数据库设计概述6.1.1数据库设计的任务、内容和特点6.1.1.1数据库设计的任务数据库设计是指根据用户需求研制数据库结构的过程,具体地说,是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能有效的存储数据,满足用户的信息要求和处理要求。也就是把现实世界中的数据,根据各种应用处理的要求,加以合理地组织,满足硬件和操作系统的特性,利用已有的DBMS来建立能够实现系统目标的数据库。3数据库设计的任务如图6.1所示。数据库设计信息需求处理需求信息需求典型应用程序DBM特性硬件和操作系统特性图6.1数据库设计的任务46.1.1.2数据库设计的内容数据库设计包括数据库的结构设计和数据库的行为设计两方面的内容。1.数据库的结构设计数据库的结构设计指是根据给定的应用环境,进行数据库的模式或子模式的设计。它包括数据库的概念设计、逻辑设计和物理设计。数据库模式是各应用程序共享的结构,是静态的、稳定的,一经形成后通常情况下是不容易改变的,所以结构设计又称为静态模型设计。52.数据库的行为设计数据库的行为设计是指确定数据库用户的行为和动作。而在数据库系统中,用户的行为和动作指用户对数据库的操作,这些要通过应用程序来实现,所以数据库的行为设计就是应用程序的设计。用户的行为总是使数据库的内容发生变化,所以行为设计是动态的,行为设计又称为动态模型设计。6.1.1.3数据库设计的特点在70年代末80年代初,人们为了研究数据库设计方法学的便利,曾主张将结构设计和行为设计两者分离,随着数据库设计方法学的成熟和结构化分析、设计方法的普遍使用,人们主张将两者作一体化的考虑,这样可以缩短数据库的设计周期,提高数据库的设计效率。6现代数据库的设计的特点是强调结构设计与行为设计相结合,是一种“反复探寻,逐步求精”的过程。首先从数据模型开始设计,以数据模型为核心进行展开,数据库设计和应用系统设计相结合,建立一个完整、独立、共享、冗余小、安全有效的数据库系统。图6.2给出了数据库设计的全过程。7现实世界数据分析用户业务活动分析概念设计功能模型逻辑设计事务设计物理设计程序说明子模式设计应用程序设计加载试验数据程序编码调试性能考核满意?是否加载数据库运行和维护图6.2数据库设计的全过程86.1.2数据库设计方法简述数据库设计方法目前可分为四类:直观设计法、规范设计法、计算机辅助设计法和自动化设计法。直观设计法也叫手工试凑法,它是最早使用的数据库设计方法。这种方法依赖于设计者的经验和技巧,缺乏科学理论和工程原则的支持,设计的质量很难保证,常常是数据库运行一段时间后又发现各种问题,这样再重新进行修改,增加了系统维护的代价。因此这种方法越来越不适应信息管理发展的需要。为了改变这种情况,1978年10月,来自三十多个国家的数据库专家在美国新奥尔良(NewOrleans)市专门讨论了数据库设计问题,他们运用软件工程的思想和方法,提出了数据库设计的规范,这就是著名的新奥尔良法,它是目前公认的比较完整和权威的一种规范设计法。新奥尔良法将数据库设计分成需求分析(分析用户需求)、概念设计(信息分析和定义)、逻辑设计(设计实现)和物理设计(物理数据库设计)。目前,常用的规范设计方法大多起源于新奥尔良法,并在设计的每一阶段采用一些辅助方法来具体实现。下面简单介绍几种常用的规范设计方法。91.基于E-R模型的数据库设计方法基于E-R模型的数据库设计方法是由P.P.S.chen于1976年提出的数据库设计方法,其基本思想是在需求分析的基础上,用E-R(实体—联系)图构造一个反映现实世界实体之间联系的企业模式,然后再将此企业模式转换成基于某一特定的DBMS的概念模式。2.基于3NF的数据库设计方法基于3NF的数据库设计方法是由S·Atre提出的结构化设计方法,其基本思想是在需求分析的基础上,确定数据库模式中的全部属性和属性间的依赖关系,将它们组织在一个单一的关系模式中,然后再分析模式中不符合3NF的约束条件,将其进行投影分解,规范成若干个3NF关系模式的集合。其具体设计步骤分为五个阶段:10(1)设计企业模式,利用规范化得到的3NF关系模式画出企业模式;(2)设计数据库的概念模式,把企业模式转换成DBMS所能接受的概念模式,并根据概念模式导出各个应用的外模式;(3)设计数据库的物理模式(存储模式);(4)对物理模式进行评价;(5)实现数据库。113.基于视图的数据库设计方法此方法先从分析各个应用的数据着手,其基本思想是为每个应用建立自己的视图,然后再把这些视图汇总起来合并成整个数据库的概念模式。合并过程中要解决以下问题:(1)消除命名冲突;(2)消除冗余的实体和联系;(3)进行模式重构,在消除了命名冲突和冗余后,需要对整个汇总模式进行调整,使其满足全部完整性约束条件。12除了以上三种方法外,规范化设计方法还有实体分析法、属性分析法和基于抽象语义的设计方法等,这里不再详细介绍。规范设计法从本质上来说仍然是手工设计方法,其基本思想是过程迭代和逐步求精。计算机辅助设计法是指在数据库设计的某些过程中模拟某一规范化设计的方法,并以人的知识或经验为主导,通过人机交互方式实现设计中的某些部分。目前许多计算机辅助软件工程(ComputerAidedSoftwareEngineering,CASE)工具可以自动或辅助设计人员完成数据库设计过程中的很多任务.比如SYSBASE公司的PowerDesigner和Oracle公司的Design2000。136.1.3数据库设计的步骤和其他软件一样,数据库的设计过程可以使用软件工程中的生存周期的概念来说明,称为“数据库设计的生存期”,它是指从数据库研制到不再使用它的整个时期。按规范设计法可将数据库设计分为六个阶段(如图6.3所示):(1)系统需求分析阶段(2)概念结构设计阶段(3)逻辑结构设计阶段(4)物理设计阶段(5)数据库实施阶段(6)数据库运行与维护阶段14该方法是分阶段完成的,每完成一个阶段,都要进行设计分析,评价一些重要的设计指标,把设计阶段产生的文档组织评审,与用户进行交流。如果设计的数据库不符合要求则进行修改,这种分析和修改可能要重复若干次,以求最后实现的数据库能够比较精确地模拟现实世界,能较准确地反映用户的需求,设计一个完善的数据库应用系统往往是六个阶段的不断反复的过程。数据库设计中,前两个阶段是面向用户的应用要求,面向具体的问题;中间两个阶段是面向数据库管理系统;最后两个阶段是面向具体的实现方法。前四个阶段可统称为“分析和设计阶段”,后两个阶段称为“实现和运行阶段”。六个阶段的主要工作各有不同。151.系统需求分析阶段需求分析是整个数据库设计过程的基础,要收集数据库所有用户的信息内容和处理要求,并加以规格化和分析。这是最费时、最复杂的一步,但也是最重要的一步,相当于待构建的数据库大厦的地基,它决定了以后各步设计的速度与质量。需求分析做得不好,可能会导致整个数据库设计返工重做。在分析用户需求时,要确保用户目标的一致性。2.概念结构设计阶段概念设计是把用户的信息要求统一到一个整体逻辑结构中,此结构能够表达用户的要求,是一个独立于任何DBMS软件和硬件的概念模型。3.逻辑结构设计阶段逻辑设计是将上一步所得到的概念模型转换为某个DBMS所支持的数据模型,并对其进行优化。16图6.3数据库的设计步骤YYNN需求分析阶段现有应用、未来应用数据分析概念模型设计转换规范,规范化理论DBMS要求逻辑模型设计用户应用要求DBMS限制物理模型设计应用程序的使用频率性能评价与预测符合要求?物理实现试运行满意?使用与维护概念设计阶段逻辑设计阶段物理设计阶段数据库实施阶段数据库运行维护阶段174.物理设计阶段物理设计是为逻辑数据模型建立一个完整的能实现的数据库结构,包括存储结构和存取方法。上述分析和设计阶段是很重要的,如果做出不恰当的分析或设计,则会导致一个不恰当或反应迟钝的应用系统。5.数据库实施阶段根据物理设计的结果把原始数据装入数据库,建立一个具体的数据库并编写和调试相应的应用程序。应用程序的开发目标是开发一个可依赖的有效的数据库存取程序,来满足用户的处理要求。6.数据库运行与维护阶段这一阶段主要是收集和记录实际系统运行的数据,数据库运行的记录用来提高用户要求的有效信息,用来评价数据库系统的性能,进一步调整和修改数据库。在运行中,必须保持数据库的完整性,并能有效地处理数据库故障和进行数据库恢复。在运行和维护阶段,可能要对数据库结构进行修改或扩充。18可以看出,以上六个阶段是从数据库应用系统设计和开发的全过程来考察数据库设计的问题。因此,它既是数据库也是应用系统的设计过程。在设计过程中,努力使数据库设计和系统其他部分的设计紧密结合,把数据和处理的需求收集、分析、抽象、设计和实现在各个阶段同时进行、相互参照、相互补充,以完善两方面的设计。按照这个原则,数据库过程各个阶段的设计可用图6.4描述。在上图有关处理特性的描述中,采用的设计方法和工具属于软件工程和管理信息系统等课程中的内容,本书不再讨论,这里重点介绍数据特性的设计描述以及在结构特性中参照处理特性设计以完善数据模型设计的问题。以下各节分别详细介绍数据库设计的六个阶段。19需求分析是数据库设计的起点,为以后的具体设计作准备。需求分析的结果是否准确的反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。经验证明,由于设计要求的不正确或误解,直到系统测试阶段才发现许多错误,则纠正起来要付出很大代价。因此,必须高度重视系统的需求分析。6.2系统需求分析206.2.1需求分析的任务从数据库设计的角度来看,需求分析的任务是:对现实世界要处理的对象(组织、部门、企业)等进行详细的调查,通过对原系统的了解,收集支持新系统的基础数据并对其进行处理,在此基础上确定新系统的功能。21具体地说,需求分析阶段的任务包括以下三项:设计阶段设计描述数据处理需求分析数据字典、全系统中数据项、数据流、数据存储的描述数据流图和定表(判定树)数据字典中处理过程的描述概念结构设计概念模型(E-R图)数据字典系统说明书。包括:(1)新系统要求、方案和概图(2)反映新系统信息的数据流图逻辑结构设计某种数据模型关系模型系统结构图非关系模型(模块结构图)物理设计存储安排存取方法选择存取路径建立模块设计IPO表实施阶段编写模式装入数据数据库试运行程序编码编译联结测试运行维护性能测试,转储/恢复数据库重组和重构新旧系统转换、运行、维护(修正性、适应性、改善性维护)图6.4数据库各个设计阶段的描述221.调查分析用户的活动这个过程通过对新系统运行目标的研究,对现行系统所存在的主要问题的分析以及制约因素的分析,明确用户总的需求目标,确定这个目标的功能域和数据域。具体做法是:(1)调查组织机构情况,包括该组织的部门组成情况,各部门的职责和任务等。(2)调查各部门的业务活动情况,包括各部门输入和输出的数据与格式、所需的表格与卡片、加工处理这些数据的步骤、输入输出的部门等。232.收集和分析需求数据,确定系统边界在熟悉业务活动的基础上,协助用户明确对新系统的各种需求,包括用户的信息需求、处理需求、安全性和完整性的需求等。(1)信息需求指目标范围内涉及的所有实体、实体的属性以及实体间的联系等数据对象,也就是用户需要从数据库中获得信息的内容与性质。由信息要求可以导出数据要求,即在数据库中需要存储哪些数据。(2)处理需求指用户为了得到需求的信息而对数据进行加工处理的要求,包括对某种处理功能的响应时间,处理的方式(批处理或联机处理)等。(3)安全性和完整性的需求。在定义信息需求和处理需求的同时必须相应确定安全性和完整性约束。在收集各种需求数据后,对前面调查的结果进行初步分析,确定新系统的边界,确定哪些功能由计算机完成或将来准备让计算机完成,哪些活动由人工完成。由计算机完成的功能就是新系统应该实现的功能。243.