第7章 数据库设计 人们在总结信息资源开发、管理和服务的 各种手段时,认为最有效的是数据库技术数 据库的应用已越来越广泛从小型的单项事务 处理系统到大型的信息系统大都用先进的数据 库技术来保持系统数据的整体性、完整性和共 享性目前,一个国家的数据库建设规模(指 数据库的个数、种类)、数据库信息量的大小 和使用频度已成为衡量这个国家信息化程度的 重要标志之一数据库设计是研制数据库及其应用系统的 技术,是数据库在应用领域中主要的研究课题 数据库设计(Database Design, 简记为 DBD)是指对于给定的软、硬件环 境,针对现实问题,设计一个较优的数据 模型,建立DB结构和DB应用系统数据库设计通常是在一个通用的 DBMS支持下进行的,即利用现成的 DBMS 为基础在数据库领域内,常常把使用数据 库的各类系统统称为数据库应用系统( DBAS)7.1.1 数据库和信息系统 从使用者角度看,信息系统是提供信息, 辅助人们对环境进行控制和进行决策的系统 数据库是信息系统的核心和基础它把信 息系统中大量的数据按一定的模型组织起来, 提供存储、维护、检索数据的功能,使信息系 统可以方便、及时、准确地从数据库中获得所 需的信息。
一个信息系统的各个部分能否紧密 地结合在一起以及如何结合,关键在数据库 因此只有对数据库进行合理的逻辑设计和有效 的物理设计才能开发出完善而高效的信息系统 数据库设计是信息系统开发和建设的重 要组成部分 大型数据库的设计是一项庞大的工程,属 于软件工程范畴其开发周期长、耗资多、失败的 风险也大必须把软件工程的原理和方法应用到 数据库建设中来对于从事数据库设计的人员来 讲,应该具备多方面的技术和知识,主要有:1.计算机科学基础知识和程序设计技术 2.数据库基本知识和数据库设计技术 3.软件工程的原理和方法 4.应用领域的知识 其中应用领域的专业知识随着应用系统的不 同而不同数据库设计人员必须深入实际,对应 用环境、专业业务有了具体的了解,才能设计出 符合具体领域要求的数据库应用系统. 7.1.2 数据库设计的任务、内容和特点 7.1.2.1 数据库设计的任务n1.满足用户的应用要求,即能够正确地反映用户 的现实环境n 2.准确模拟现实世界,即准确地反映现实世界 的信息类别与信息之间的联系n 3.能被某个DBMS所接受n 4.具有良好的性能、较高的质量n 存取效率 存储效率n 其他性能,如便于维护与扩充,有较好的 安全性与完整性,系统出现故障时容易恢复等。
数据库设计的任务如下图所示数据库 设 计信息需求处理需求信息需求典型应用程序DBM特性硬件和操作 系统特性图 数据库设计的任务7.1.2.2 数据库设计的内容n 数据库设计包括数据库的结构设计和数据 库的行为设计两方面的内容1.数据库的结构设计n数据库的结构设计是指根据给定的应用环境, 进行数据库的模式或子模式的设计n它包括数据库的概念设计、逻辑设计和物理设 计n数据库模式是各应用程序共享的结构,是静态 的、稳定的,一经形成后通常情况下是不容易 改变的,所以结构设计又称为静态模型设计2.数据库的行为设计n数据库的行为设计是指确定数据库用户的行 为和动作而在数据库系统中,用户的行为 和动作指用户对数据库的操作,这些要通过 应用程序来实现,所以数据库的行为设计就 是应用程序的设计n用户的行为总是使数据库的内容发生变化, 所以行为设计是动态的,行为设计又称为动 态模型设计7.1.2.3 数据库设计的特点n数据库设计既是一项涉及多学科的综合性技术 又是一项庞大的工程项目有人讲“三分技术 、七分管理,十二分基础数据”是数据库建设 的基本规律,这是有一定道理的技术与管理 的界面(称之为“干件”)十分重要。
数据库 建设是硬件、软件和干件的结合这是数据库 设计的特点之一这里,我们当然着重讨论软 件设计的技术n数据库的设计应该和应用系统设计相结合也 就是说,整个设计过程中要把结构(数据)设 计和行为(处理)设计密切结合起来这是数 据库设计的特点之二 n现代数据库的设计的特点是强调结构设 计与行为设计相结合,是一种“反复探 寻,逐步求精”的过程首先从数据模 型开始设计,以数据模型为核心进行展 开,数据库设计和应用系统设计相结合 ,建立一个完整、独立、共享、冗余小 、安全有效的数据库系统n下图给出了数据库设计的全过程现实世界数据分析用户业务活动分析概念设计功能模型逻辑设计事务设计物理设计程序说明子模式设计应用程序设计加载试验数据程序编码调试性能考核满意 ? 是否加载数据库运行和维护图 数据库设计的全过程7.1.3 数据库设计方法简述 n数据库设计方法目前可分为四类:直观设计 法、规范设计法、计算机辅助设计法和自动 化设计法n直观设计法也叫手工试凑法,它是最早使用 的数据库设计方法这种方法依赖于设计者 的经验和技巧,缺乏科学理论和工程原则的 支持,设计的质量很难保证,常常是数据库 运行一段时间后又发现各种问题,这样再重 新进行修改,增加了系统维护的代价。
因此 这种方法越来越不适应信息管理发展的需要 为了改变这种情况,1978年10月,来自 三十多个国家的数据库专家在美国新奥尔良 (New Orleans)市专门讨论了数据库设计 问题,他们运用软件工程的思想和方法,提 出了数据库设计的规范,这就是著名的新奥 尔良法,它是目前公认的比较完整和权威的 一种规范设计法新奥尔良法将数据库设计 分成需求分析(分析用户需求)、概念设计 (信息分析和定义)、逻辑设计(设计实现 )和物理设计(物理数据库设计)目前,常用的规范设计方法大多起源 于新奥尔良法,并在设计的每一阶段采用一些辅助方法来具体实现n下面简单介绍几种常用的规范设计方法n 1.基于E-R模型的数据库设计方法 n基于E-R模型的数据库设计方法是由 P.P.S.chen于1976年提出的数据库设计方 法,其基本思想是在需求分析的基础上, 用E-R(实体—联系)图构造一个反映现实 世界实体之间联系的企业模式,然后再将 此企业模式转换成基于某一特定的DBMS的 概念模式2.基于3NF的数据库设计方法n基于3NF的数据库设计方法是由S·Atre 提出的结构化设计方法,其基本思想是在需 求分析的基础上,确定数据库模式中的全部 属性和属性间的依赖关系,将它们组织在一 个单一的关系模式中,然后再分析模式中不 符合3NF的约束条件,将其进行投影分解, 规范成若干个3NF关系模式的集合。
n其具体设计步骤分为五个阶段: (1)设计企业模式,利用规范化得到 的3NF关系模式画出企业模式; (2)设计数据库的概念模式,把企业 模式转换成DBMS所能接受的概念模式, 并根据概念模式导出各个应用的外模式 ; (3)设计数据库的物理模式(存储模 式); (4)对物理模式进行评价; (5) 实现数据库 3.基于视图的数据库设计方法n此方法先从分析各个应用的数据着手, 其基本思想是为每个应用建立自己的视 图,然后再把这些视图汇总起来合并成 整个数据库的概念模式合并过程中要 解决以下问题: (1) 消除命名冲突; (2) 消除冗余的实体和联系; (3)进行模式重构,在消除了命名冲突和 冗余后,需要对整个汇总模式进行调整,使 其满足全部完整性约束条件 n除了以上三种方法外,规范化设计方法还有实体 分析法、属性分析法和基于抽象语义的设计方法 等,这里不再详细介绍n规范设计法从本质上来说仍然是手工设计方法, 其基本思想是过程迭代和逐步求精n计算机辅助设计法是指在数据库设计的某些过 程中模拟某一规范化设计的方法,并以人的知识 或经验为主导,通过人机交互方式实现设计中的 某些部分n目前许多计算机辅助软件工程(Computer Aided Software Engineering,CASE)工具可以 自动或辅助设计人员完成数据库设计过程中的很 多任务.比如SYSBASE公司的PowerDesigner和 Oracle公司的Design 2000。
7.1.4 数据库设计的步骤(P142)n和其他软件一样,数据库的设计过程可以使用 软件工程中的生存周期的概念来说明,称为“ 数据库设计的生存期”,它是指从数据库研制 到不再使用它的整个时期n按规范设计法可将数据库设计分为七个阶段 (1)规划阶段 (2)需求分析阶段 (3)概念设计阶段 (4)逻辑设计阶段 (5)物理设计阶段 (6)数据库实施(实现)阶段 (7)数据库运行与维护阶段 n 该方法是分阶段完成的,每完成一个阶段,都要进行设计分析,评价一些重要的设计指标 ,把设计阶段产生的文档组织评审,与用户进行 交流如果设计的数据库不符合要求则进行修改 ,这种分析和修改可能要重复若干次,以求最后 实现的数据库能够比较精确地模拟现实世界,能较准确地反映用户的需求,设计一个完善的数据 库应用系统往往是七个阶段的不断反复的过程 数据库设计中,前三个阶段是面向用户的应用要求,面向具体的问题;(4)(5)两个阶段是面向数据库管理系统;(6)(7)两个阶段是面向具体的实现方法前五个阶段可统称为“分析和设计阶段”,后两个阶段称为“实现和运行阶段”n七个阶段的主要工作各有不同 1.规划阶段进行建立数据库的必要性及可行性分析, 确定数据库系统在组织中和信息系统中的地位,以及各个数据库之间的关系。
2.系统需求分析阶段需求分析是整个数据库设计过程的基础,要收集数据库所有用户的信息内容和处理要求,并加以规格化和分析这是最费时、最复杂的一步,但也是最重要的一步,相当于待构建的数据库大厦的地基,它决定了以后各步设计的速度与质量需求分析做得不好,可能会导致整个数据库设计返工重做在分析用户需求时,要确保用户目标的一致性3.概念结构设计阶段n概念设计是把用户的信息要求统一到一个整体 逻辑结构中,此结构能够表达用户的要求,是一个 独立于任何DBMS软件和硬件的概念模型4.逻辑结构设计阶段n逻辑设计是将上一步所得到的概念模型转换为 某个DBMS所支持的数据模型,并对其进行优化 5.物理设计阶段n物理设计是为逻辑数据模型建立一个完整的能 实现的数据库结构,包括存储结构和存取方法n上述分析和设计阶段是很重要的,如果做出不 恰当的分析或设计,则会导致一个不恰当或反应迟 钝的应用系统6.数据库实施阶段n根据物理设计的结果把原始数据装入数据库, 建立一个具体的数据库并编写和调试相应的应用程 序应用程序的开发目标是开发一个可依赖的有效 的数据库存取程序,来满足用户的处理要求7.数据库运行与维护阶段n这一阶段主要是收集和记录实际系统运行的数 据,数据库运行的记录用来提高用户要求的有效信 息,用来评价数据库系统的性能,进一步调整和修 改数据库。
在运行中,必须保持数据库的完整性, 并能有效地处理数据库故障和进行数据库恢复在 运行和维护阶段,可能要对数据库结构进行修改或 扩充 n可以看出,以上七个阶段是从数据库应用 系统设计和开发的全过程来考察数据库设 计的问题因此,它既是数据库也是应用 系统的设计过程在设计过程中,努力使 数据库设计和系统其他部分的设计紧密结 合,把数据和处理的需求收集、分析、抽 象、设计和实现在各个阶段同时进行、相 互参照、相互补充,以完善两方面的设计 按照这个原则,数据库过程各个阶段的 设计可用下图描述设计阶段设 计 描 述数据处理需求分析数据字典、全系统中数据项、 数据流、数据存储的描述数据流图和定表(判定树) 数据字典中处理过程的描述概念结构设 计概念模型(E-R图)数据字典系统说明书包括: (1) 新系统要求、方案和概图 (2) 反映新系统信息的数据流图逻辑结构设 计某种数据模型 关系模型系统结构图 非关系模型(模块结构图)物理设计存储安排 存取方法选择 存取路径建立模块设计IPO表实施阶段编写模。