第五章 数据库设计 5.1 数据库设计概述 5.2 需求分析 5.3 概念结构设计 5.4 逻辑结构设计 5.5 数据库物理设计 本章小结
第五章 数据库设计 DB设计的目标: 5.1 数据库设计概述 DB设计: 第五章 数据库设计 5.1 数据库设计概述 DB设计: 数据库设计是指对于一个给定的应用环境,构造(设计)最优的数据模型,然后据此建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求。 DB设计的内容: (1)结构特性设计:概念设计 (2)行为特性设计:应用设计 DB设计的目标: 满足要求与模拟精确程度 良好的数据库性能
5.1 数据库设计概述 一、 数据库设计的特点: 要把结构(数据)设计和行为(处理、功能)设计密切结合起来。 二、 数据库设计的步骤: ● 数据库建设是硬件、软件和干件(技术与管理的界面称为干件)的结合。 ● 数据库设计应该和应用系统设计相结合,在整个设计过程中 要把结构(数据)设计和行为(处理、功能)设计密切结合起来。 二、 数据库设计的步骤: ⒈ 需求分析阶段 : 用户需求的收集和分析,结果得到数据字典描述的数据需求和数据流图描述的处理需求。 2. 概念结构设计阶段: 对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,可以用E-R图表示。
5.1 数据库设计概述 ⒊ 逻辑结构设计阶段: 将概念结构转换为某个DBMS所支持的数据模型(例如 关系模型),并对其进行优化。 ⒊ 逻辑结构设计阶段: 将概念结构转换为某个DBMS所支持的数据模型(例如 关系模型),并对其进行优化。 ⒋ 数据库物理设计阶段 : 为逻辑数据模型选取一个最适合应用环境的物理结构 (包括存储结构和存取方法)。 ⒌ 数据库实施阶段 : 运用DBMS提供的数据语言(例如SQL)及其宿主语言 (例如C),根据逻辑设计和物理设计的结果建立数据库, 编制与调试应用程序,组织数据入库,并进行试运行。 ⒍ 数据库运行和维护阶段 : 数据库应用系统经过试运行后即可投入正式运行。在数据 库系统运行过程中必须不断地对其进行评价、调整与修改。
5.1 数据库设计概述 DB设计的步骤: 需求分析 需求收集和分析 设计概念结构 概念结构设计 设计逻辑结构 数据模型优化 逻辑结构设计 设计物理结构 评价设计、性能预测 数据库物理设计 数据库实施 物理实现 试运行 数据库 运行和维护 使用维护、数据库
5.2 需求分析 一、需求分析的任务 二、需求分析的重点 5.2 需求分析 一、需求分析的任务 通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。 二、需求分析的重点 调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性与完整性要求。 信息要求是用户需要从数据库中获得信息的内容与性质。由用户的信息要求可以导出数据要求,即在数据库中需要存储哪些数据。 处理要求是指用户要求完成什么处理功能,对处理的响应时间 有什么要求,处理方式是批处理还是联机处理。
5.2 需求分析 三、需求分析的方法 1. 需求信息的收集 调查组织机构情况 用户、 分析员、 设计员 (1)了解组织的机构设置 5.2 需求分析 用户、 分析员、 设计员 三、需求分析的方法 1. 需求信息的收集 (1)了解组织的机构设置 (2)主要业务活动和职能 (3)了解系统的各种外部要求 (4)确定系统边界 调查组织机构情况 调查各部门 业务活动情况 SA法 明确用户的需求 DFD DD 确定系统的边界 概念设计
5.2 需求分析 2. 常用的调查方法: 3. 分析和表达用户的需求:自顶向下和自底向上两类方法 5.2 需求分析 2. 常用的调查方法: (1)跟班作业 (2)开调查会 (3)请专人介绍 (4)询问 (5)设计调查表请用户填写 (6)查阅记录 3. 分析和表达用户的需求:自顶向下和自底向上两类方法 4. 需求信息的分析整理: 用数据流图和数据字典描述。
自顶向下的结构化分析方法 SA(structured analysis) 5.2 需求分析 自顶向下的结构化分析方法 SA(structured analysis) ● 从最上层的系统组织机构入手,采用逐层分解的方式分析系统,并且把每一层用数据流图和数据字典描述。 图书借阅管 理系统 1 学 生 数 据 图 书 数 据 图 书 库 存 数 据
5.2 需求分析 借书处 理系统 1.1 学生数据 借书信息 还书处 1.2 还书信息 图 书 库 存 数 据
5.2 需求分析 四、数据流图(DFD—Data Flow Diagram) 5.2 需求分析 四、数据流图(DFD—Data Flow Diagram) DFD用来表示收集到的各业务流程中涉及到的数据和处理过程的关系。 数据流图的基本成分: 表示同类数据的集中存放处,通常指数据文件 表示对数据的处理 表示不同处理过程之间传递的数据 表示数据的发送者和接收者
5.2 需求分析 课表 成绩表 入校学生 通知单 数据流图(例) 1.1 注册 入校学生 通知单 专业要求 1 学习 1.2 选课 学习情况 5.2 需求分析 入校学生 通知单 数据流图(例) 1.1 注册 入校学生 课表 通知单 专业要求 1 学习 1.2 选课 成绩表 学习情况 派遣单 1.3 分配 毕业学生 毕业学生 派遣单
5.2 需求分析 五、数据字典(DD—Data Dictionary) 数据字典是对数据库中数据的描述信息的集合。 5.2 需求分析 五、数据字典(DD—Data Dictionary) 数据字典是对数据库中数据的描述信息的集合。 1.数据字典在DBMS中的作用 (1) 满足DBMS快速查询有关对象的要求。 (2) 供数据库管理员掌握整个系统运行的情况。 2.数据字典的内容 (1) 数据库系统所有对象及其属性的描述信息。 (2) 数据库系统对象之间关系的描述信息。 (3) 登记所有对象、属性的自然语言含义。 (4) 记录数据字典变化的历史。
5.2 需求分析 3.数据字典与DBMS的关系 (1) 结合式数据字典 DBMS和数据字典软件包融合在一起。 (2) 独立式数据字典 5.2 需求分析 3.数据字典与DBMS的关系 (1) 结合式数据字典 DBMS和数据字典软件包融合在一起。 (2) 独立式数据字典 数据字典软件包不依附DBMS独立存在。 4.数据字典的访问 (1) 与人的接口 通过DBMS提供的数据字典访问工具实现对系统数据的访问。 (2) 与软件的接口 通过DBMS的应用程序接口(API)实现对数据字典信息的访问和处理。
5.2 需求分析 5.数据库应用系统的数据字典包括: 6. 关于数据字典的说明 数据项: 数据的最小单位 数据结构: 若干数据项有意义的集合 5.2 需求分析 5.数据库应用系统的数据字典包括: 数据项: 数据的最小单位 数据结构: 若干数据项有意义的集合 数据流: 表示某一处理过程的输入或输出 数据存储: 处理过程中存取的数据 处理过程: 该过程的功能 6. 关于数据字典的说明 用来说明或描述系统中数据的静态组成结构 数据库系统中所有数据的详尽描述,是各类数据属性的清单 数据字典在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善
5.2 需求分析 例:下图给出了某机器制造厂的零配 件采购子系统的数据流图。该子系统 要处理的工作是生产部门提出的生产 5.2 需求分析 例:下图给出了某机器制造厂的零配 件采购子系统的数据流图。该子系统 要处理的工作是生产部门提出的生产 计划根据零配件当前价格计算成本送 主管部门审批,对已批准生产计划制 定采购计划,准备好订货单给供应商。
零配件采购子系统DFD 产品 零件 报价单 零件 确定采 核对 购计划 预算 供应商 编制 定货单 零配件采购记录 预算 价格 库存量 供应商报价 确定采 购计划 生产计划 核对 预算 批准/不批准 核对预算 批准/不批准 采购计划 供应商 编制 定货单 订单细节 零配件采购记录 订货单
5.2 需求分析 数据项描述={数据项名,数据项含义说明,别名,数据类型,长度, 取值范围,取值含义,与其他数据项的逻辑关系} 5.2 需求分析 数据项描述={数据项名,数据项含义说明,别名,数据类型,长度, 取值范围,取值含义,与其他数据项的逻辑关系} 例:数据项名:订货单号 类型: CHAR 长度: 8 别名: 采购单号 取值范围:10000000--99999999
5.2 需求分析 数据结构是若干数据项有意义的集合。 数据结构描述={数据结构名,含义说明,组成:{数据项或数据结构}} 5.2 需求分析 数据结构是若干数据项有意义的集合。 数据结构描述={数据结构名,含义说明,组成:{数据项或数据结构}} 例:数据结构:采购细节 说明:作为采购计划的组成部分,说明对某个产品要 采购哪些零件,哪种零件采购多少数量。 组成:零件号、零件名、数量
5.2 需求分析 数据流数据流图中数据流向的说明。 5.2 需求分析 数据流数据流图中数据流向的说明。 数据流描述={数据流名,说明,数据流来源,数据流去向,组成:{数据结构},平均流量,高峰期流量} 例:数据流名:采购计划 说明:由各产品所需零件数,选定的供应商,审核情 况组成采购零配件计划。 来源:确定采购计划 去向:编制订货单 数据结构:--采购细节 --采购审核
5.2 需求分析 数据存储是数据结构停留或保存的地方。 5.2 需求分析 数据存储是数据结构停留或保存的地方。 数据存储描述={数据存储名,说明,编号,流入的数据流,流出的数据流,组成:{数据结构},数据量,存取方式} 例:数据存储名:产品 说明:对每种产品的品名、规格的描述,并对每种产 品做成本预算。在核对生产计划书的成本时用。 输出数据流:预算 组成:产品号、产品名、预算 数据量:每月30—40件 存取方式:随机存取
5.2 需求分析 处理过程是对加工处理过程的描述。 5.2 需求分析 处理过程是对加工处理过程的描述。 处理过程描述={处理过程名,说明,输入:{数据流},输出:{数据流},处理:{简要说明}} 例:处理过程:确定采购计划 说明:对要采购的每一零件,根据零件库存量确定采购数量, 再根据每位供应商的报价选择适当的供应商,制定采购 计划。 输入:供应商报价、零件库存、已批准生产计划 输出:采购计划 简要说明:(1)对应采购的每种零件查找供应商报价表,选 择报价最低的供应商号。 (2)将此供应商号填入应采购零件表的相应列中。
5.3 概念结构设计 步骤: 2、概念结构设计的方法 1、概念结构 自顶向下:全局细化 主要特点: 自底向上:局部到全局 (1)能反映现实、 逐步扩张:核心 混合策略 步骤: 1、概念结构 主要特点: (1)能反映现实、 满足处理要求 (2)易于理解 (3)易于更改 (4)易于数据模型转换 概念结构设计任务: 将用户需求抽象为概念模型 (E-R图)。 需求分析 DFD、DD 1)数据抽象、局部视图设计 局部E-R图 2)视图集成 基本E-R图 逻辑结构设计
5.3 概念结构设计 自底向上方法步骤: 一. 数据抽象与局部视图设计 根据需求分析的结果(数据流图、数据字典等)对现实世界的数据进行抽象,设计各个局部视图,即分E-R图。 1. 选择局部应用 可利用机构职能关系进行局部处理。 2. 逐一设计分E-R图 设计时注意: 实体与属性的划分原则 属性应是系统中最小的信息单位,不再具有描述性质,如地址。 属性具有多个值时应该升级为实体,如工作年限。
5.3 概念结构设计 例:有职工、部门及其相关信息。 部门D dno 职工 eno 职工E 部门D age name dno dname ... eno 职工E 部门D E-D age name dno dname 职工E eno 部门 ...
5.3 概念结构设计 住院号 姓名 病房号 病房号 病房 医生 级别 床位数 号 名 职称 住院号 姓名 病人 医疗 1 m 住在 1 n
5.3 概念结构设计 3. E-R图扩展 (1)数据抽象 两种抽象: 人体 头 足 手 身 聚集 聚集 定义了某一类型的组成成分。它抽象了对象内部类型和成分之间的“is part of”的语义。 工人 人 农民 学生 干部 概括 概括(继承) 定义类型之间的一种子集联系。它抽象了类型之间的“is subset of”的语义。
5.3 概念结构设计 (2)属性 单值属性:用椭圆表示。 多值属性:用双椭圆表示。 派生属性:用虚椭圆表示。 复合属性:包含其它属性的属性。 (3)基数 在相互联系的实体中,实体出现一次而可能引起的另一个实体出现的最小和最大次数称为前一个实体的基数。 P219 例5.3、5.4 (4)弱实体 必须以另一个实体或多个实体的存在为前提的实体。用双线矩形框表示。 P220 图5.18
5.3 概念结构设计 二. 视图集成(全局视图设计) 1. 视图集成概述 局部视图反映局部的数据观点,可能由不同的人员设计,存不一致、冲突、信息冗余,需要通过集成处理形成全局范围内单一的数据视图。 视图集成的本质是统一与归并:等同、聚合和普遍化。 视图集成的策略:二元集成与n元集成。
5.3 概念结构设计 视图集成的步骤: 预集成:确定总的集成策略,次序,初始序列,识别等同性,识别和解决冲突 集成:归并和重构视图。 视图集成的目标: 完整性和正确性 最小化 可理解性
5.3 概念结构设计 2. 合并分E-R图,生成初步E-R图 合并的过程实际上是一个发现冲突和解决冲突的过程。 冲突主要有: (1)属性冲突 属性值类型、取值范围等发生冲突:尽量大的覆盖。 (2)命名冲突 同名异义、异名同义:重新命名 (3)结构冲突 同一对象在不同视图中有不同抽象:统一为实体或属性。 同一实体在不同视图中属性组成不同:取并。 相同实体间联系在不同视图中呈现不同类型:应用语义。
5.3 概念结构设计 3. 消除不必要的冗余,设计基本E-R图 冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由 其他联系导出的联系。 (1) 用分析法消除冗余数据 例:实发工资、应发工资 注:并不是所有的冗余都必须消除。有时为了提高效率,不得不以冗余为代价。 (2)利用关系规范化理论来消除冗余联系 ① 确定局部E-R图实体之间的函数依赖。 ② 求F的最小依赖集Fm,求其差集,即 D=F-Fm ③ 逐一考察D中每一函数依赖,确定是否为冗余,若是,就把它去掉。
5.4 逻辑结构设计 任务:将基本E-R模型转换为DBMS所支持的数据模型。 关系型逻辑结构设计的步骤: 1) 将概念结构转换为关系模型 5.4 逻辑结构设计 任务:将基本E-R模型转换为DBMS所支持的数据模型。 关系型逻辑结构设计的步骤: 1) 将概念结构转换为关系模型 2) 优化模型 3) 设计适合DBMS的子模式 RDBMS 的表、视图 基本E-R图 关系模型 优化的模型 转换规则 优化方法 RDBMS的 特点和限制
5.4 逻辑结构设计 E-R模型向关系模型的转换 E-R图的三个要素为实体,属性和联系,因此转换的一般原则: 5.4 逻辑结构设计 E-R模型向关系模型的转换 E-R图的三个要素为实体,属性和联系,因此转换的一般原则: (1)一个实体型转换为一个关系模式。 (2)一个1:1联系可转换为一个独立的关系模式,也可与任一端对应的关系模式合并。 (3)一个1:n联系可转换为一个独立的关系模式,也可与n端对应的关系模式合并。 (4)一个m: n联系转换为一个关系模式。 (5)三个或三个以上实体间的多元联系可转换为一个关系模式。 (6) 相同码的关系模式可合并。
5.4 逻辑结构设计 P(P#,PP,PC) S(S#,SP) M(M#,MC) L(L#,LC) P-S(P#,S#,Q1) 5.4 逻辑结构设计 P(P#,PP,PC) S(S#,SP) M(M#,MC) L(L#,LC) P-S(P#,S#,Q1) S-M(S#,M#,Q2) M-L(M#,L#,Q5) ?合并 Q1 组成 m n P# PP 产品P SP S# 零件S Q5 存放 材料M M# MC 仓库L L# LOC PC Q2 消耗 1
5.4 逻辑结构设计 自联系的1:m关系转换 职工 工号 姓名 年龄 民意测验 性别 职称 领导 1 m 5.4 逻辑结构设计 自联系的1:m关系转换 职工 工号 姓名 年龄 民意测验 性别 职称 领导 1 m 职工(工号,姓名,年龄,性别,职称,领导者工号,民意测验)
5.4 逻辑结构设计 自联系的m:n关系转换 零件 代号 名称 数量 价格 组装 m n 零件(代号,名称,价格) 5.4 逻辑结构设计 自联系的m:n关系转换 零件 代号 名称 数量 价格 组装 m n 零件(代号,名称,价格) 组装(代号,组装件代号,数量)
5.4 逻辑结构设计 超类关系转换 机械师 职工 飞行员 管理人员 ,指示器 职工(职工号,姓名,性别,年龄,参加工作时间) 5.4 逻辑结构设计 超类关系转换 机械师 职工 飞行员 管理人员 ,指示器 职工(职工号,姓名,性别,年龄,参加工作时间) 飞行员(职工号,飞行时间,健康检查,飞机型号) 机械师(职工号,学历,级别,专业职称) 管理人员(职工号,职务,职称) 注意:为查询方便,可在超类实体表中增加一个指示器属性,根据指示器的值直接查询子类实体表。
5.4 逻辑结构设计 二、数据模型的优化 1) 分析数据依赖。 2) 对数据依赖进行最小化处理,消除冗余的联系。 5.4 逻辑结构设计 二、数据模型的优化 1) 分析数据依赖。 2) 对数据依赖进行最小化处理,消除冗余的联系。 3) 确定各关系模式的范式。 4) 按照处理要求,对某些模式进行合并或分解。 5) 为提高效率和利用率,对关系模式进一步分解。 常用的两种分解方法: 垂直分解 水平分解 r1 r2 R R R1 R2 三 、 设计用户子模式 考虑:系统的使用安全、简便、用户习惯
5.5 数据库物理设计 数据库物理设计: 为给定的数据模型选取一个最适合应用要求的物理结构的过程。 步骤: 设计准备: 确定DB的物理结构 (存取方法、存储结构) 评价结构的时、空效率 (取决于DBMS) 目标: 设计优化的物理DB结构,使得响应时间短、空间利用率高、事务吞吐率大。 设计准备: 1、分析数据特性和面向的应用。 2、了解DBMS的特性,特别是其索引机制和查询处理技术。
5.5 数据库物理设计 一、系统存储结构的设计 ① 减少访问磁盘时的冲突,提高I/O的并行性。 ② 分散热点数据,均衡I/O负载。 1. 确定数据的存放位置 ① 减少访问磁盘时的冲突,提高I/O的并行性。 ② 分散热点数据,均衡I/O负载。 ③ 保证关键数据的快速访问,缓解系统的瓶颈。 2. 确定系统的配置参数: 用户数、缓冲区、时间片、数据库大小及对象数、装填因子等。
5.5 数据库物理设计 二、创建索引的考虑 是否建索引? 在哪建索引? 是否聚簇? 索引维护的代价
5.5 数据库物理设计 是否建索引? 不适合建立索引的情况有: ① 太小的表。 ② 不出现或很少出现在查询条件中的属性。 ③ 经常更新的属性和表。 ④ 经常查询大部分记录的属性和表。 ⑤ 属性值可能取值的个数很少的属性(如:性别)。 ⑥ 属性值分布严重不均的属性(如:年龄)。
5.5 数据库物理设计 2. 在哪建索引? WHERE子句中提到的属性是建索引的候选 建立索引的一般原则是: ① 主码和外码上一般建立索引。 有利于主键惟一性的检查。 有助于参照完整性的检查。 可加快以主码和外码为连接条件属性的连接操作。
5.5 数据库物理设计 ② 若经常按某列顺序访问记录,则在该列上建立索引。 ③ 为经常有如下情况的列建立索引: · 查询 · ORDER BY · GROUP BY · DISTINCT ④ 在经常作为最大值和最小值等集函数的列上建立索引。 ⑤ 在经常作为连接操作的连接条件中出现的列上建立索引。
5.5 数据库物理设计 3. 是否聚簇 聚簇是将相关数据集中存放的物理存储技术(索引项的次序与数据记录的次序一致),借以提高I/O的数据命中率而改善存取速度。 一个表至多建一个聚簇索引。 借助索引回答范围查询的代价极大地依赖于该索引是否聚簇。
5.5 数据库物理设计 建立聚簇的一般原则是: ① 通过聚簇码进行访问或连接是该关系的主要应用,与聚簇码无关的其他访问很少或者是次要的 。 ② 对应每个聚簇码值的平均元组数既不太少,也不太多。太少了,聚簇效益不明显,甚至浪费块的空间;太多了,就要采用多个连接块,同样对提高性能不利。 ③ 聚簇码值相对稳定,以减少修改聚簇码值所引起的维护开销。
5.5 数据库物理设计 SELECT E.no FROM Employees E WHERE E.age > 25 考虑:所有员工年龄都大于25 ,聚簇不聚簇的情况; 10%的员工年龄大于25,聚簇不聚簇的情况; WHERE E.hobby = ‘Stamps’ 考虑:许多员工都集邮且该查询经常会用到,则需要聚簇; 条件改为E.no =***,只有一个满足,则无需聚簇;
5.6 数据库实施与维护 一、数据库实施主要任务: (1)定义数据库结构 (2)组织数据入库 (3)编制与调试应用程序 (4)数据库试运行。 5.6 数据库实施与维护 一、数据库实施主要任务: (1)定义数据库结构 (2)组织数据入库 (3)编制与调试应用程序 (4)数据库试运行。 1.筛选数据 2.转换数据格式 3.输入数据 4.校验数据 功能测试:即实际运行应用程序,执行对数据库的各种操作,测试应用程序的各种功能。 性能测试:即测量系统的性能指标,分析是否符合设计目标。
5.6 数据库实施与维护 二、数据库的维护 (1)数据的转储与恢复 (2)数据库的安全性、完整性控制 (3)数据库的性能监督、分析和改造 (4)数据库的重组织与重构造 数据库投入运行并不意味着设计过程的终结,由于应用环境在不断变化,数据库运行过程中物理存储也会不断变化,数据库经常性的维护工作主要是由DBA完成的,它包括:
5.6 数据库实施与维护 ⒈ 数据库的转储和恢复 定期对数据库和日志文件进行备份,以保证一旦发生故障,能利用数据库备份及日志文件备份,尽快将数据库恢复到某种一致性状态,并尽可能减少对数据库的破坏。 ⒉ 数据库的安全性、完整性控制 DBA必须根据用户的实际需要授予不同的操作权限。另外,由于应用环境的变化,数据库的完整性约束条件也会变化,也需要DBA不断修正,以满足用户要求。
5.6 数据库实施与维护 ⒊ 数据库性能的监督、分析和改进 目前许多DBMS产品都提供了监测系统性能参数的工具,DBA可以利用 5.6 数据库实施与维护 ⒊ 数据库性能的监督、分析和改进 目前许多DBMS产品都提供了监测系统性能参数的工具,DBA可以利用 这些工具方便地得到系统运行过程中一系列性能参数的值。DBA应该仔细 分析这些数据,通过调整某些参数来进一步改进数据库性能。 ⒋ 数据库的重组织和重构造 数据库运行一段时间后,由于记录不断增、删、改,会使数据库的物 理存储情况变坏,降低了数据的存取效率,数据库性能下降,这时DBA就要 对数据库进行重组织,或部分重组织(只对频繁增、删的表进行重组织); 若原有的数据库设计不能满足新的需求,需对数据库结构进行重构造 。 DBMS一般都提供了重组织数据库用的实用程序,帮助DBA重新组织数据库。
第五章 数据库设计 要点 DB设计的基本步骤、各阶段的任务 数据字典的作用 概念结构设计方法 逻辑结构设计方法 物理设计 练习:P257 第五章 数据库设计 要点 DB设计的基本步骤、各阶段的任务 数据字典的作用 概念结构设计方法 逻辑结构设计方法 物理设计 练习:P257 3、12、13