1、1,第七章 数据库设计,本章讲述如何从实际应用需求出发,逐步构建以数据库为基础的应用管理系统的全过程。重点讲解如何设计数据库的各级模式并建立数据库。 本章内容: 7.1 数据库设计概述 7.2 需求分析 7.3 概念结构设计 7.4 逻辑结构设计 7.5 数据库的物理设计 7.6 数据库的实施 7.7 数据库的运行和维护,2,7.1 数据库设计概述,数据库设计属于软件工程的范畴。面向一个使用数据库的应用系统,利用已有的DBMS,设计出有效、合理地数据库是数据库应用系统的主要内容。 本节内容: 7.1.1 什么是数据库设计 7.1.2 数据库设计的特点 7.1.3 数据库的设计方法 7.1.4
2、数据库设计的基本步骤,3,7.1.1 什么是数据库设计,数据库设计是指对于一个给定的应用环境,构造优化的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。 在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。 数据库是信息系统的核心和基础 把信息系统中大量的数据按一定的模型组织起来 提供存储、维护、检索数据的功能 使信息系统可以方便、及时、准确地从数据库中获得所需的信息 数据库是信息系统的各个部分能否紧密地结合在一起以及如何结合的关键所在 数据库设计是信息系统开发和建设的重要组成部分,4,7.1.2 数据库设计的特点,数据库建
3、设是硬件、软件和干件的结合 三分技术,七分管理,十二分基础数据 技术与管理的界面称之为“干件”数据库设计应该与应用系统设计相结合 结构(数据)设计:设计数据库框架或数据库结构 行为(处理)设计:设计应用程序、事务处理等 结构和行为分离的设计 传统的软件工程忽视对应用中数据语义的分析和抽象,只要有可能就尽量推迟数据结构设计的决策 早期的数据库设计致力于数据模型和建模方法研究,忽视了对行为的设计,5,7.1.2 数据库设计的特点,将数据库与对数据库的操作分离设计,6,7.1.3 数据库的设计方法,将软件工程的思想和方法引入到数据库的设计之中,其基本思想采用过程迭代和逐步求精,分为以下几种方法: 新
4、奥尔良(New Orleans)方法将数据库设计分为四个阶段:需求分析、概念设计、逻辑设计和物理设计。 S.B.Yao方法将数据库设计分为五个步骤:需求分析、模式构成、模式汇总、模式重构、模式分析和物理数据库设计。 ODL(Object Definition Language)方法面向对象的数据库设计方法。 阶段性设计方法E-R模型的数据库设计方法,基于3NF的设计方法,基于抽象语法规范的设计方法等。 计算机辅助设计(CASE)ORACLE Designer 2000、SYBASE PowerDesigner等。,7,7.1.4 数据库设计的基本步骤,参照软件工程的思想,将数据库系统的生命周期
5、(Life cycle)划分为以下七个阶段: (1) 规划阶段建立数据库的必要性和可行性分析。 (2) 需求分析全面、准确了解用户的实际要求。 (3) 概念结构设计设计数据库的概念结构,形成一个独立于具体DBMS的概念模型。 (4) 逻辑结构设计逻辑结构设计是将抽象的概念结构转换为所选用的DBMS支持的数据模型,并对其进行优化。 (5) 数据库物理设计为数据库设计一个合理的存储结构和存取方法。,8,7.1.4 数据库设计的基本步骤,(6) 数据库实施编写与调试应用程序(后台数据库、前端界面),组织数据入库,并进行试运行。 (7) 数据库运行和维护数据库应用系统经过试运行后即可投入正式运行。并在
6、运行过程中不断地对其进行评价、调整与修改。以上七个阶段构成了数据库系统的整个生命周期,直到该系统被新的系统所替代或消亡为止。严格地说,从第二阶段需求分析开始到第五阶段数据库的物理设计为数据库的设计阶段。从需求分析到数据库的运行和维护阶段都存在着反复,即当后一阶段发现问题,需要回溯到之前的某一阶段进行修改,再继续沿着这一过程向前进行。,9,7.2 需求分析,需求分析就是收集用户的各项业务活动及活动中所使用的数据,并由系统分析人员按照分析方法加以总结和提炼,正确地描述用户使用中的业务信息。 本节内容 7.2.1 需求分析的任务 7.2.2 需求信息的收集 7.2.3 需求信息的分析整理,10,7.
7、2.1 需求分析的任务,需求分析就是通过详细调查现实世界要处理的对象(现实业务),充分了解原系统(手工系统或计算机系统),明确用户的各种需求,并在此基础上确定新系统的功能。需求分析的重点是调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性与完整性要求。信息要求:用户需要从数据库中获得信息的内容与性质,由此导出数据要求,即在数据库中需要存储哪些数据。处理要求:用户对处理功能的要求,对处理的响应时间的要求,对处理方式的要求(批处理 / 联机处理)。安全性与完整性要求:数据自身的约束,数据之间的约束关系,以及数据的敏感分析,访问及修改数据的用户级别等。,11,7.2.2 需求信息的收集,需
8、求信息的收集又称为系统调查,即了解用户的组织机构设置、主要业务活动和职能,以及对新系统的要求。 需求信息的收集应得到的主要材料: (1) 各项业务功能中所用到的原始单据、报表等已有的样表 (2) 业务处理的流程及相互关系 (3) 企业已实现的信息系统(很可能是局部应用) (4) 在现有业务处理中用户的期望 需求信息的收集过程中应注意的问题: (1) 虚心听取,及时总结,并把你的理解反馈给调查对象 (2) 一丝不苟,不要遗露一些细节 (3) 忍辱负重,不要在乎用户的白眼和怠慢 ,12,7.2.3 需求信息的分析,需求信息的分析就是对收集到的需求信息进行加工整理,以数据流图和数据字典的形式进行描述
9、,作为需求分析阶段的成果,这也是下一步设计的基础。(1) 确定系统边界哪些业务是由计算机来处理,哪些业务手工处理。(2) 业务流程分析分析各项业务的执行过程和期间的数据联系,分析的结果以数据流图(Data Flow diagram,DFD)的形式描述。 数据流图的表达方式:圆圈:表示一次处理过程有向线:表示数据流双线段:表示存储的信息,13,7.2.3 需求信息的分析,分析方法:通常采用自顶向下的方法, 即从最上层的系统组织机构入手,采用逐层分解的方式分析系统;或先勾勒出业务流程的主要阶段,再对每一阶段进行细分。,例 采购业务流程图:,14,7.2.3 需求信息的分析,(3) 建立数据字典数据
10、字典是各类数据描述的集合,通常以表格的形式详细地描述业务处理过程中用到的各类数据。数据字典的内容包括数据项、数据结构、数据流、数据存储、处理过程等五部分。 数据项:数据项是数据的最小单位,对数据项的描述一般包括项名、含义说明、别名、类型、长度、取值范围及该项与其它项的逻辑关系。常以表格的形式给出。例 采购业务中订货单的订货单号,其数据项的描述: 数据项名:订货单号说 明:用来唯一标识每张定货单类 型:字符型长 度:8别 名:采购单号取值范围:0000000199999999 ,15,7.2.3 需求信息的分析,(3) 建立数据字典 数据结构:数据结构是若干数据项的有意义的集合,通常代表某一具体
11、的事物。包括数据结构名、含义、组成成份等。例 采购单的描述: 数据结构:采购单含 义:记录采购信息,包括采购什么材料及其数据组成成份:采购单号材料名称数量 ,16,7.2.3 需求信息的分析,(3) 建立数据字典 数据流:数据流可以是数据项,也可以是数据结构,表示某一次处理的输入/输出数据。包括数据流名,说明,数据来源,数据去向,及需要的数据项或数据结构。例 采购计划数据流: 数据流名:采购计划说 明:根据生产需要的原材料,选定供应商,编制采购计划来 源:原材料需求表去 向:采购单数据结构:原材料需求表供应商 ,17,7.2.3 需求信息的分析,(3) 建立数据字典 数据存储:加工中需要存储的
12、数据。包括数据存储名、说明、输入数据流、输出数据流、组成成份、数据量、存取方式、存取频度等。例 原材料的价目表,在计算成本和支付采购费用这一处理过程中要用到这些数据: 数据存储名:原材料价目表说 明:记录每一原材料的名称、供应商、价目,在计算 产品成本和采购费用支付处理中使用输入数据流:订购单输出数据流:支付费用表数据描述: 原材料名称供应商单价数据量: 约50条记录存取方式: 随机存取频度: 30次月 ,18,7.2.3 需求信息的分析,(3) 建立数据字典 处理过程:加工处理过程定义和说明。包括处理名称、输入数据、输出数据、数据存储、响应时间等。例 采购支付处理: 处理过程名:采购支付说
13、明:根据采购单、原材料价目表,计算出应付原材料采购费用输入数据: 采购单数据存储: 原材料价目表输出数据: 支付费用表 ,19,7.2 需求分析,需求分析总结: (1) 需求分析的目的在于了解用户对新系统的要求,即用户需要新系统来做些什么; (2) 需求调查就是收集用户各项业务活动中所使用的各类数据的样本,以及了解用户各项业务处理的流程及其对数据的使用情况; (3) 需求信息的分析是分析人员根据收集的用户需求、业务处理流程及各类数据,进行分析处理,以数据流图和数据字典的方式加工整理,即以专业人员的语言来描述企业的数据及业务; (4) 需求分析的结果应能正确地描述企业现实信息,分析人员的分析结果
14、应得到用户的认可,数据流图和数据字典被认为是分析人员和用户交流的语言; (5) 在此我们重点解决的是数据分析,只占整个系统分析的一部分,分析是设计的基础。,20,7.3 概念结构设计,概念结构设计是信息世界的表述方式,即使用一种方法对现实世界进行抽象地描述。概念结构设计建立在需求分析阶段所得到的数据流图和数据字典的基础上,为计算机存储数据作准备。 本节内容: 7.3.1 概念结构设计的内容和要求 7.3.2 E-R图 7.3.3 概念结构设计的策略与方法 7.3.4 设计局部视图 7.3.5 视图集成,21,7.3.1 概念结构设计的内容和要求,概念结构设计就是将现实事物以不依赖于任何数据模型
15、的方式加以描述,目的在于以符号化的形式正确地反映现实事物及事物与事物间的联系。概念结构设计的内容就是建立概念模型。对概念模型有如下要求: (1) 概念模型是对现实世界的抽象和概括,它应真实、充分地反映现实世界中的事物和事物之间的联系; (2) 概念模型应简洁、明晰、独立于机器、容易理解,方便数据库设计人员与用户交换意见; (3) 概念模型应易于变动。当应用环境和应用要求改变时,容易对概念模型修改和扩充; (4) 概念模型应容易向关系、层次或网状数据模型转换。 描述概念模型的最常用方法是E-R图方法。,22,7.3.2 E-R图,E-R图(Entity-Relationship Diagram)
16、 最早由P. P. S. Chen于1976提出 是对现实世界事物的符号化描述,为计算机处理做准备 是信息世界建模的常用工具 信息世界的主要概念 实体(Entity):客观存在的各类事物 实体标识符(Entity Identifier):能唯一标识实体的属性 属性(Attribute):实体所具有的特性。有组合属性、多值属性、派生属性 域(Domain):属性的取值范围 实体型(Entity Type):对具有相同属性特征实体的描述 实体集(Entity Set):同型实体的集合 联系(Relationship):不同实体集中实体之间的联系,也可以是同一实体集内实体的联系,23,7.3.2 E
17、-R图,联系的种类: 一对一联系(1:1):实体集A中的任一实体,在实体集B中最多有一个实体和它对应;反之,实体集B中的任一实体,在实体集A中最多有一个实体和它对应。,24,7.3.2 E-R图,联系的种类: 一对多联系(1:N):实体集A中的任一实体,在实体集B中有多个实体和它对应;反之,实体集B中的任一实体,在实体集A中最多有一个实体和它对应。,25,7.3.2 E-R图,联系的种类: 多对多联系(M:N):实体集A中的任一实体,在实体集B中有多个实体和它对应;反之,实体集B中的任一实体,在实体集A中有多个实体和它对应。,26,7.3.2 E-R图,用E-R图建立概念模型 实体的表示: 属
18、性的表示: 最后用无向边将其与相应的实体连接起来,实体名,属性名,学生,27,7.3.2 E-R图,联系的表示:,实体联系图示例:,28,7.3.2 E-R图,两个以上不同实体集之间的联系:,同一实体集内部实体间的联系:,29,7.3.2 E-R图,完整的E-R图(实体、属性和联系都要完整),30,7.3.2 E-R图,完整的E-R图,31,7.3.2 E-R图,超类与子类,超类,子类,特殊化(Specialization,特化):从实体集中找出与其他实体具有不同属性集的子集构成新实体的过程。 一般化(Generalization,泛化):从实体集中提取公共属性构成新实体的过程。,32,7.3
19、.3 概念结构设计的策略与方法,概念结构设计的四种策略: (1) 自顶向下:即首先定义全局概念结构的框架,然后逐步细化。,33,7.3.3 概念结构设计的策略与方法,概念结构设计的四种策略: (2) 自底向上:即首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构。,34,7.3.3 概念结构设计的策略与方法,概念结构设计的四种策略: (3) 逐步扩张:即首先确定核心业务的概念结构,然后以此为中向外扩张,最终实现全局概念结构。,35,7.3.3 概念结构设计的策略与方法,概念结构设计的四种策略: (4) 混合策略:即将自顶向下和自底向上两种策略结合使用,首先确定全局框架,划分为若
20、干个局部概念模型,再采取自底向上的策略实现各局部概念模型,加以合并实现全局概念模型。实际应用中这些策略并没有严格的限定,可以根据具体业务的特点选择,如对于组织机构管理,因其固有的层次结构,可采用自顶向下的策略;对于已实现计算机管理的业务,通常可以以此为核心,采取逐步扩张的策略。,36,7.3.3 概念结构设计的策略与方法,对现实事物抽象认识的方法分为以下三种: (1) 分类(Classification):对现实世界的事物,按照其具有的共同特征和行为,定义一种类型。这在现实生活中很常见的,如学校中的学生和教师就属于不同的类型。在某一类型中,个体是类型的一个成员或实例,即“is member o
21、f”,如李娜是学生类型中的一个成员。 (2) 聚集(Aggregation):定义某一类型所具有的属性。如学生类型具有学号、姓名、性别、班级等共同属性,每一个学生都是这一类型中的个体,通过在这些属性上的不同取值来区分。各个属性是所属类型的一个成份,即“is part of”,如姓名是学生类型的一个成份。 (3) 概括(Generalization):由一种已知类型定义新的类型。如由学生类型定义研究生类型,在学生类型的属性上增加导师等其它属性就构成研究生类型。通常把已知类型称为超类(Superclass),新定义的类型称为子类(Subclass)。子类是超类的一个子集,即“is subset o
22、f”,如研究生是学生的一个子集。,37,7.3.4 设计局部视图,设计局部视图的步骤 (1) 选择局部应用恰当选择各级数据流图中的某一层的某一部分业务,准备设计局部E-R图。通常就选择数据流图的中间级,这一级实体描述准确,实体间的联系也比较清晰,如需求分析阶段的采购业务流程图。 (2) 设计分E-R图对于每一局部应用,其所用到的数据都应该收集在数据字典中了,依照该局部应用的数据流图,从数据字典中提取出数据,使用抽象机制,确定局部应用中的实体、实体的属性、实体标识符及实体间的联系及其类型。,38,7.3.4 设计局部视图,针对采购业务流程图和数据字典,可以确定如下数据结构:,生产计划(计划编号,
23、产品编号,开始日期,完成日期,产量); 原材料(原材料编号,名称,单价); 库存(原材料编号,库存量); 供应商(供应商名称,地址,电话,邮编,负责人) 订货单(订货单编号,供应商名称,交付日期,结算日期); 订单细节(订货单编号,原材料编号,名称,单价,数量)。,39,7.3.4 设计局部视图,设计如下E-R图:,注:对业务流程中的数据的概括需要经验,不同的人可能会得到不同结果。,40,7.3.4 设计局部视图,现实世界中的实体与属性并没有严格的限定,即有些事物既可以作为实体,又可以作为属性。 确定实体与属性的两条准则: (1) 属性是不可再分的数据项,属性不可以再有属性; (2) 属性不能
24、与其他实体发生联系,联系只能存在于实体与实体之间。 例:职工(职工号,姓名,年龄,职称),其中的职称如果与工资、住房和福利挂勾(即有联系),则应该单独作为实体,而职工与职称间构成联系。,41,7.3.5 视图集成,局部的E-R图又称为局部视图,将多个局部E-R图合并成一张完整的E-R图的过程称为视图集成。 视图集成的方法:选择两个具有相同实体的E-R图,通过相同实体将它们连结起来构成一个E-R图。 如此重复,直到将所有的局部E-R图全部连结成一个E-R图,这称为全局E-R图。,42,7.3.5 视图集成,视图集成的作用:一方面可以完整地描述企业的信息及其联系,另一方面在集成过程中可以解决冲突和
25、消除冗余。 分E-R图之间的三类冲突:(1) 属性冲突:同一属性可能会存在于不同的分E-R图,由于设计人员不同或是出发点不同,对属性的类型、取值范围、数据单位等可能会不一致,这些属性对应的数据将来只能以一种形式在计算机中存储,这就需要在设计阶段进行统一。 (2) 命名冲突:相同意义的属性,在不同的分E-R图上有着不同的命名,或是名称相同的属性在不同的分E-R图中代表着不同的意义,这些也要进行统一。(3) 结构冲突:同一实体在不同的分E-R图中有不同的属性,同一对象在某一分E-R图中被抽象为实体而在另一分 E-R图中又被抽象为属性,需要统一。,43,7.3.5 视图集成,合并后的E-R图可能存在
26、冗余,由于Q3可以由Q2和Q1得到,故Q3多余,同时“使用”联系也可以由“构成”和“消耗”传递表达,故“使用”多余,可以去掉该联系及其属性。另外,实体中的派生属性也是冗余属性,应去掉。冗余的去除应基于“折中”原则。,?,44,7.3.5 视图集成,视图集成过程示意图:,45,7.3 概念结构设计,概念结构设计总结: (1) 概念结构设计是对企业信息的描述,建立在需求分析的基础上; (2) 概念结构设计是对需求分析的数据(数据字典)依照业务处理流程(数据流图)抽象出事物之间的联系,以E-R图的形象加以描述; (3) 概念结构设计是独立于具体DBMS的,信息世界的范畴,即只考虑正确体现事实世界中的
27、事物及联系的描述,而不考虑如何存储这些信息; (4) 概念结构设计所得到的E-R图应该得到用户的认可; (5) 进行概念结构设计的同时进行的是系统的总体设计。,46,7.4 逻辑结构设计,逻辑结构设计是对数据在计算机中的组织形式的设计,即依照DBMS支持的逻辑模型,设计用户数据的组织形式(模式设计)。同样,逻辑结构设计也是建立在概念结构设计的基础上,为下一步数据的存储设计(物理设计)作准备。 本节内容: 7.4.1 逻辑结构设计的任务和步骤 7.4.2 E-R图向关系模型的转换 7.4.3 关系模式的优化 7.4.4 设计用户子模式,47,7.4.1 逻辑结构设计的任务和步骤,逻辑结构设计的任
28、务逻辑结构设计就是将概念结构设计阶段所得到的概念模型(通常是E-R图)转换成某一逻辑模型(层次模型、网状模型、关系模型)的数据结构。具体选用的模型应该是规划阶段所确定的DBMS支持的模型,在现阶段无疑应该是关系模型。因此可以说,逻辑结构设计的任务就是将E-R图转换为关系模式。随后应该进行的工作是对关系模式的规范化和优化,以及面向应用程序设计的用户子模式设计。 逻辑结构设计的步骤 (1) 依照选用的DBMS支持的模型,确定欲转换的逻辑模型; (2) 根据确定的逻辑模型进行E-R图向该模型的转换; (3) 对得到的逻辑模型进行优化; (4) 设计子模式。,48,7.4.1 逻辑结构设计的任务和步骤
29、,逻辑结构设计过程示意图:,49,7.4.2 E-R图向关系模型的转换,转换内容: E-R图由实体、实体属性和实体间的联系三个要素组成 关系模型的逻辑结构是一组关系模式的集合 将E-R图转换为关系模型:将实体、实体属性和实体间的联系转化为关系模式 转换方法: 1. 一个实体型转换为一个关系模式 实体型的属性转换为关系的属性 实体标识符转换为关系的码 例 学生实体:,转换为如下关系模式:学生 ( 学号, 姓名, 出生日期, 所在系, 年级, 平均成绩 ),50,7.4.2 E-R图向关系模型的转换,2. 联系的转换1) 一个 1:1 联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模
30、式合并。 转换为一个独立的关系模式 关系的属性:与该联系相连的各实体的码以及联系本身的属性 关系的候选码:每个实体的码均是该关系的候选码,转换成如下关系模式:班级(班号, 系别, 班主任, 入学时间)班长(学号, 姓名, 性别, 年龄)班级-班长(班号, 学号, 任期)严格地讲,如果一个班组在不同时期有不同的班长,应是1:n联系,此处只为举例。,51,7.4.2 E-R图向关系模型的转换,2. 联系的转换1) 一个 1:1 联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。 与某一端对应的关系模式合并 合并后关系的属性:加入另一关系的码和联系本身的属性 合并后关系的码:不变
31、,转换成如下关系模式:班级(班号, 系别, 班主任, 入学时间,班长学号, 班长任期)班长(学号, 姓名, 性别, 年龄) 或班级(班号, 系别, 班主任, 入学时间)班长(学号, 姓名, 性别, 年龄, 班级, 任期),52,7.4.2 E-R图向关系模型的转换,2. 联系的转换2) 一个 1:n 联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。 转换为一个独立的关系模式 关系的属性:与该联系相连的各实体的码以及联系本身的属性 关系的码:n端实体的码,转换成如下关系模式:班级(班号, 系别, 班主任, 入学时间)学生(学号, 姓名, 性别, 年龄)成员(学号, 班号),53
32、,7.4.2 E-R图向关系模型的转换,2. 联系的转换2) 一个 1:n 联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。与n端对应的关系模式合并 合并后关系的属性:在n端关系中加入1端关系的码和联系本身的属性 合并后关系的码:不变,转换成如下关系模式:班级(班号, 系别, 班主任, 入学时间)学生(学号, 姓名, 性别, 年龄, 班号)实际使用中通常采用这种方法以减少关系模式,因为多一个关系模式就意味着查询过程中要进行连接运算,而降低查询的效率。,54,7.4.2 E-R图向关系模型的转换,2. 联系的转换3) 一个m:n联系转换为一个关系模式。 关系的属性:与该联系相连
33、的各实体的码以及联系本身的属性 关系的码:各实体码的组合,转换成如下关系模式:课程(课程号, 课程名, 学分, 先修课号)学生(学号, 姓名, 性别, 年龄)选修(学号, 课程号, 成绩),55,7.4.2 E-R图向关系模型的转换,2. 联系的转换4) 三个或三个以上实体间的一个多元联系转换为一个关系模式。 关系的属性:与该多元联系相连的各实体的码以及联系本身的属性 关系的码:各实体码的组合,转换成如下关系模式:供应商(供应商代号, 供应商名称,供应商状态, 供应商所在城市)项目(项目代码, 项目名, 项目所在地)零件(零件代码, 零件名, 颜色, 重量)供应(供应商代号,项目代码,零件代码
34、,供应量),56,7.4.3 关系模式的优化,现阶段由概念模型到逻辑模型的过程通常就是将E-R图转换为关系模式,而经过这一转换过程之后得到的一组关系模式未必是最“好”的,还需要经过进一步的优化。 关系模式的优化应该从以下几方面实施: (1) 关系模式规范化规范化的目的在于解决更新异常和数据冗余,应该分解关系模式使其达到3NF或BCNF,对于存在MVD的关系模式应达到4NF。 (2) 对关系模式进行必要的合并对具有关联的关系模式进行合并,通常这类关系模式会经常被查询而频繁地进行连接运算而降低查询的效率,合并后的关系模式可能会带来冗余(存在部分依赖或传递依赖),但这样做还是值得的。,57,7.4.
35、3 关系模式的优化,(3) 进行合理的分解(不是为了达到更高范式) 水平分解把(基本)关系的元组分为若干子集合,定义每个子集合为一个子关系(相同结构的关系模式,但名称不同),以提高系统的效率。水平分解的原因: 数据使用中的“80/20原则”,即一个关系中只有20%的数据会被经常使用。将这些数据单独存储于高速存储设备(高速硬盘)上,可以从总体上提高访问效率; 并发事务经常存取不相交的数据,这些事务(对数据的访问操作)通常是由对等的平级用户来执行。如各系的管理员,他们只会(也只允许)访问自己系的学生数据,而不会访问其他系的,将学生数据按不同的系分别建立不同的关系分开存储,可以提高并发性(减少锁等待
36、)。,58,7.4.3 关系模式的优化,(3) 进行合理的分解(不是为了达到更高范式) 垂直分解把关系模式R的属性分解为若干子集合,形成若干关系模式。 垂直分解的原则:把经常在一起使用的属性从R中分解出来形成一个关系模式。 垂直分解的优点:可以提高那些经常对该关系模式进行访问的事务的执行效率。 垂直分解的缺点:会使另一些事务不得不执行连接操作,从而降低其执行效率。 垂直分解注意事项: 应从所有事务执行的总效率出发考虑分解的必要性 垂直分解必须不损失关系模式的语义(保持无损连接性和保持函数依赖),59,7.4.4 设计用户子模式,用户子模式即外模式,是面向不同用户的应用程序所访问的数据视图。 为
37、什么要引入子模式? (1) 实现数据的逻辑独立性 (2) 使用更符合用户习惯的别名由于在视图集成阶段消除了同一实体的命名差异,但并不符合用户的使用习惯或约定成俗的称谓,如负责学籍管理的用户习惯于称教师模式的职工号为教师编号,而负责人事管理的用户则习惯于称为职工编号,因此可以定义面向学籍管理的视图,将职工号定义为别名“教师编号”。当然,在企业进行信息化的过程中应当积极推进标准化,并不能一味地迁就用户,而应该向标准化靠拢。 (3) 定义外模式可以实现数据的安全性(参照视图优点一节) (4) 简化用户对系统的使用如果某些局部应用中经常要使用某些很复杂的查询,为了方便用户,可以将这些复杂查询定义为视图
38、。,60,7.4 逻辑结构设计,逻辑结构设计总结: (1) 逻辑结构设计与拟使用的DBMS相关; (2) 逻辑结构设计首先应该将概念模型转换为指定DBMS所支持的逻辑模型的数据结构; (3) 对RDBMS而言,应将E-R图转换为关系模式; (4) 对关系模式进行规范化和优化,以实现系统的正确性,提高系统的性能; (5) 与数据库的逻辑结构设计同期进行的是应用系统的模块设计,应考虑不同模块所使用的数据的特点,对关系模式进行必要的分解,以提高各应用模块的执行效率; (6) 进行外模式设计也是为应用系统各模块而服务。,61,7.5 数据库的物理设计,数据库在物理设备上的存储结构与存取方法称为数据库的
39、物理结构,它依赖于给定的计算机系统。为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程,就是数据库的物理设计。 本节内容: 7.5.1 数据库物理设计的步骤 7.5.2 数据库的物理设计的内容和方法 7.5.3 关系模式存取方法选择 7.5.4 确定数据库的存储结构 7.5.5 评价物理结构,62,7.5.1 数据库物理设计的步骤,数据库物理设计的步骤 确定数据库的物理结构 对物理结构进行评价,评价的重点是时间和空间效率 如果评价结果满足原设计要求则可进入到物理实施阶段,否则,就需要重新设计或修改物理结构,有时甚至要返回逻辑设计阶段修改数据模型。,63,7.5.2 物理设计的内容和
40、方法,设计物理数据库结构的准备工作1. 充分了解应用环境,详细分析要运行的事务,以获得选择物理数据库设计所需参数2. 充分了解所用RDBMS的内部特征,特别是系统提供的存取方法和存储结构 选择物理数据库设计所需参数 (1) 数据库查询事务 查询的关系 查询条件所涉及的属性 连接条件所涉及的属性 查询的投影属性,64,7.5.2 物理设计的内容和方法,选择物理数据库设计所需参数 (2) 数据更新事务 被更新的关系 每个关系上的更新操作条件所涉及的属性修改操作要改变的属性值 (3) 每个事务在各关系上运行的频率和性能要求 关系数据库物理设计的内容 1. 为关系模式选择存取方法(建立存取路径) 2.
41、 设计关系、索引等数据库文件的物理存储结构,65,7.5.3 关系模式存取方法选择,数据库系统是多用户共享的系统,对同一个关系要建立多条存取路径才能满足多用户的多种应用要求。物理设计的第一个任务就是要确定选择哪些存取方法,即建立哪些存取路径。 DBMS常用存取方法 (1) 索引方法,目前主要是B+树索引方法 (2) 聚簇(Cluster)方法 (3) HASH方法,66,7.5.3 关系模式存取方法选择,一、索引存取方法的选择 选择索引存取方法的一般规则 如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(或这组)属性上建立索引(或组合索引) 如果一个属性经常作为最大值和最小值等聚集函数
42、的参数,则考虑在这个属性上建立索引 如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这个(或这组)属性上建立索引 关系上定义的索引数过多会带来较多的额外开销 维护索引的开销 查找索引的开销,67,7.5.3 关系模式存取方法选择,二、聚簇索引的选择建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。也即聚簇索引的索引项顺序与表中元组的物理顺序一致。 聚簇的用途 1. 大大提高按聚簇属性进行查询的效率 例 假设学生关系按所在系建有索引,现在要查询信息系的所有学生名单。 信息系的500名学生分布在500个不同的物理块上时,至少要执行500次I/O操作。 如果将同一系的
43、学生元组集中存放,则每读一个物理块可得到多个满足查询条件的元组,从而显著地减少了访问磁盘的次数。 2. 节省存储空间 聚簇以后,聚簇码相同的元组被集中在一起,聚簇码值不必在每个元组中重复存储,只要在一组中存一次就行了。,68,7.5.3 关系模式存取方法选择,聚簇的局限性 1. 聚簇只能提高某些特定应用的性能 2. 建立与维护聚簇的开销相当大 对已有关系建立聚簇,将导致关系中元组移动其物理存储位置,并使此关系上原有的索引无效,必须重建 当一个元组的聚簇码改变时,该元组的存储位置也要做相应移动 聚簇索引的选择原则 1. 经常进行更新操作的表不能进行聚簇索引 2. 对经常进行等值连接(自然连接)的
44、表的连接项进行聚簇 3. 对重复率高的属性(组)进行聚簇索引,可以减少存储空间 4. 综合考虑聚簇代价与性能的关系,选择必要的聚簇,69,7.5.3 关系模式存取方法选择,三、HASH存取方法的选择 选择HASH存取方法的规则当一个关系满足下列两个条件时,可以选择HASH存取方法 (1) 该关系的属性主要出现在等值连接条件中或主要出现在相等比较选择条件中 (2) 该关系的大小可预知,而且不变; 或该关系的大小动态改变,但所选用的DBMS提供了动态HASH存取方法。,70,7.5.4 确定数据库的存储结构,确定数据库物理结构的内容 1. 确定数据的存放位置和存储结构 2. 确定系统配置 影响数据
45、存放位置和存储结构的因素 硬件环境 应用需求 存取时间 存储空间利用率 维护代价这三个方面常常是相互矛盾的。例:消除一切冗余数据虽能够节约存储空间和减少维护代价,但往往会导致检索代价的增加,必须进行权衡,选择一个折中方案。,71,7.5.4 确定数据库的存储结构,确定数据库存储结构的基本原则根据应用情况将易变部分与稳定部分、存取频率较高部分与存取频率较低部分分开存放,以提高系统性能 例: 数据库数据备份、日志文件备份等由于只在故障恢复时才使用,而且数据量很大,可以考虑存放在磁带上。 如果计算机有多个磁盘,可以考虑将表和索引分别放在不同的磁盘上,在查询时,由于两个磁盘驱动器分别在工作,因而可以保
46、证物理读写速度比较快。 可以将比较大的表分别放在两个磁盘上,以加快存取速度,这在多用户环境下特别有效。 可以将日志文件与数据库对象(表、索引等)放在不同的磁盘以改进系统的性能。,72,7.5.4 确定数据库的存储结构,DBMS产品一般都提供了一些存储分配参数 同时使用数据库的用户数 同时打开的数据库对象数 使用的缓冲区长度、个数 时间片大小 数据库的大小 装填因子 锁的数目 等等(1) 系统都为这些变量赋予了合理的缺省值。但是这些值不一定适合每一种应用环境,在进行物理设计时,需要根据应用环境确定这些参数值,以使系统性能最优。 (2) 在物理设计时对系统配置变量的调整只是初步的,在系统运行时还要
47、根据系统实际运行情况做进一步的调整,以期切实改进系统性能。,73,7.5.5 评价物理结构,评价内容数据库物理设计过程中产生的多种方案进行细致的评价,从中选择一个较优的方案作为数据库的物理结构 评价方法 定量估算各种方案 存储空间 存取时间 维护代价 对估算结果进行权衡、比较,选择出一个较优的合理的物理结构 如果该结构不符合用户需求,则需要修改设计,74,7.6 数据库的实施,数据库实施的工作内容 用DDL定义数据库结构 组织数据入库 编制与调试应用程序 数据库试运行,75,7.6 数据库的实施,一、定义数据库结构确定了数据库的逻辑结构与物理结构后,就可以用所选用的DBMS提供的数据定义语言(
48、DDL)来严格描述数据库结构。,76,7.6 数据库的实施,二、数据装载数据库结构建立好后,就可以向数据库中装载数据了。组织数据入库是数据库实施阶段最主要的工作。 数据装载方法 (1) 人工方法适用于小型系统 1) 筛选数据。需要装入数据库中的数据通常都分散在各个部门的数据文件或原始凭证中,所以首先必须把需要入库的数据筛选出来。 2) 转换数据格式。筛选出来的需要入库的数据,其格式往往不符合数据库要求,还需要进行转换。这种转换有时可能很复杂。 3) 输入数据。将转换好的数据输入计算机中。 4) 校验数据。检查输入的数据是否有误。,77,7.6 数据库的实施,数据装载方法 (2) 计算机辅助数据
49、入库适用于中大型系统 1) 筛选数据 2) 输入数据。由录入员将原始数据直接输入计算机中。数据输入子系统应提供输入界面。 3) 校验数据。数据输入子系统采用多种检验技术检查输入数据的正确性。 4) 转换数据。数据输入子系统根据数据库系统的要求,从录入的数据中抽取有用成分,对其进行分类,然后转换数据格式。抽取、分类和转换数据是数据输入子系统的主要工作,也是数据输入子系统的复杂性所在。 5) 综合数据。数据输入子系统对转换好的数据根据系统的要求进一步综合成最终数据。,78,7.6 数据库的实施,如果数据库是在老的文件系统或数据库系统的基础上设计的,则数据输入子系统只需要完成转换数据、综合数据两项工作,直接将老系统中的数据转换成新系统中需要的数据格式。 为了保证数据能够及时入库,应在数据库物理设计的同时编制数据输入子系统。,