文章目录
[XJTUSE DATABASE]——第五章 数据库设计
大题分析
一、数据库设计概述
数据库设计分6个阶段
需求分析
概念结构设计
逻辑结构设计
物理结构设计
数据库实施
数据库运行和维护
需求分析和概念设计独立于任何数据库管理系统
逻辑设计和物理设计与选用的数据库管理系统密切相关
二、需求分析
详细调查现实世界要处理的对象(组织、部门、 企业等)。
充分了解原系统(手工系统或计算机系统)工作概况。
明确用户的各种需求。
在此基础上确定新系统的功能。
新系统必须充分考虑今后可能的扩充和改变。
步骤
1️⃣ 调查清楚用户的实际需求并进行初步分析。
调查组织机构情况。
调查各部门的业务活动情况。
协助用户明确对新系统的各种要求,包括信 息要求、处理要求、完全性与完整性要求。
确定新系统的边界。
2️⃣ 与用户达成共识。
3️⃣ 分析与表达这些需求。
分析方法
结构化分析方法(Structured Analysis,简称SA方法)
SA方法从最上层的系统组织机构入手
采用自顶向下、逐层分解的方式分析系统
对用户需求进行分析与表达后,需求分析报告必须 提交给用户,征得用户的认可。
数据字典
数据字典的内容
数据项
数据结构
数据流
数据存储
处理过程
数据项是数据的最小组成单位。
若干个数据项可以组成一个数据结构。
数据字典通过对数据项和数据结构的定义来描述 数据流、数据存储的逻辑内容。
数据项
数据项是不可再分的数据单位
数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义, 与其他数据项的逻辑关系,数据项之间的联系}
“取值范围”、“与其他数据项的逻辑关系”定义了数据的完整性约束条件,是设计 数据检验功能的依据。
可以用关系规范化理论为指导,用数据依赖的概念分析 和表示数据项之间的联系**。**
数据结构
数据结构反映了数据之间的组合关系。
一个数据结构可以由若干个数据项组成,也可以由 若干个数据结构组成,或由若干个数据项和数据结 构混合组成。
数据结构描述 ={数据结构名,含义说明,组成:{数据项或数据结构}}
数据流
数据流是数据结构在系统内传输的路径。
数据流描述={数据流名,说明,数据流来源,数据流去向,组成:{数据结构}, 平均流量,高峰期流量}
数据流来源:说明该数据流来自哪个过程。
数据流去向:说明该数据流将到哪个过程去。
平均流量:在单位时间(每天、每周、每月等)里的传输次数。
高峰期流量:在高峰时期的数据流量。
数据存储
数据存储是数据结构停留或保存的地方,也是数据 流的来源和去向之一。
数据存储描述={数据存储名,说明,编号,输入的数据流 ,输出的数据流, 组成:{数据结构},数据量, 存取频度,存取方式}
存取频度:每小时、每天或每周存取次数,每次存取的 数据量等信息。
存取方法:批处理 / 联机处理;检索 / 更新;顺序检索 /随机检索。
输入的数据流:数据来源
输出的数据流:数据去向
处理过程
处理过程的具体处理逻辑一般用判定表或判定树来描述。数据字典中只需要描述处理过程的说明性信息。
处理过程说明性信息的描述
处理过程描述={处理过程名,说明,输入:{数据流},输出:{数据流},处理:{简要说明}}
简要说明:说明该处理过程的功能及处理要求
功能:该处理过程用来做什么。
处理要求:处理频度要求,如单位时间里处理多少事务,多 少数据量、响应时间要求等。
处理要求是后面物理设计的输入及性能评价的标准
三、概念结构设计
将需求分析得到的用户需求抽象为信息结构(即概 念模型)的过程就是概念结构设计。
概念模型的特点:
能真实、充分地反映现实世界,是现实世界的一个真 实模型。
易于理解,从而可以用它和不熟悉计算机的用户交换意见。
易于更改,当应用环境和应用要求改变时,容易对概 念模型修改和扩充
易于向关系、网状、层次等各种数据模型转换。
描述概念模型的工具:E-R模型
实体与属性的划分原则
为了简化E-R图的处置,现实世界的事物能作为属性对待的,尽量作为属性对待。
两条准则:
1️⃣ 作为属性,不能再具有需要描述的性质。属性必须是不可分的数据项,不能包含其他属性。
2️⃣ 属性不能与其他实体具有联系,即E-R图中所表示的联系是实体之间的联系。
示例:职工是一个实体,职工号、姓名、年龄是职工的属性。
职称如果没有与工资、福利挂钩,根据准则(1)可以作为职工实体的属性
如果不同的职称有不同的工资、住房标准和不同的附加福利,则职称作为一个实体更恰当
示例:在医院中,一个病人只能住在一个病房,病房号可以作为病 人实体的一个属性;
如果病房还要与医生实体发生联系,即一个医生负责几个病房的病人的医疗工作,则根据准则(2) 病房应作为一个实体。
设计实例:销售管理子系统E-R图的设计。
该子系统的主要功能是:
处理顾客和销售员送来的订单
工厂是根据订货安排生产的
交出货物同时开出发票
收到顾客付款后,根据发票存根和信贷情况进行应收款处理
每张订单由订单号、若干头信息和订单细节组成。订单细节又 有订货的零件号、数量等来描述。按照准则(2),订单细节就不能作订单的属性处理而应该上升为实体。一张订单可以订若干产 品,所以订单与订单细节两个实体之间是1∶n的联系。
原订单和产品的联系实际上是订单细节和产品的联 系。每条订货细节对应一个产品描述,订单处理时从 中获得当前单价、产品重量等信息。
工厂对大宗订货给予优惠。每种产品都规定了不同 订货数量的折扣,应增加一个“折扣规则”实体存放 这些信息,而不应把它们放在产品实体中。
对每个实体定义的属性如下:
顾客:{顾客号,顾客名,地址,电话,信贷状况,账目余额}
订单:{订单号,顾客号,订货项数,订货日期,交货日期,工 种号,生产地点}
订单细则:{订单号,细则号,零件号,订货数,金额}
应收账款:{顾客号,订单号,发票号,应收金额,支付日期,
支付金额,当前余额,货款限额}
产品:{产品号,产品名,单价,重量}
折扣规则:{产品号,订货量,折扣}
ER图的集成
E-R图的集成一般需要分两步:
合并:解决各分E-R图之间的冲突,将分E-R图合并起 来生成初步E-R图。
修改和重构:消除不必要的冗余,生成基本E-R图。
合并E-R图,生成初步E-R图
各个局部应用所面向的问题不同,各个子系统的E-R图 之间必定会存在许多不一致的地方,称之为冲突。
子系统E-R图之间的冲突主要有三类:
① 属性冲突
属性域冲突,即属性值的类型、取值范围或取值集合不同。
例如:零件号,有的部门把它定义为整数,有的部门 把它定义为字符型。
② 命名冲突
③ 结构冲突
1️⃣ 情况1:同一对象在不同应用中具有不同的抽象。
例如,职工在某一局部应用中被当作实体,而在另一局部应用中则被当作属性。
解决方法:把属性变换为实体或把实体变换为属性,使同一对象具有相同的抽象。
2️⃣ 情况2:同一实体在不同子系统的E-R图中所包含的属性个数和属性排列次序不完全相同。
解决方法:使该实体的属性取各子系统的E-R图中属性的并集,再适当调整属性的次序。
3️⃣ 情况3:实体间的联系在不同的E-R图中为不同的类型。
实体E1与E2在一个E-R图中是多对多联系,在另一个E-R图中是一对多联系
解决方法:根据应用的语义对实体联系的类型进行综合或调整。
消除不必要的冗余,设计基本E-R图
所谓冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由其他联系导出的联系。
消除冗余主要采用分析方法,即以数据字典和数据流图为依据,根据数据字典中关于数据项之间逻辑关系的说明来消除冗余
四、逻辑结构设计
逻辑结构设计的任务
把概念结构设计阶段设计好的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构。
转换内容
E-R图由实体型、实体的属性和实体型之间的联系三个要素组成。
关系模型的逻辑结构是一组关系模式的集合。
将E-R图转换为关系模型:将实体型、实体的属性和实体型之间的联系转化为关系模式。
转换原则
一个实体型转换为一个关系模式。
关系的属性:实体的属性
关系的码:实体的码
实体型间的联系有以下不同情况
1️⃣ 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
① 转换为一个独立的关系模式
关系的属性:与该联系相连的各实体的码以及联系本身的属性
关系的候选码:每个实体的码均是该关系的候选码
② 与某一端实体对应的关系模式合并
合并后关系的属性:加入对应关系的码和联系本身的属性
合并后关系的码:不变
2️⃣ 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。
① 转换为一个独立的关系模式
关系的属性:与该联系相连的各实体的码以及联系本身的属性。
关系的码:n端实体的码
② 与n端对应的关系模式合并
合并后关系的属性:在n端关系中加入1端关系的码 和联系本身的属性。
合并后关系的码:不变。
可以减少系统中的关系个数,一般情况下更倾向于 采用这种方法
3️⃣ 一个m:n联系转换为一个关系模式
关系的属性:与该联系相连的各实体的码以及联系本身的属性
关系的码:各实体码的组合
4️⃣ 具有相同码的关系模式可合并
目的:减少系统中的关系个数
合并方法:
将其中一个关系模式的全部属性加入到另一个关 系模式中。
然后去掉其中的同义属性(可能同名也可能不同名)。
适当调整属性的次序。
示例
部门(部门号,部门名,经理的职工号,…)
职工(职工号、部门号,职工名,职务,…)
产品(产品号,产品名,产品组长的职工号,…)
供应商(供应商号,姓名,…)
零件(零件号,零件名,…)
职工工作(职工号,产品号,工作天数,…)
供应(产品号,供应商号,零件号,供应量)
五、物理结构设计
定义
数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于选定的数据库管理系统。
为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是数据库的物理设计
步骤
1️⃣ 确定数据库的物理结构
在关系数据库中主要指存取方法和存储结构。
2️⃣ 对物理结构进行评价
评价的重点是时间和空间效率。
若评价结果满足原设计要求,则可进入到物理实施阶段。否则,就需要重新设计或修改物理结构,有时 甚至要返回逻辑设计阶段修改数据模型。
准备工作
充分了解应用环境,详细分析要运行的事务,以获得 选择物理数据库设计所需参数。
充分了解所用关系型数据库管理系统的内部特征,特 别是系统提供的存取方法和存储结构。
选择物理数据库设计所需参数
1️⃣ 数据库查询事务
查询的关系
查询条件所涉及的属性
连接条件所涉及的属性
查询的投影属性
2️⃣ 数据更新事务
被更新的关系
每个关系上的更新操作条件所涉及的属性
修改操作要改变的属性值
3️⃣ 每个事务在各关系上运行的频率和性能要求
数据库管理系统常用存取方法
1️⃣ B+树索引存取方法
2️⃣ Hash索引存取方法
3️⃣ 聚簇存取方法
为了提高某个属性(或属性组)的查询速度,把这个 或这些属性(称为聚簇码)上具有相同值的元组集中 存放在连续的物理块中称为聚簇。
该属性(或属性组)称为聚簇码(cluster key)
许多关系型数据库管理系统都提供了聚簇功能
聚簇存放与聚簇索引的区别
聚簇索引的适用条件
很少对基表进行增删操作
很少对其中的变长列进行修改操作
聚簇的用途
对于某些类型的查询,可以提高查询效率。
提高按聚簇属性进行查询的效率
节省存储空间
确定数据库的存储结构
确定数据库物理结构主要指确定数据的存放位置和存储结构,包括:确定关系、索引、聚簇、日志、 备份等的存储安排和存储结构,确定系统配置等。
确定数据的存放位置和存储结构要综合考虑存取时间、存储空间利用率和维护代价3个方面的因素
确定数据的存放位置基本原则
根据应用情况将易变部分与稳定部分分开存放。
经常存取部分与存取频率较低部分分开存放。
举例
可以将比较大的表分别放在两个磁盘上,以加快存取速度,这在多用户环境下特别有效。
可以将日志文件与数据库对象(表、索引等)放在不同的磁盘以改进系统的性能。
六、数据库的实施和维护
数据的载入和应用程序的调试
数据库的试运行
数据库的运行和维护