带你读《数据库与数据处理:Access 2010 实现 第2版》之三:关系数据库设计
点击查看第一章点击查看第二章 第3章 关系数据库设计 3.1 关系数据库设计过程 数据库设计是开发一个好的数据库应用系统的基础,它的基本任务是根据用户的需求,以及数据库的支撑环境(包括DBMS、操作系统和硬件),设计出数据模式(包括外模式、模式和内模式)以及典型的应用程序。在数据库的设计过程中,不同的人员会参与到数据库设计的不同阶段。比如,用户和数据库管理员主要参与需求分析和数据库的运行维护;应用开发人员在系统实施阶段参与进来,负责编制程序和准备软硬件环境;而系统分析人员、数据库设计人员可能需要自始至终地参与数据库设计。需要注意的是,在数据库设计过程中必须充分调动用户的积极性。另外,应用环境的改变、新技术的出现等都会导致应用需求的变化,因此设计人员在设计数据库时必须充分考虑系统的可扩充性,使设计灵活、易于修改。数据库设计是软件工程的一部分,主要包括6个阶段:需求分析阶段、概念结构设计阶段、逻辑结构设计阶段、数据库物理设计阶段、数据库实施阶段、数据库运行和维护阶段。作为一种主流的数据库,关系数据库设计的目标是生成一组关系模式,使得既可以方便地获取信息,又不必存储不必要的冗余信息。关系数据库的设计过程同样也包括上述6个阶段,如图3-1所示,其核心是概念数据建模,将概念模型转为关系模型并进行规范化处理。具体来说就是将E-R图转换为关系模式,以及对关系模式进行规范化。比如,构造出来的关系模式是否适合所针对的具体问题,应该构造几个关系模式,每个关系模式由哪些属性构成等,这些都是关系数据库设计过程中要解决的核心问题。 3.2 需求分析 需求分析是整个设计阶段最困难、最耗时的阶段,它是在数据库建立的必要性和可行性分析研究的基础上进行的。通常的工作包括详细调查现实世界要处理的对象,如组织、部门、企业等,调查和分析用户的业务活动和数据的使用情况,弄清所用数据的种类、范围、数量以及它们在业务活动中交流的情况,确定用户对数据库系统的使用要求和各种约束条件等。在该阶段需要准确了解、分析用户的需求,形成需求分析说明书。用户需求主要包括以下三方面: 1)信息需求,用户要从数据库获得的信息内容。 2)处理需求,即完成什么处理功能及处理方式。 3)安全性和完整性要求,在定义信息需求和处理需求的同时,必须要确定安全性要求、完整性约束条件等。需求分析的3个主要步骤是:需求信息的收集、分析整理和评审。评审是将需求分析结果再次提交给用户,获得用户的认可,以避免重大疏漏和错误。在了解用户需求后,要进一步描述和分析用户的需求,通常采用结构化分析(Structured Analysis,SA)方法自顶向下、逐层分解。SA方法的基本思想是“分解”和“抽象”。分解是指将大问题分解为若干个小问题,将系统的复杂性降低到可以掌握的程度,然后再逐一解决这些小问题。抽象是指分解可以分层进行,即先考虑问题最本质的属性,暂时略去细节,以后再逐层添加细节,直至涉及最具体的内容。SA的描述方法有分层的数据流图、数据字典、描述加工逻辑的结构化语言、判定表及判定树等。一般使用判定表或判定树来描述处理逻辑,使用数据字典来描述数据。数据流图(Data Flow Diagram,DFD)是常用的结构化分析工具之一,也是描述系统工作流程的一种图形表示法,主要用来描述系统的数据流向和对数据的处理功能。数据流图包括以下几个主要元素:1)带箭头的直线,表示数据流,是数据在系统内传播的路径。2)矩形框,表示数据来源或输出。 3)圆形或椭圆,表示对数据的加工处理。 4)非闭合矩形、单线或双线,表示需要存储的数据。画分层数据流图的方法是“先全局后局部,先整体后细节,先抽象后具体”。通常将这种分层的DFD分为顶层、中间层、底层。具体步骤如下:1)先确定系统范围,画出顶层的DFD。2)逐层分解顶层DFD,获得若干中间层DFD。3)画出底层的DFD。图3-2给出了一个教务管理系统中排课子系统的顶层数据流图的例子。 数据字典是对系统中数据的详细描述,是对数据流图的进一步补充,是下一步概要设计的必要输入。它用于对数据库数据描述的集中管理,并为DBA提供有关的报告。数据字典的内容主要有:数据项、数据结构、数据流、数据存储、加工处理过程。其中,数据项是最基本也是最重要的内容,所谓数据项就是不可再分的数据单位,如学号、课程号、成绩等。对数据项的描述主要包括:数据项名、含义说明、别名、类型、长度、取值范围、取值含义等。 3.3 概念结构设计 概念结构设计是整个数据库设计的关键阶段。通过对用户需求的综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。常用E-R模型来描述概念模型。在概念结构设计阶段,设计人员仅从用户角度看待数据及其处理要求和约束,并产生一个反映用户观点的概念模式。概念结构设计主要分为3个步骤:数据抽象,设计出局部概念模式;将局部概念模式合并成全局概念模式;最后进行评审,以确认该阶段的任务是否完成,有无疏漏和错误。设计概念结构通常有以下4类方法:1)自顶向下:首先定义全局概念结构的框架,然后逐步细化。2)自底向上:首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构。3)逐步扩张:首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至形成总体概念结构。4)混合策略:将自顶向下和自底向上相结合,使用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略设计的各局部概念结构。通常采用自顶向下需求分析、自底向上设计概念结构。概念结构设计的特点如下:1)能真实、充分地反映现实世界中实体间的联系。2)概念模式是各种基本数据模型的共同基础,易于向关系、网状、层次等各种数据模型转换。3)设计复杂程度得到降低,便于数据的组织管理,也易于修改。4)概念模式不受特定DBMS的限制,也独立于存储安排,因而比逻辑设计得到的模式更为稳定。5)概念模式不含具体的DBMS所附加的技术细节,更容易为用户所理解,因而能准确地反映用户的信息需求。 3.4 逻辑结构设计 逻辑结构设计阶段的主要工作是将概念模型转换为数据库的一种逻辑模式,即某种特定DBMS所支持的逻辑数据模式。如果采用基于E-R模型的数据库设计方法,该阶段的任务就是将概念结构设计阶段得到的E-R图,转换为与选用的DBMS产品所支持的数据模型相符合的逻辑结构。通常,E-R模型向关系模型转换是数据库逻辑结构设计的主要步骤。数据库逻辑结构设计的关键是如何构造合适的数据模式。因此,关系数据库逻辑设计的主要任务就是按照规则,将概念设计阶段设计好的独立于具体的DBMS的概念模型,转换为RDBMS产品所支持的一组关系模式,并利用关系数据库理论对这组关系模式进行规范化设计和优化处理,从而得到满足所有数据要求的关系模型。图3-3给出了逻辑结构设计的主要步骤:首先将概念结构转换为一般数据模型;然后将一般数据模型转换为特定DBMS支持下的数据模型;最后对数据模型进行优化。所谓数据模型的优化,就是对得到的初步数据模型进行适当的修改,调整数据模型的结构,以进一步提高数据库应用系统的性能。目前的DBMS产品多是关系型的,对于关系数据库逻辑结构设计的主要步骤就是将E-R图转换为关系模式,然后利用规范化理论对这组关系模式进行修正和优化,相关内容将在第4章和第5章中介绍。 […]