当前位置:首页 >> 高中教育 >> 数据库系统概论 第七章数据库设计 (2)

数据库系统概论 第七章数据库设计 (2)


数据库系统概论
An Introduction to Database System

第七章

数据库设计

An Introduction to Database System

第七章 数据库设计
7.1 数据库设计概述
7.2 需求分析

7

.3 概念结构设计
7.4 逻辑结构设计

7.5 数据库的物理设计
7.6 数据库实施和维护 7.7 小结
An Introduction to Database System

An Introduction to Database System

An Introduction to Database System

传统的软件工程方法

An Introduction to Database System

7.1数据库设计概述
? 数据库设计
? 数据库设计是指对于一个给定的应用环境,构造(设 计)优化的数据库逻辑模式和物理结构,并据此建立 数据库及其应用系统,使之能够有效地存储和管理数 据,满足各种用户的应用需求,包括信息管理要求和 数据操作要求。

? 目标:为用户和各种应用系统提供一个信息基础设施 和高效率的运行环境

An Introduction to Database System

7.1数据库设计概述
?数据库是信息系统的核心和基础
? 把信息系统中大量的数据按一定的模型组织起来 ? 提供存储、维护、检索数据的功能 ? 使信息系统可以方便、及时、准确地从数据库中获 得所需的信息

?数据库是信息系统的各个部分能否紧密地结合 在一起以及如何结合的关键所在 ?数据库设计是信息系统开发和建设的重要组成 部分
An Introduction to Database System

数据库设计人员应该具备的技术和知识
?数据库的基本知识和数据库设计技术
?计算机科学的基础知识和程序设计的方法和技巧

?软件工程的原理和方法
?应用领域的知识

An Introduction to Database System

7.1 数据库设计概述
7.1.1 数据库设计的特点
7.1.2 数据库设计方法

7.1.3 数据库设计的基本步骤
7.1.4 数据库设计过程中的各级模式

An Introduction to Database System

7.1.1 数据库设计的特点
?数据库建设的基本规律
? 三分技术,七分管理,十二分基础数据 ? 管理

?数据库建设项目管理
?企业(即应用部门)的业务管理 ? 基础数据 ?收集、入库 ?更新数据

An Introduction to Database System

数据库设计的特点(续)
?数据库设计应该与应用系统设计相结合
? 结构(数据)设计:设计数据库框架或数据库结构 ? 行为(处理)设计:设计应用程序、事务处理等

?结构和行为分离的设计
? 传统的软件工程忽视对应用中数据语义的分析和抽象,

只要有可能就尽量推迟数据结构设计的决策
? 早期的数据库设计致力于数据模型和建模方法研究, 忽视了对行为的设计
An Introduction to Database System

数据库设计的特点(续)
现实世界 数据分析 概念模型设计 逻辑数据库设计 物理数据库设计 子模式设计 建立数据库 功能分析 功能模型 功能说明

事务设计 程序说明 应用程序设计 程序编码调试

结构和行为分离的设计
An Introduction to Database System

7.1 数据库设计概述
7.1.1 数据库设计的特点
7.1.2 数据库设计方法

7.1.3 数据库设计的基本步骤
7.1.4 数据库设计过程中的各级模式

An Introduction to Database System

7.1.2 数据库设计方法
? 手工与经验相结合方法
? 设计质量与设计人员的经验和水平有直接关系

? 数据库运行一段时间后常常不同程度地发现各种问题,
增加了维护代价

?规范设计法
? 基本思想:过程迭代和逐步求精

An Introduction to Database System

数据库设计方法(续)
? 新奥尔良(New Orleans)方法 ? 将数据库设计分为若干阶段和步骤,并采用一些辅 助手段实现每一过程 ? 基于E-R模型的数据库设计方法 ? 概念设计阶段广泛采用 ? 3NF(第三范式)的设计方法

? 逻辑阶段可采用的有效方法
? ODL(Object Definition Language)方法
? 面向对象的数据库设计方法
An Introduction to Database System

数据库设计方法(续)
?计算机辅助设计
? ORACLE Designer 2000

? SYBASE PowerDesigner

An Introduction to Database System

7.1 数据库设计概述
7.1.1 数据库设计的特点
7.1.2 数据库设计方法

7.1.3 数据库设计的基本步骤
7.1.4 数据库设计过程中的各级模式

An Introduction to Database System

7.1.3 数据库设计的基本步骤
? 数据库设计分6个阶段
? ? ? ? ? ? 需求分析 概念结构设计 逻辑结构设计 物理结构设计 数据库实施 数据库运行和维护

? 需求分析和概念设计独立于任何数据库管理系统 ? 逻辑设计和物理设计与选用的DBMS密切相关
An Introduction to Database System

数据库设计的基本步骤(续)
一、数据库设计的准备工作:选定参加设计
的人
1.系统分析人员、数据库设计人员
? 自始至终参与数据库设计

? 数据库设计的核心人员
? 其水平决定了数据库系统的质量
An Introduction to Database System

2. 用户和数据库管理员
? 在数据库设计中也是举足轻重的
? 主要参加需求分析和数据库的运行维护

? 用户积极参与带来的好处

? 加速数据库设计 ? 提高数据库设计的质量
3.应用开发人员(程序员和操作员)
? 在系统实施阶段参与进来,负责编制程序和准备软硬件环境

An Introduction to Database System

数据库设计的基本步骤(续)
二、数据库设计的过程(六个阶段) ⒈需求分析阶段
? 准确了解与分析用户需求(包括数据与处理) ? 是整个设计过程的基础,最困难、最耗费时间的一步

⒉概念结构设计阶段
? 整个数据库设计的关键 ? 通过对用户需求进行综合、归纳与抽象,形成一个独 立于具体DBMS的概念模型

An Introduction to Database System

数据库设计的基本步骤(续)
⒊逻辑结构设计阶段
? 将概念结构转换为某个DBMS所支持的数据模型 ? 对其进行优化

⒋数据库物理设计阶段
? 为逻辑数据模型选取一个最适合应用环境的物理结构 (包括存储结构和存取方法)

An Introduction to Database System

数据库设计的基本步骤(续)
⒌数据库实施阶段
? 运用DBMS提供的数据库语言(如SQL)及宿主语言, 根据逻辑设计和物理设计的结果
?建立数据库

?编制与调试应用程序
?组织数据入库 ?进行试运行

⒍数据库运行和维护阶段
? 数据库应用系统经过试运行后即可投入正式运行 ? 在数据库系统运行过程中必须不断地对其进行评价、 调整与修改 An Introduction to Database System

数据库设计的基本步骤(续)
设计一个完善的数据库应用系统往往是上述六个阶段的不
断反复(P202图7.2) ? 把数据库设计和对数据库中数据处理的设计紧密结合起来 ? 将这两个方面的需求分析、抽象、设计、实现在各个阶段 同时进行,相互参照,相互补充,以完善两方面的设计

An Introduction to Database System

数据库设计各个阶段的设计描述

7.1 数据库设计概述
7.1.1 数据库设计的特点
7.1.2 数据库设计方法 7.1.3 数据库设计的基本步骤 7.1.4 数据库设计过程中的各级模式

An Introduction to Database System

7.4.1数据库设计过程中的各级模式
?数据库各级模式的形成过程(P209图6.4)
? 需求分析阶段
? 综合各个用户的应用需求

? 概念设计阶段
? 形成独立于机器特点,独立于各个DBMS产品 的概念模式(E-R图)

An Introduction to Database System

数据库设计的基本步骤(续)
? 逻辑设计阶段 ? 首先将E-R图转换成具体的数据库产品支持的数据模 型,如关系模型,形成数据库逻辑模式 ? 然后根据用户处理的要求、安全性的考虑,在基本 表的基础上再建立必要的视图(View),形成数据的 外模式

? 物理设计阶段
? 根据DBMS特点和处理的需要,进行物理存储安排, 建立索引,形成数据库内模式
An Introduction to Database System

7.1.4数据库设计过程中的各级模式
数据库设计不同阶段形成的数据库各级模式

数据库的各级模式
An Introduction to Database System

第七章 数据库设计
7.1 数据库设计概述 7.2 需求分析

7.3 概念结构设计
7.4 逻辑结构设计

7.5 数据库的物理设计
7.6 数据库实施和维护

7.7 小结
An Introduction to Database System

?需求分析就是分析用户的需要与要求
? 需求分析是设计数据库的起点

? 需求分析的结果是否准确地反映了用户的实际要求,
将直接影响到后面各个阶段的设计,并影响到设计结 果是否合理和实用

An Introduction to Database System

7.2 需求分析
7.2.1 需求分析的任务
7.2.2 需求分析的方法 7.2.3 数据字典

An Introduction to Database System

7.2.1 需求分析的任务
?需求分析的任务

?需求分析的重点
?需求分析的难点

An Introduction to Database System

需求分析的任务
?通过详细调查现实世界要处理的对象(组织、部 门、企业等),充分了解原系统(手工系统或计 算机系统)工作概况,明确用户的各种需求
? 在此基础上确定新系统的功能。新系统必须充分

考虑今后可能的扩充和改变,不能仅仅按当前应 用需求来设计数据库

An Introduction to Database System

需求分析的重点
?调查的重点是“数据”和“处理”,是调查、收
集与分析用户在数据管理中的信息要求、处理要

求、安全性与完整性要求。
? 信息要求

? 用户需要从数据库中获得信息的内容与性质
? 由用户的信息要求可以导出数据要求,即在数 据库中需要存储哪些数据
An Introduction to Database System

? 处理要求
? 对处理功能的要求 ? 对处理的响应时间的要求 ? 对处理方式的要求(批处理 / 联机处理)

? 安全性与完整性要求

An Introduction to Database System

需求分析的难点
? 确定用户最终需求
? 用户缺少计算机知识,开始时无法确定计算机究竟能为自己
做什么,不能做什么,因此无法一下子准确地表达自己的需
求,他们所提出的需求往往不断地变化。

? 设计人员缺少用户的专业知识,不易理解用户的真正需求,
甚至误解用户的需求。 ? 新的硬件、软件技术的出现也会使用户需求发生变化。
An Introduction to Database System

?解决方法
? 设计人员必须设计人员必须采用有效的方法,不断深

入地与用户进行交流,才能逐步得以确定用户的实际
需求

An Introduction to Database System

7.2 需求分析
7.2.1 需求分析的任务
7.2.2 需求分析的方法 7.2.3 数据字典

An Introduction to Database System

7.2.2 需求分析的方法
?调查清楚用户的实际需求并进行初步分析
?与用户达成共识 ?进一步分析与表达这些需求

An Introduction to Database System

调查用户需求的具体步骤
⑴ 调查组织机构情况
? 组织部门的组成情况 ? 各部门的职责等

An Introduction to Database System

?⑵ 调查各部门的业务活动情况。调查重点之一。
? 各个部门输入和使用什么数据

? 如何加工处理这些数据
? 输出什么信息

? 输出到什么部门
? 输出结果的格式是什么

An Introduction to Database System

?⑶ 在熟悉业务活动的基础上,协助用户明确对新
系统的各种要求。调查重点之二。
? 信息要求
? 处理要求

? 完全性与完整性要求

An Introduction to Database System

?⑷ 对前面调查的结果进行初步分析
? 确定新系统的边界
? 确定哪些功能由计算机完成或将来准备让计算机完成
? 确定哪些活动由人工完成

?

由计算机完成的功能就是新系统应该实现
的功能。
An Introduction to Database System

?做需求调查时,往往需要同时采用多种方法
? 无论使用何种调查方法,都必须有用户的积极参与和

配合
? 设计人员应该和用户取得共同的语言,帮助不熟悉计 算机的用户建立数据库环境下的共同概念,并对设计 工作的最后结果共同承担责任

An Introduction to Database System

常用调查方法
(1)跟班作业 ? 通过亲身参加业务工作了解业务活动的情况 ? 能比较准确地理解用户的需求,但比较耗时 (2)开调查会

? 通过与用户座谈来了解业务活动情况及用户需 求
(3)请专人介绍
An Introduction to Database System

⑷询问
? 对某些调查中的问题,可以找专人询问 ⑸设计调查表请用户填写 ? 如果调查表设计合理,则很有效,且易于为用 户接受 ⑹查阅记录 ? 查阅与原系统有关的数据记录
An Introduction to Database System

?分析和表达用户的需求的常用方法
? 自顶向下的结构化分析方法(Structured Analysis,简 称SA方法)

?SA方法从最上层的系统组织机构入手,采用逐层 分解的方式分析系统,并用数据流图和数据字典 描述系统。

An Introduction to Database System

进一步分析和表达用户需求
?结构化分析方法(Structured Analysis,简称SA
方法)
?
?

从最上层的系统组织机构入手
自顶向下、逐层分解分析系统

An Introduction to Database System

进一步分析和表达用户需求(续)
1.首先把任何一个系统都抽象为:
数据 存储 数据流 数据 来源 处理 数据流 数据 输出

信息要求

处理要求

An Introduction to Database System

进一步分析和表达用户需求(续)
2.分解处理功能和数据
(1)分解处理功能
?将处理功能的具体内容分解为若干子功能,再将每个子 功能继续分解,直到把系统的工作过程表达清楚为止。

(2)分解数据
?处理功能逐步分解同时,其所用的数据也逐级分解, , 形成若干层次的数据流图

(3)表达方法
? 处理逻辑:用判定表或判定树来描述 ? 数据:用数据字典来描述

3.将分析结果再次提交给用户,征得用户的认可
An Introduction to Database System

需求分析过程

需求分析过程
An Introduction to Database System

7.2 需求分析
7.2.1 需求分析的任务
7.2.2 需求分析的方法 7.2.3 数据字典

An Introduction to Database System

7.2.3 数据字典
?数据字典是各类数据描述的集合 ?数据字典是进行详细的数据收集和数据分析所获 得的主要结果 ?数据字典在数据库设计中占有很重要的地位

An Introduction to Database System

?数据字典的内容 ? 数据项 ? 数据结构 ? 数据流 ? 数据存储 ? 处理过程 ? 数据项是数据的最小组成单位 ? 若干个数据项可以组成一个数据结构 ? 数据字典通过对数据项和数据结构的定义来描述 数据流、数据存储的逻辑内容。
An Introduction to Database System

⒈ 数据项
? 数据项是不可再分的数据单位
? 对数据项的描述
数据项描述={ 数据项名,数据项含义说明,别名,
数据类型,长度,取值范围,取值含义, 与其他数据项的逻辑关系,数据项之间的 联系 } ? 取值范围、与其他数据项的逻辑关系定义了数据的完整 性约束条件
An Introduction to Database System

⒉ 数据结构
? 数据结构反映了数据之间的组合关系。
? 一个数据结构可以由若干个数据项组成,也可以由若干个 数据结构组成,或由若干个数据项和数据结构混合组成。 ? 对数据结构的描述 数据结构描述={数据结构名,含义说明, 组成:{数据项或数据结构}}

An Introduction to Database System

⒊ 数据流
? 数据流是数据结构在系统内传输的路径。 ? 对数据流的描述
数据流描述={ 数据流名,说明,数据流来源, 数据流去向,组成:{数据结构}, 平均流量,高峰期流量} ? 数据流来源是说明该数据流来自哪个过程 ? 数据流去向是说明该数据流将到哪个过程去 ? 平均流量是指在单位时间(每天、每周、每月等)里的传 输次数 ? 高峰期流量则是指在高峰时期的数据流量
An Introduction to Database System

⒋ 数据存储
?数据存储是数据结构停留或保存的地方,也是数据 流的来源和去向之一。 ?对数据存储的描述
数据存储描述={数据存储名,说明,编号,
输入的数据流 ,输出的数据流 , 组成:{数据结构},数据量,存取频度, 存取方式}
? 流入的数据流:指出数据来源 ? 流出的数据流:指出数据去向 ? 数据量:每次存取多少数据,每天(或每小时、每周等)存取几次等 信息 ? 存取方法:批处理 / 联机处理;检索 / 更新;顺序检索 / 随机检索
An Introduction to Database System

⒌ 处理过程
?具体处理逻辑一般用判定表或判定树来描述
?处理过程说明性信息的描述
处理过程描述={处理过程名,说明,输入:{数据流}, 输出:{数据流},处理:{简要说明}}

An Introduction to Database System

数据字典举例
例:学生学籍管理子系统的数据字典。
数据项,以“学号”为例: 数据项: 学号 含义说明:唯一标识每个学生 别名: 学生编号 类型: 字符型 长度: 8 取值范围:00000000至99999999 取值含义:前两位标别该学生所在年级, 后六位按顺序编号 与其他数据项的逻辑关系:
An Introduction to Database System

处理过程(续)
数据结构,以“学生”为例 “学生”是该系统中的一个核心数据结构: 数据结构: 含义说明: 组成: 学生 是学籍管理子系统的主体数据结构, 定义了一个学生的有关信息 学号,姓名,性别,年龄,所在系,年级

An Introduction to Database System

处理过程(续)
数据流,“体检结果”可如下描述:
数据流: 说明: 体检结果 学生参加体格检查的最终结果

数据流来源:体检 数据流去向:批准

组成:
平均流量:

……
……

高峰期流量:……
An Introduction to Database System

处理过程(续)
数据存储,“学生登记表”可如下描述:

数据存储:
说明:

学生登记表
记录学生的基本情况

流入数据流:……
流出数据流:…… 组成: 数据量: 存取方式: …… 每年3000张 随机存取
An Introduction to Database System

处理过程(续)
处理过程“分配宿舍”可如下描述: 处理过程:分配宿舍 说明: 为所有新生分配学生宿舍

输入:
输出: 处理:

学生,宿舍
宿舍安排 在新生报到后,为所有新生分配学生宿舍。

要求同一间宿舍只能安排同一性别的学生,
同一个学生只能安排在一个宿舍中。 每个学生的居住面积不小于3平方米。

安排新生宿舍其处理时间应不超过15分钟。
An Introduction to Database System

数据字典
? 数据字典是关于数据库中数据的描述,是元数据,而不是数
据本身

? 数据字典在需求分析阶段建立,在数据库设计过程中不断修 改、充实、完善

An Introduction to Database System

需求分析小结
? 设计人员应充分考虑到可能的扩充和改变,使设计易于
更改,系统易于扩充 ? 必须强调用户的参与

An Introduction to Database System

第七章 数据库设计
7.1 数据库设计概述 7.2 需求分析 7.3 概念结构设计

7.4 逻辑结构设计
7.5 数据库的物理设计

7.6 数据库实施和维护
7.7 小结
An Introduction to Database System

7.3 概念结构设计
7.3.1 概念结构 7.3.2 概念结构设计的方法与步骤 7.3.3 数据抽象与局部视图设计 7.3.4 视图的集成

An Introduction to Database System

7.3.1 概念结构
?什么是概念结构设计
? 将需求分析得到的用户需求抽象为信息结构即概念 模型的过程就是概念结构设计 ? 概念结构是各种数据模型的共同基础,它比数据模 型更独立于机器、更抽象,从而更加稳定 ? 概念结构设计是整个数据库设计的关键
An Introduction to Database System

概念结构(续)
现实世界 信息世界 机器世界
需求分析

概念结构设计

An Introduction to Database System

概念结构设计的原则

An Introduction to Database System

?描述概念模型的工具
? E-R模型

An Introduction to Database System

7.3 概念结构设计
7.3.1 概念结构
7.3.2 概念结构设计的方法与步骤 7.3.3 数据抽象与局部视图设计 7.3.4 视图的集成

An Introduction to Database System

7.3.2 概念结构设计的方法与步骤
?设计概念结构的四类方法 ? 自顶向下
? 首先定义全局概念结构的框架,然后逐步细化

自顶向下策略

An Introduction to Database System

7.3.2 概念结构设计的方法与步骤
? 自底向上
? 首先定义各局部应用的概念结构,然后将它们集成起来,
得到全局概念结构

自底向上策略

An Introduction to Database System

概念结构设计的方法与步骤(续)
? 逐步扩张
? 首先定义最重要的核心概念结构,然后向外扩充,以滚
雪球的方式逐步生成其他概念结构,直至总体概念结构

逐步扩张策略
An Introduction to Database System

概念结构设计的方法与步骤(续)
? 混合策略
? 将自顶向下和自底向上相结合,用自顶向下策略设计一 个全局概念结构的框架,以它为骨架集成由自底向上策 略中设计的各局部概念结构。

An Introduction to Database System

概念结构设计的方法与步骤(续)
? 常用策略
? 自顶向下地进行需求分析
? 自底向上地设计概念结构

An Introduction to Database System

概念结构设计的方法与步骤(续)
?自底向上设计概念结构的步骤
第1步:抽象数据并设计局部视图

第2步:集成局部视图,得到全局概念结构

An Introduction to Database System

7.3 概念结构设计
7.3.1 概念结构
7.3.2 概念结构设计的方法与步骤 7.3.3 数据抽象与局部视图设计 7.3.4 视图的集成

An Introduction to Database System

7.3.3 数据抽象与局部视图设计
?数据抽象 ?局部视图设计

An Introduction to Database System

数据抽象
?概念结构是对现实世界的一种抽象
? 从实际的人、物、事和概念中抽取所关心的共 同特性,忽略非本质的细节 ? 把这些特性用各种概念精确地加以描述 ? 这些概念组成了某种模型

An Introduction to Database System

数据抽象(续)
?三种常用抽象 1. 分类(Classification)
? 定义某一类概念作为现实世界中一组对象的类型
? 这些对象具有某些共同的特性和行为 ? 抽象了对象值和型之间的“is member of”的语义 ? 在E-R模型中,实体型就是这种抽象

An Introduction to Database System

数据抽象(续)
2. 聚集(Aggregation)
? 定义某一类型的组成成分 ? 抽象了对象内部类型和成分之间“is part of”的语义 ? 在E-R模型中若干属性的聚集组成了实体型,就是这种 抽象

聚集

An Introduction to Database System

数据抽象(续)
3. 概括(Generalization)
? 定义类型之间的一种子集联系 ? 抽象了类型之间的“is subset of”的语义 ? 概括有一个很重要的性质:继承性。子类继承超类上定 义的所有抽象。

An Introduction to Database System

概括

?注:原E-R模型不具有概括,本书对E-R模型作了
扩充,允许定义超类实体型和子类实体型。
? 用双竖边的矩形框表示子类,
? 用直线加小圆圈表示超类-子类的联系

An Introduction to Database System

?数据抽象的用途
? 对需求分析阶段收集到的数据进行分类、组织 (聚集),形成 ? 实体 ? 实体的属性,标识实体的码 ? 确定实体之间的联系类型(1:1,1:n,m:n)

An Introduction to Database System

局部视图设计
设计分E-R图的步骤:
⒈ 选择局部应用 ⒉ 逐一设计分E-R图

An Introduction to Database System

?需求分析阶段,已用多层数据流图和数据字典描 述了整个系统。
?设计分E-R图首先需要根据系统的具体情况,在 多层的数据流图中选择一个适当层次的数据流图, 让这组图中每一部分对应一个局部应用,然后以 这一层次的数据流图为出发点,设计分E-R图。

An Introduction to Database System

⒈ 选择局部应用 ?通常以中层数据流图作为设计分E-R图 的依据
?原因:
? 高层数据流图只能反映系统的概貌 ? 中层数据流图能较好地反映系统中各局部应用的子系统组


? 低层数据流图过细
An Introduction to Database System

例:由于学籍管理、课程管理等都不太复杂,因此
可以它们入手设计学生管理子系统的分E-R图。

如果局部应用比较复杂,则可以从更下层的数据
流图入手。

An Introduction to Database System

⒉ 逐一设计分E-R图
?任务
? 标定局部应用中的实体、属性、码,实体间 的联系 ? 将各局部应用涉及的数据分别从数据字典 中抽取出来,参照数据流图,标定各局部 应用中的实体、实体的属性、标识实体的 码,确定实体之间的联系及其类型(1:1, 1:n,m:n)

An Introduction to Database System

?如何抽象实体和属性
? 实体:现实世界中一组具有某些共同特性和行 为的对象就可以抽象为一个实体。对象和实体 之间是“is member of"的关系。 例:在学校环境中,可把张三、李四等对象抽象 为学生实体。

An Introduction to Database System

? 属性:对象类型的组成成分可以抽象为实体的 属性。组成成分与对象类型之间是“is part of" 的关系。
例:学号、姓名、专业、年级等可以抽象为学生 实体的属性。其中学号为标识学生实体的码。

An Introduction to Database System

?如何区分实体和属性
? 实体与属性是相对而言的。同一事物,在一种应用环 境中作为“属性”,在另一种应用环境中就必须作为 “实体”。 例:学校中的系,在某种应用环境中,它只是作为 “学生”实体的一个属性,表明一个学生属于哪个系; 而在另一种环境中,由于需要考虑一个系的系主任、 教师人数、学生人数、办公地点等,这时它就需要作 为实体了。

An Introduction to Database System

? 一般原则

? 属性不能再具有需要描述的性质。即属性必须 是不可分的数据项,不能再由另一些属性组成。 ? 属性不能与其他实体具有联系。联系只发生在 实体之间。
? 符合上述两条特性的事物一般作为属性对待。 ? 为了简化E-R图的处置,现实世界中的事物凡能够作为 属性对待的,应尽量作为属性。

An Introduction to Database System

? 举例

例1:“学生”由学号、姓名等属性进一步描述,根据准 则1,“学生”只能作为实体,不能作为属性。 例2:职称通常作为教师实体的属性,但在涉及住房分配 时,由于分房与职称有关,也就是说职称与住房实体 之间有联系,根据准则2,这时把职称作为实体来处 理会更合适些。

An Introduction to Database System

?设计分E-R图的步骤
? (1)以数据字典为出发点定义E-R图。

? 数据字典中的“数据结构”、“数据流”和 “数据存储”等已是若干属性的有意义的聚合
? (2)按上面给出的准则进行必要的调整。

An Introduction to Database System

例:学籍管理局部应用中主要涉及的实体包括学生、 宿舍、档案材料、班级、班主任。 实体之间的联系: ? 由于一个宿舍可以住多个学生,而一个学生只 能住在某一个宿舍中,因此宿舍与学生之间是 1:n的联系。 ? 由于一个班级往往有若干名学生,而一个学生 只能属于一个班级,因此班级与学生之间也是 1:n的联系。
An Introduction to Database System

? 由于班主任同时还要教课,因此班主任与学生 之间存在指导联系,一个班主任要教多名学生, 而一个学生只对应一个班主任,因此班主任与 学生之间也是1:n的联系。 ? 而学生和他自己的档案材料之间,班级与班主 任之间都是1:1的联系。
学籍管理局部应用的分E-R图草图:教程P195 图6-11
An Introduction to Database System

接下来需要进一步斟酌该E-R图,做适当调整。 ? (1) 在一般情况下,性别通常作为学生实体的属 性,但在本局部应用中,由于宿舍分配与学生 性别有关,根据准则2,应该把性别作为实体 对待。 ? (2) 数据存储“学生登记表”,由于是手工填写, 供存档使用,其中有用的部分已转入学生档案 材料中,因此这里就不必作为实体了。 最后得到学籍管理局部应用的分E-R图:教程P 195如图6-12。
An Introduction to Database System

该E-R图中省略了各个实体的属性描述: 学生:{学号,姓名,出生日期} 性别:{性别} 档案材料:{档案号,…… } 班级:{班级号,学生人数} 班主任:{职工号,姓名,性别, 是否为优秀班主任} 宿舍:{宿舍编号,地址,人数} 其中有下划线的属性为实体的码。
An Introduction to Database System

同样方法可以得到课程管理局部应用的分E-R图, 各实体的属性分别为: 学生:{姓名,学号,性别,年龄,所在系, 年级,平均成绩} 课程:{课程号,课程名,学分} 教师:{职工号,姓名,性别,职称} 教科书:{书号,书名,价钱} 教室:{教室编号,地址,容量}
An Introduction to Database System

逐一设计分E-R图(续)

职称作为一个实体
An Introduction to Database System

逐一设计分E-R图(续)

病房作为一个实体
An Introduction to Database System

逐一设计分E-R图(续)

仓库作为一个实体
An Introduction to Database System

逐一设计分E-R图(续)
[实例]销售管理子系统分E-R图的设计
?销售管理子系统的主要功能:
? ? ? ?

处理顾客和销售员送来的订单 工厂是根据订货安排生产的 交出货物同时开出发票 收到顾客付款后,根据发票存根和信贷情况进行应收款 处理

An Introduction to Database System

逐一设计分E-R图(续)
? 下图是第一层数据流图,虚线部分划出了系统边界

An 图7.18 销售管理子系统第一层数据流图 Introduction to Database System

逐一设计分E-R图(续)
? 上图中把系统功能又分为4个子系统,下面四个图是第二层数据流图

图7.19 接收订单

An Introduction to Database System

逐一设计分E-R图(续)

图7.20 处理订单

An Introduction to Database System

逐一设计分E-R图(续)

图7.21 开发票
An Introduction to Database System

逐一设计分E-R图(续)

图7.22 支付过账

An Introduction to Database System

逐一设计分E-R图(续)

分E-R图的框架

An Introduction to Database System

逐一设计分E-R图(续)
? 参照第二层数据流图和数据字典,遵循两个准则,进行如
下调整:
? (1) 订单与订单细节是1∶n的联系 ? (2) 原订单和产品的联系实际上是订单细节和产品的联系。 ? (3) 图7.21中“发票主清单”是一个数据存储,不必作为实体 加入分E-R图 ? (4) 工厂对大宗订货给予优惠

An Introduction to Database System

逐一设计分E-R图(续)
?得到分E-R图如下图所示

销售管理子系统的分E-R图
An Introduction to Database System

逐一设计分E-R图(续)
对每个实体定义的属性如下:
? 顾客:{顾客号,顾客名,地址,电话,信贷状况,账目余额} ? 订单:{订单号,顾客号,订货项数,订货日期,交货日期,工种 号,生产地点} ? 订单细则:{订单号,细则号,零件号,订货数,金额} ? 应收账款:{顾客号,订单号,发票号,应收金额,支付日期,支 付金额, ? 当前余额,货款限额} ? 产品描述:{产品号,产品名,单价,重量} ? 折扣规则:{产品号,订货量,折扣}
An Introduction to Database System

7.3 概念结构设计
7.3.1 概念结构
7.3.2 概念结构设计的方法与步骤 7.3.3 数据抽象与局部视图设计 7.3.4 视图的集成

An Introduction to Database System

7.3.4 视图的集成
?各个局部视图即分E-R图建立好后,还需要对它
们进行合并,集成为一个整体的数据概念结构即 总E-R图。

An Introduction to Database System

视图集成的两种方式
?多个分E-R图一次集成
? 一次集成多个分E-R图

? 通常用于局部视图比较简单时

An Introduction to Database System

视图的集成(续)
?逐步集成
? 用累加的方式一次集成两个分E-R图

An Introduction to Database System

视图的集成(续)
? 集成局部E-R图的步骤
1. 合并 2. 修改与重构

An Introduction to Database System

视图的集成(续)

视图集成
An Introduction to Database System

合并分E-R图,生成初步E-R图

?各分E-R图存在冲突
? 各个局部应用所面向的问题不同 ? 由不同的设计人员进行设计

? 各个分E-R图之间必定会存在许多不一致的地方 ? 合并分E-R图的主要工作与关键所在:合理消除各分ER图的冲突

An Introduction to Database System

?冲突的种类
? 属性冲突

? 命名冲突
? 结构冲突

An Introduction to Database System

⒈ 属性冲突
?两类属性冲突 ? 属性域冲突:属性值的类型、取值范围或取 值集合不同。

?

例1, 由于学号是数字,因此某些部门 (即局部应用)将学号定义为整数形式,而由 于学号不用参与运算,因此另一些部门(即局 部应用)将学号定义为字符型形式。 ? 例2, 某些部门(即局部应用)以出生日 期形式表示学生的年龄,而另一些部门(即局 部应用)用整数形式表示学生的年龄。 An Introduction to Database System

? 属性取值单位冲突。
例:学生的身高,有的以米为单位,有的以厘米 为单位,有的以尺为单位。

?属性冲突的解决方法
? 通常用讨论、协商等行政手段加以解决

An Introduction to Database System

⒉ 命名冲突
?两类命名冲突
? 同名异义:不同意义的对象在不同的局部应用中具有 相同的名字(如科研项目) 例,局部应用A中将教室称为房间 局部应用B中将学生宿舍称为房间 ? 异名同义(一义多名):同一意义的对象在不同的局 部应用中具有不同的名字 例,有的部门把教科书称为课本 有的部门则把教科书称为教材
An Introduction to Database System

?命名冲突可能发生在属性级、实体级、联系级上。 其中属性的命名冲突更为常见。 ?命名冲突的解决方法
? 通过讨论、协商等行政手段加以解决

An Introduction to Database System

⒊ 结构冲突
?三类结构冲突
? 同一对象在不同应用中具有不同的抽象
例,“课程”在某一局部应用中被当作实体 在另一局部应用中则被当作属性

? 解决方法:通常是把属性变换为实体或把实体 变换为属性,使同一对象具有相同的抽象。变 换时要遵循两个准则。

An Introduction to Database System

? 同一实体在不同局部视图中所包含的属性不完 全相同,或者属性的排列次序不完全相同。
? 产生原因:不同的局部应用关心的是该实体的 不同侧面。 ? 解决方法:使该实体的属性取各分E-R图中属性 的并集,再适当设计属性的次序。

An Introduction to Database System

结构冲突(续)
学生

学号

姓名

性别

平均成绩

(a)在局部应用A中

An Introduction to Database System

结构冲突(续)
学生

姓名

学号

出生日期 所在系

年级

(b)在局部应用B中

An Introduction to Database System

结构冲突(续)
学生

姓名

政治面貌

学号

(c)在局部应用C中

An Introduction to Database System

结构冲突(续)
学生

学号 姓名

出生 日期

政治 面貌

所在系 年级 性别

平均 成绩

(d)合并后

An Introduction to Database System

结构冲突(续)
? 实体之间的联系在不同局部视图中呈现不同的类型 例1, 实体E1与E2在局部应用A中是多对多联系,而在 局部应用B中是一对多联系 例2, 在局部应用X中E1与E2发生联系,而在局部应用 Y中E1、E2、E3三者之间有联系。

? 解决方法:根据应用语义对实体联系的类型进 行综合或调整。(P226图6.27)

An Introduction to Database System

合并分E-R图,生成初步E-R图实例
例:生成学校管理系统的初步E-R图
以合并学籍管理局部视图, 课程管理局部视图为例 这两个分E-R图存在着多方面的冲突:

An Introduction to Database System

合并分E-R图,生成初步E-R图实例
(1) 班主任实际上也属于教师,也就是说学籍管理中的班主 任实体与课程管理中的教师实体在一定程度上属于异名同 义,可以应将学籍管理中的班主任实体与课程管理中的教 师实体统一称为教师,统一后教师实体的属性构成为:
教师:{职工号,姓名,性别,职称, 是否为优秀班主任}

An Introduction to Database System

合并分E-R图,生成初步E-R图实例(续)

(2) 将班主任改为教师后,教师与学生之间的联系在两个局 部视图中呈现两种不同的类型,一种是学籍管理中教师与 学生之间的指导联系,一种是课程管理中教师与学生之间 的教学联系,由于指导联系实际上可以包含在教学联系之 中,因此可以将这两种联系综合为教学联系。

An Introduction to Database System

合并分E-R图,生成初步E-R图实例(续)

(3) 性别在两个局部应用中具有不同的抽象,它在学籍管理
中为实体,在课程管理中为属性,按照前面提到的两个原 则,在合并后的E-R图中性别只能作为实体,否则它无法

与宿舍实体发生联系。

An Introduction to Database System

合并分E-R图,生成初步E-R图实例(续)

(4) 在两个局部E-R图中,学生实体属性组成及次序都存在差 异,应将所有属性综合,并重新调整次序。假设调整结果 为: 学生:{学号,姓名,出生日期,年龄,所在系,年级, 平均成绩}
解决上述冲突后,学籍管理分E-R图与课程管理分E-R图 合并为P198图6-16的形式。

An Introduction to Database System

二、修改与重构

?基本任务
? 消除不必要的冗余,设计生成基本E-R图 分E-R图 合并 初步E-R图

可能存在冗余的数据 和冗余的实体间联系 消除不必要的冗余

基本E-R图
An Introduction to Database System

消除不必要的冗余,设计基本E-R图(续)

? 冗余 ? 消除冗余的方法

An Introduction to Database System

1.冗余
?冗余的数据是指可由基本数据导出的数据, ? 冗余的联系是指可由其他联系导出的联系。
?冗余数据和冗余联系容易破坏数据库的完整性, 给数据库维护增加困难 ?并不是所有的冗余数据与冗余联系都必须加以消 除,有时为了提高某些应用的效率,不得不以冗 余信息作为代价。
An Introduction to Database System

?设计数据库概念结构时,哪些冗余信息必须消除, 哪些冗余信息允许存在,需要根据用户的整体需 求来确定。
?消除不必要的冗余后的初步E-R图称为基本E-R图。

An Introduction to Database System

消除冗余的方法
?分析方法
? 以数据字典和数据流图为依据 ? 根据数据字典中关于数据项之间的逻辑关系的说明来 消除冗余。

消除冗余
An Introduction to Database System

例,教师工资单中包括该教师的基本工资、各种

补贴、应扣除的房租水电费以及实发工资。
由于实发工资可以由前面各项推算出来,因此可 以去掉,在需要查询实发工资时根据基本工资、 各种补贴、应扣除的房租水电费数据临时生成。

An Introduction to Database System

? 如果是为了提高效率,人为地保留了一些冗余
数据,则应把数据字典中数据关联的说明作为

完整性约束条件。

? 一种更好的方法是把冗余数据定义在视图中

An Introduction to Database System

消除冗余的方法(续)
?规范化理论
? 函数依赖的概念提供了消除冗余联系的形式化工具

An Introduction to Database System

消除冗余的方法(续)
? 方法
1. 确定分E-R图实体之间的数据依赖 ,并用实体码之间的函数 依赖表示。
? 部门和职工之间一对多的联系 可表示为: 职工号→部门号 ? 职工和产品之间多对多的联系 可表示为: (职工号,产品号)→工作天数 ? 得到函数依赖集FL
劳动人事管理的分E-R图
An Introduction to Database System

例: 班级和学生之间一对多的联系: 学号?班级号 学生和课程之间多对多的联系: (学号,课程号) ?成绩

An Introduction to Database System

消除冗余的方法(续)
2. 求FL的最小覆盖GL ,差集为D = FL-GL。
逐一考察D中的函数依赖,确定是否是冗余的联系,若 是,就把它去掉。
? (1) 冗余的联系一定在D中,而D中的联系不一定是冗余的; ? (2) 当实体之间存在多种联系时要将实体之间的联系在形式 上加以区分。

An Introduction to Database System

消除冗余的方法(续)
? 由于规范化理论受到泛关系假设的限制,应注意下面 两个问题: 1.冗余的联系一定在D中,而D中的联系不一定是冗余的; 2.当实体之间存在多种联系时要将实体之间的联系在形式 上加以区分。

例P229图6.30中 部门和职工之间两种联系表示为: 负责人.职工号?部门号 部门号?负责人.职工号

An Introduction to Database System

泛关系假设
?假设存在着一个单一的关系模式
“假设已知一个模式Sφ,它仅由单个关系模式组成, 问题是要设计一个模式SD,它与Sφ‘等价’,但在某些 方面更好一些” ? 从一个关系模式出发,而不是从一组关系模式出发实 行分解 ? “等价”的定义也是一组关系模式与一个关系模式的 “等价”

An Introduction to Database System

泛关系假设(续)
?泛关系假设是运用规范化理论时的障碍
? 承认了泛关系假设,就等于承认了现实世界各实体间 只能有一种联系

An Introduction to Database System

消除冗余,设计生成基本E-R图实例
教程P198图6-16的初步E-R图中存在着冗余数据和冗余 联系:
(1) 学生实体中的年龄属性可以由出生日期推算出来,属 于冗余数据,应该去掉。这样不仅可以节省存储空间,而 且当某个学生的出生日期有误,进行修改后,无须相应修 改年龄,减少了产生数据不一致的机会。 学生:{学号,姓名,出生日期,所在系, 年级,平均成绩}

An Introduction to Database System

消除冗余,设计生成基本E-R图实例(续)

(2) 教室实体与班级实体的上课联系可以由教室与课程之间
的开设联系、课程与学生之间的选修联系、学生与班级之 间的组成联系三者推导出来,因此属于冗余联系,可以消 去。

An Introduction to Database System

消除冗余,设计生成基本E-R图实例(续)

(3) 学生实体中的平均成绩可以从选修联系中的成绩属性中 推算出来
? 由于应用中需要经常查询某个学生的平均成绩,每次 都进行这种计算效率就会太低,因此为提高效率,保 留该冗余数据 ? 但定义一个触发器来保证学生的平均成绩等于该学生 各科成绩的平均值。

? 任何一科成绩修改后,或该学生学了新的科目并有成 绩后,就触发该触发器去修改该学生的平均成绩属性 值。
An Introduction to Database System

消除冗余,设计生成基本E-R图实例(续)

教程P200图17是对图16进行修改和重构后生成 的基本E-R图。 学生管理子系统的基本E-R图与教师管理子系统 以及后勤管理子系统的基本E-R图合并后,生成 整个学校管理系统的基本E-R图

An Introduction to Database System

三、验证整体概念结构
? 视图集成后形成一个整体的数据库概念结构,对该整体概 念结构还必须进行进一步验证,确保它能够满足下列条件:
? 整体概念结构内部必须具有一致性,不存在互相矛盾 的表达。 ? 整体概念结构能准确地反映原来的每个视图结构,包 括属性、实体及实体间的联系。

? 整体概念结构能满足需要分析阶段所确定的所有要求。

An Introduction to Database System

验证整体概念结构(续)
?整体概念结构最终还应该提交给用户,征求用户
和有关人员的意见,进行评审、修改和优化,然

后把它确定下来,作为数据库的概念结构,作为
进一步设计数据库的依据。

An Introduction to Database System

消除冗余,设计生成基本E-R图实例

[实例] 某工厂管理信息系统的视图集成。
书中图1.14(c)、图7.24、图7.29分别为该厂物资、销售 和劳动人事管理的分E-R图 图7.30为该系统的基本E-R图

An Introduction to Database System

消除冗余,设计生成基本E-R图实例(续)
该厂物资管理分E-R图

图1.14(c) 工厂物资管理E-R图
An Introduction to Database System

消除冗余,设计生成基本E-R图实例(续)
该厂销售管理分E-R图

图7.24 销售管理子系统的分E-R图
An Introduction to Database System

消除冗余,设计生成基本E-R图实例(续)
该厂劳动人事管理分E-R图

图7.29 劳动人事管理的分E-R图
An Introduction to Database System

消除冗余,设计生成基本E-R图实例(续)
系统的基本E-R(图7.30)

某工厂管理信息系统的基本E-R图 An Introduction to Database System

消除冗余,设计生成基本E-R图实例(续)
集成过程,解决了以下问题:
? 异名同义,项目和产品含义相同 ? 库存管理中职工与仓库的工作关系已包含在劳动人事管理的部 门与职工之间的联系之中,所以可以取消 ? 职工之间领导与被领导关系可由部门与职工(经理)之间的领

导关系、部门与职工之间的从属关系两者导出,所以也可以取


An Introduction to Database System

验证整体概念结构
? 视图集成后形成一个整体的数据库概念结构,对该整体概
念结构还必须进行进一步验证,确保它能够满足下列条件:
? 整体概念结构内部必须具有一致性,不存在互相矛盾的表达
? 整体概念结构能准确地反映原来的每个视图结构,包括属性、 实体及实体间的联系 ? 整体概念结构能满足需要分析阶段所确定的所有要求

An Introduction to Database System

验证整体概念结构(续)
? 整体概念结构最终还应该提交给用户,征求用户和有关人
员的意见,进行评审、修改和优化,然后把它确定下来, 作为数据库的概念结构,作为进一步设计数据库的依据。

An Introduction to Database System

概念结构设计小结
?概念结构设计的步骤
? 抽象数据并设计局部视图

? 集成局部视图,得到全局概念结构
? 验证整体概念结构

?数据抽象
? 分类 ? 聚集 ? 概括
An Introduction to Database System

概念结构设计小结
?设计局部视图
? ⒈ 选择局部应用

? 2. 逐一设计分E-R图
? 标定局部应用中的实体、属性、码,实体间的联系

? 用E-R图描述出来

An Introduction to Database System

概念结构设计小结
?集成局部视图
? 1.合并分E-R图,生成初步E-R图

?消除冲突
– 属性冲突
– 命名冲突 – 结构冲突

? 2. 修改与重构

?消除不必要的冗余,设计生成基本E-R图
– 分析方法

– 规范化理论
An Introduction to Database System

第七章 数据库设计
7.1 数据库设计概述 7.2 需求分析

7.3 概念结构设计
7.4 逻辑结构设计

7.5 数据库的物理设计
7.6 数据库的实施和维护

7.7 小结
An Introduction to Database System

7.4 逻辑结构设计
?逻辑结构设计的任务
? 把概念结构设计阶段设计好的基本E-R图转换为与选用 DBMS产品所支持的数据模型相符合的逻辑结构

?逻辑结构设计的步骤
? 将概念结构转化为一般的关系、网状、层次模型

? 将转换来的关系、网状、层次模型向特定DBMS支持下 的数据模型转换
? 对数据模型进行优化
An Introduction to Database System

逻辑结构设计(续)

逻辑结构设计时的3个步骤

An Introduction to Database System

7.4 逻辑结构设计
7.4.1 E-R图向关系模型的转换 7.4.2 数据模型的优化 7.4.3 设计用户子模式

An Introduction to Database System

7.4.1 E-R图向关系模型的转换
?转换内容
?转换原则

An Introduction to Database System

E-R图向关系模型的转换(续)
?E-R图向关系模型的转换要解决的问题
? 如何将实体型和实体间的联系转换为关系模式 ? 如何确定这些关系模式的属性和码

?转换内容
? 将E-R图转换为关系模型:将实体、实体的属性和实体 之间的联系转换为关系模式。

An Introduction to Database System

E-R图向关系模型的转换(续)
实体型间的联系有以下不同情况 : (1)一个1:1联系可以转换为一个独立的关系模式,也可以 与任意一端对应的关系模式合并。
? ? 转换为一个独立的关系模式 与某一端实体对应的关系模式合并

(2)一个1:n联系可以转换为一个独立的关系模式,也可 以与n端对应的关系模式合并。
? ? 转换为一个独立的关系模式 与n端对应的关系模式合并
An Introduction to Database System

E-R图向关系模型的转换(续)
(3) 一个m:n联系转换为一个关系模式。
例,“选修”联系是一个m:n联系,可以将它转换为如下关系模式, 其中学号与课程号为关系的组合码:

选修(学号,课程号,成绩)

(4)三个或三个以上实体间的一个多元联系转换为一个关系 模式。
例,“讲授”联系是一个三元联系,可以将它转换为如下关系模式, 其中课程号、职工号和书号为关系的组合码: 讲授(课程号,职工号,书号)
An Introduction to Database System

E-R图向关系模型的转换(续)
(5)此外
? 同一实体集内部,实体间的联系,如学生和学生干部 ? 强实体和弱实体 ? 实体和子实体 如建筑和房间 如教室和教授、讲师、助教、实验员

An Introduction to Database System

E-R图向关系模型的转换(续)
(6)具有相同码的关系模式可合并
? 目的:减少系统中的关系个数,因为连接代价太大 ? 合并方法:将其中一个关系模式的全部属性加入到另 一个关系模式中,然后去掉其中的同义属性(可能同 名也可能不同名),并适当调整属性的次序

An Introduction to Database System

E-R图向关系模型的转换(续)
注意:
? 从理论上讲,1:1联系可以与任意一端对应的关系模式合并 ? 但在一些情况下,与不同的关系模式合并效率会大不一样。因此究竟应 该与哪端的关系模式合并需要依应用的具体情况而定。 ? 由于连接操作是最费时的操作,所以一般应以尽量减少连接操作为目标。

例如,如果经常要查询某个班级的班主任姓名,则将管理联系与教师关
系合并更好些。

An Introduction to Database System

7.4 逻辑结构设计
7.4.1 E-R图向关系模型的转换 7.4.2 数据模型的优化 7.4.3 设计用户子模式

An Introduction to Database System

7.4.2 数据模型的优化
? 得到初步数据模型后,还应该适当地修改、调整数据模型
的结构,以进一步提高数据库应用系统的性能,这就是数 据模型的优化 ? 关系数据模型的优化通常以规范化理论为指导

An Introduction to Database System

数据模型的优化(续)
? 优化数据模型的方法
? 确定数据依赖
? 按需求分析阶段所得到的语义,分别写出每个关系模式内部各属性
之间的数据依赖以及不同关系模式属性之间数据依赖

?

消除 冗余的联系
? 对于各个关系模式之间的数据依赖进行极小化处理,消除 冗余的 联系。

An Introduction to Database System

数据模型的优化(续)
? 确定所属范式
? ? 按照数据依赖的理论对关系模式逐一进行分析 考查是否存在部分函数依赖、传递函数依赖、多值依赖等

?

确定各关系模式分别属于第几范式

?

按照需求分析阶段得到的各种应用对数据处理的要求, 分析对于这样的应用环境这些模式是否合适
? 确定是否要对它们进行合并或分解。

注意:并不是规范化程度越高的关系就越优,一般说来,第 三范式就足够了
An Introduction to Database System

数据模型的优化(续)
例:在关系模式 学生成绩单(学号,英语,数学,语文,平均成绩) 中存在下列函数依赖: 学号→英语 学号→数学 学号→语文 学号→平均成绩

(英语, 数学, 语文)→平均成绩

An Introduction to Database System

数据模型的优化(续)
显然有: 学号→(英语,数学,语文) 因此该关系模式中存在传递函数信赖,是2NF关系 虽然平均成绩可以由其他属性推算出来,但如果应 用中需要经常查询学生的平均成绩,为提高效率, 仍然可保留该冗余数据,对关系模式不再做进一步 分解

An Introduction to Database System

数据模型的优化(续)
? 按照需求分析阶段得到的各种应用对数据处理的要求, 对关系模式进行必要的分解,以提高数据操作的效率 和存储空间的利用率
? 常用分解方法

? 水平分解 ? 垂直分解

An Introduction to Database System

数据模型的优化(续)
? 水平分解

?什么是水平分解
– 把(基本)关系的元组分为若干子集合,定义每个 子集合为一个子关系,以提高系统的效率

?水平分解的适用范围
– 满足“80/20原则”的应用

– 并发事务经常存取不相交的数据

An Introduction to Database System

数据模型的优化(续)
? 垂直分解 ?什么是垂直分解
– 把关系模式R的属性分解为若干子集合,形成若 干子关系模式

?垂直分解的适用范围
– 取决于分解后R上的所有事务的总效率是否得到 了提高

An Introduction to Database System

7.4 逻辑结构设计
7.4.1 E-R图向关系模型的转换
7.4.2 数据模型的优化 7.4.3 设计用户子模式

An Introduction to Database System

7.4.3 设计用户子模式
? 定义用户外模式时应该注重的问题
包括三个方面:
? (1) 使用更符合用户习惯的别名 ? (2) 针对不同级别的用户定义不同的View ,以满足系统对安全性的 要求。 ? (3) 简化用户对系统的使用

An Introduction to Database System

设计用户子模式(续)
[例] 关系模式产品(产品号,产品名,规格,单价,生产车间,生产负责 人,产品成本,产品合格率,质量等级),可以在产品关系上建立两 个视图:
为一般顾客建立视图:
产品1(产品号,产品名,规格,单价)

为产品销售部门建立视图:
产品2(产品号,产品名,规格,单价,车间,生产负责人)

? 顾客视图中只包含允许顾客查询的属性
? 销售部门视图中只包含允许销售部门查询的属性 ? 生产领导部门则可以查询全部产品数据 ? 可以防止用户非法访问不允许他们查询的数据,保证系统的安全性

An Introduction to Database System

逻辑结构设计小结
? 任务
? 将概念结构转化为具体的数据模型

? 逻辑结构设计的步骤
? 将概念结构转化为一般的关系、网状、层次模型

? 将转化来的关系、网状、层次模型向特定DBMS支持下的 数据模型转换
? 对数据模型进行优化 ? 设计用户子模式

An Introduction to Database System

逻辑结构设计小结
? E-R图向关系模型的转换内容
? E-R图向关系模型的转换原则

An Introduction to Database System

逻辑结构设计小结
? 优化数据模型的方法
1. 确定数据依赖 2. 对于各个关系模式之间的数据依赖进行极小化处理, 消除冗余的联系。 3. 确定各关系模式分别属于第几范式。 4. 分析对于应用环境这些模式是否合适,确定是否要对 它们进行合并或分解。 5. 对关系模式进行必要的分解或合并

An Introduction to Database System

逻辑结构设计小结
?设计用户子模式
1. 使用更符合用户习惯的别名

2. 针对不同级别的用户定义不同的外模式,以满足系统
对安全性的要求。

3. 简化用户对系统的使用

An Introduction to Database System

第七章 数据库设计
7.1 数据库设计概述 7.2 需求分析

7.3 概念结构设计
7.4 逻辑结构设计

7.5 数据库的物理设计
7.6 数据库的实施和维护

7.7 小结
An Introduction to Database System

7.5 数据库的物理设计
?数据库的物理设计
? 数据库在物理设备上的存储结构与存取方法称为数据 库的物理结构,它依赖于选定的数据库管理系统 ? 为一个给定的逻辑数据模型选取一个最适合应用环境

的物理结构的过程,就是数据库的物理设计

An Introduction to Database System

数据库的物理设计(续)
?数据库物理设计的步骤
? 确定数据库的物理结构,在关系数据库中主要指存取方法和 存储结构 ? 对物理结构进行评价,评价的重点是时间和空间效率 如果评价结果满足原设计要求,则可进入到物理实施阶段, 否则,就需要重新设计或修改物理结构,有时甚至要返回逻 辑设计阶段修改数据模型

An Introduction to Database System

数据库的物理设计(续)
数据库物理设计
确定数 据库的 物理结 构 评价数据 库的物理 结构

逻辑结 构设计

数据库 实施

逻辑 模型

物理 模型

An Introduction to Database System

7.5 数据库的物理设计
7.5.1 数据库物理设计的内容和方法
7.5.2 关系模式存取方法选择 7.5.3 确定数据库的存储结构 7.5.4 评价物理结构

An Introduction to Database System

7.5.1 数据库物理设计的内容和方法

?设计物理数据库结构的准备工作
? 对要运行的事务进行详细分析,获得选择物理数据库

设计所需参数
? 充分了解所用RDBMS的内部特征,特别是系统提供的

存取方法和存储结构

An Introduction to Database System

数据库的物理设计的内容和方法(续)
? 选择物理数据库设计所需参数
? 数据库查询事务
? 查询的关系 ? 查询条件所涉及的属性 ? 连接条件所涉及的属性 ? 查询的投影属性

? 数据更新事务
? 被更新的关系
? 每个关系上的更新操作条件所涉及的属性 ? 修改操作要改变的属性值
?

每个事务在各关系上运行的频率和性能要求
An Introduction to Database System

数据库的物理设计的内容和方法(续)

?关系数据库物理设计的内容
? 为关系模式选择存取方法(建立存取路径) ? 设计关系、索引等数据库文件的物理存储结构

An Introduction to Database System

7.5 数据库的物理设计
7.5.1 数据库物理设计的内容和方法
7.5.2 关系模式存取方法选择 7.5.3 确定数据库的存储结构 7.5.4 评价物理结构

An Introduction to Database System

7.5.2 关系模式存取方法选择
? 数据库系统是多用户共享的系统,对同一个关系要建立多
条存取路径才能满足多用户的多种应用要求 ? 物理设计的任务之一就是要确定选择哪些存取方法,即建 立哪些存取路径

An Introduction to Database System

关系模式存取方法选择(续)
?DBMS常用存取方法
? 索引方法
? 目前主要是B+树索引方法 ? 经典存取方法,使用最普遍

? 聚簇(Cluster)方法

? HASH方法

An Introduction to Database System

一、索引存取方法的选择
? 根据应用要求确定
? 对哪些属性列建立索引 ? 对哪些属性列建立组合索引 ? 对哪些索引要设计为唯一索引

An Introduction to Database System

索引存取方法的选择(续)
? 选择索引存取方法的一般规则
? 如果一个(或一组)属性经常在查询条件中出现,则考虑在这 个(或这组)属性上建立索引(或组合索引)

? 如果一个属性经常作为最大值和最小值等聚集函数的参数, 则考虑在这个属性上建立索引
? 如果一个(或一组)属性经常在连接操作的连接条件中出现, 则考虑在这个(或这组)属性上建立索引

? 关系上定义的索引数过多会带来较多的额外开销
? 维护索引的开销

? 查找索引的开销
An Introduction to Database System

二、聚簇存取方法的选择
?聚簇
? 为了提高某个属性(或属性组)的查询速度,把这个或这些 属性(称为聚簇码)上具有相同值的元组集中存放在连续的 物理块称为聚簇

An Introduction to Database System

聚簇存取方法的选择(续)
? 聚簇的用途
? 1. 大大提高按聚簇码进行查询的效率
例:假设学生关系按所在系建有索引,现在要查询信息系的所有学生名单。

? 信息系的500名学生分布在500个不同的物理块上时,至少要执行500次
I/O操作 ? 如果将同一系的学生元组集中存放,则每读一个物理块可得到多个满足 查询条件的元组,从而显著地减少了访问磁盘的次数

? 2. 节省存储空间
? 聚簇以后,聚簇码相同的元组集中在一起了,因而聚簇码值不必在每个 元组中重复存储,只要在一组中存一次就行了

An Introduction to Database System

聚簇存取方法的选择(续)
?聚簇的局限性
? 1. 聚簇只能提高某些特定应用的性能

? 2. 建立与维护聚簇的开销相当大
?对已有关系建立聚簇,将导致关系中元组移动其物理存 储位置,并使此关系上原有的索引无效,必须重建 ?当一个元组的聚簇码改变时,该元组的存储位置也要做 相应移动
An Introduction to Database System

聚簇存取方法的选择(续)
?聚簇的适用范围
? 1. 既适用于单个关系独立聚簇,也适用于多个关系组 合聚簇
例:假设用户经常要按系别查询学生成绩单,这一查询涉 及学生关系和选修关系的连接操作,即需要按学号连接这 两个关系,为提高连接操作的效率,可以把具有相同学号 值的学生元组和选修元组在物理上聚簇在一起。这就相当 于把多个关系按“预连接”的形式存放,从而大大提高连 接操作的效率。
An Introduction to Database System

聚簇存取方法的选择(续)
? 2. 当通过聚簇码进行访问或连接是该关系的主要应用,
与聚簇码无关的其他访问很少或者是次要的时,可以

使用聚簇。
?尤其当SQL语句中包含有与聚簇码有关的ORDER BY, GROUP BY,UNION,DISTINCT等子句或短语时,使 用聚簇特别有利,可以省去对结果集的排序操作

An Introduction to Database System

聚簇存取方法的选择(续)
? 设计候选聚簇
? ? ? 对经常在一起进行连接操作的关系可以建立聚簇 如果一个关系的一组属性经常出现在相等比较条件中,则该 单个关系可建立聚簇 如果一个关系的一个(或一组)属性上的值重复率很高,则此 单个关系可建立聚簇。即对应每个聚簇码值的平均元组数不 太少。太少了,聚簇的效果不明显

An Introduction to Database System

聚簇存取方法的选择(续)
? 优化聚簇设计
? 从聚簇中删除经常进行全表扫描的关系; ? 从聚簇中删除更新操作远多于连接操作的关系;

? 不同的聚簇中可能包含相同的关系,一个关系可以在某一个聚簇中,
但不能同时加入多个聚簇
– 从这多个聚簇方案(包括不建立聚簇)中选择一个较优的,即在这个 聚簇上运行各种事务的总代价最小

An Introduction to Database System

三、HASH存取方法的选择
? 选择HASH存取方法的规则
? 当一个关系满足下列两个条件时,可以选择HASH存取方法 ?该关系的属性主要出现在等值连接条件中或主要出现在相 等比较选择条件中 ?该关系的大小可预知,而且不变; 或 该关系的大小动态改变,但所选用的DBMS提供了动态 HASH存取方法

An Introduction to Database System

7.5 数据库的物理设计
7.5.1 数据库物理设计的内容和方法
7.5.2 关系模式存取方法选择 7.5.3 确定数据库的存储结构 7.5.4 评价物理结构

An Introduction to Database System

7.5.3 确定数据库的存储结构
?确定数据库物理结构的内容
? 1. 确定数据的存放位置和存储结构
? 关系 ? 索引 ? 聚簇

? 日志
? 备份

? 2. 确定系统配置
An Introduction to Database System

1. 确定数据的存放位置
?确定数据存放位置和存储结构的因素
? 存取时间 ? 存储空间利用率 ? 维护代价 这三个方面常常是相互矛盾的 例:消除一切冗余数据虽能够节约存储空间和减少维 护代价,但往往会导致检索代价的增加 必须进行权衡,选择一个折中方案

An Introduction to Database System

确定数据的存放位置(续)
?基本原则
? 根据应用情况将

?易变部分与稳定部分分开存放
?存取频率较高部分与存取频率较低部分,分开存放

An Introduction to Database System

确定数据的存放位置(续)
例:
?数据库数据备份、日志文件备份等由于只在故障恢复时 才使用,而且数据量很大,可以考虑存放在磁带上 ?如果计算机有多个磁盘或磁盘阵列 ,可以考虑将表和索 引分别放在不同的磁盘上,在查询时,由于磁盘驱动器 并行工作,可以提高物理I/O读写的效率 ?可以将比较大的表分别放在两个磁盘上,以加快存取速 度,这在多用户环境下特别有效 ?可以将日志文件与数据库对象(表、索引等)放在不同 的磁盘以改进系统的性能
An Introduction to Database System

2. 确定系统配置
? DBMS产品一般都提供了一些存储分配参数
? 同时使用数据库的用户数 ? 同时打开的数据库对象数 ? 内存分配参数 ? 使用的缓冲区长度、个数 ? 存储分配参数 ? …….

An Introduction to Database System

7.5 数据库的物理设计
7.5.1 数据库物理设计的内容和方法
7.5.2 关系模式存取方法选择 7.5.3 确定数据库的存储结构 7.5.4 评价物理结构

An Introduction to Database System

7.5.4 评价物理结构
?评价内容
? 对数据库物理设计过程中产生的多种方案进行细致的

评价,从中选择一个较优的方案作为数据库的物理结


An Introduction to Database System

评价物理结构(续)
?评价方法(完全依赖于所选用的DBMS )
? 定量估算各种方案
? 存储空间 ? 存取时间

? 维护代价

? 对估算结果进行权衡、比较,选择出一个较优的合理的 物理结构

? 如果该结构不符合用户需求,则需要修改设计
An Introduction to Database System

第七章 数据库设计
7.1 数据库设计概述
7.2 需求分析

7.3 概念结构设计
7.4 逻辑结构设计

7.5 数据库的物理设计
7.6 数据库的实施和维护 7.7 小结
An Introduction to Database System

7.6数据库实施和维护
7.6.1 数据的载入和应用程序的调试
7.6.2 数据库的试运行 7.6.3 数据库的运行和维护

An Introduction to Database System

7.6.1 数据的载入和应用程序的调试

? 数据的载入 ? 应用程序的编码和调试

An Introduction to Database System

数据的载入
? 数据库结构建立好后,就可以向数据库中装载数据了。组
织数据入库是数据库实施阶段最主要的工作。

? 数据装载方法 ? 人工方法

? 计算机辅助数据入库

An Introduction to Database System

应用程序的编码和调试
?数据库应用程序的设计应该与数据设计并行进行

?在组织数据入库的同时还要调试应用程序

An Introduction to Database System

7.6数据库实施和维护
7.6.1 数据的载入和应用程序的调试
7.6.2 数据库的试运行 7.6.3 数据库的运行和维护

An Introduction to Database System

7.6.2 数据库的试运行
? 在原有系统的数据有一小部分已输入数据库后,就可以开始对 数据库系统进行联合调试,称为数据库的试运行
? 数据库试运行主要工作包括:
1)功能测试 ? 实际运行数据库应用程序,执行对数据库的各种操作,测试应用 程序的功能是否满足设计要求 ? 如果不满足,对应用程序部分则要修改、调整,直到达到设计要 求 2)性能测试 ? 测量系统的性能指标,分析是否达到设计目标 ? 如果测试的结果与设计目标不符,则要返回物理设计阶段,重新 调整物理结构,修改系统参数,某些情况下甚至要返回逻辑设计 阶段,修改逻辑结构
An Introduction to Database System

数据库的试运行(续)
强调两点:
? 分期分批组织数据入库
? 重新设计物理结构甚至逻辑结构,会导致数据重新入库。

? 由于数据入库工作量实在太大,费时、费力,所以应分期分批地组织数 据入库
? 先输入小批量数据供调试用 ? 待试运行基本合格后再大批量输入数据 ? 逐步增加数据量,逐步完成运行评价

? 数据库的转储和恢复
? 在数据库试运行阶段,系统还不稳定,硬、软件故障随时都可能发生

? 系统的操作人员对新系统还不熟悉,误操作也不可避免
? 因此必须做好数据库的转储和恢复工作,尽量减少对数据库的破坏。
An Introduction to Database System

7.6数据库实施和维护
7.6.1 数据的载入和应用程序的调试
7.6.2 数据库的试运行 7.6.3 数据库的运行和维护

An Introduction to Database System

7.6.3 数据库的运行与维护
? 数据库试运行合格后,数据库即可投入正式运行。 ? 数据库投入运行标志着开发任务的基本完成和维护工

作的开始
? 对数据库设计进行评价、调整、修改等维护工作是一 个长期的任务,也是设计工作的继续和提高。 ? 应用环境在不断变化 ? 数据库运行过程中物理存储会不断变化

An Introduction to Database System

数据库的运行与维护(续)
? 在数据库运行阶段,对数据库经常性的维护工作 主要是由DBA完成的,包括:
1. 数据库的转储和恢复 2. 数据库的安全性、完整性控制 3. 数据库性能的监督、分析和改进

4. 数据库的重组织和重构造

An Introduction to Database System

数据库的运行与维护(续)
? 数据库的重组织和重构造
? 重组织的形式
? 全部重组织 ? 部分重组织
– 只对频繁增、删的表进行重组织

?

重组织的目标
? 提高系统性能

An Introduction to Database System

数据库的运行与维护(续)
? 重组织的工作
?按原设计要求
– 重新安排存储位置 – 回收垃圾 – 减少指针链

?数据库的重组织不会改变原设计的数据逻辑结构和物理
结构

An Introduction to Database System

数据库运行与维护(续)
? 数据库重构造

根据新环境调整数据库的模式和内模式
– 增加新的数据项
– 改变数据项的类型 – 改变数据库的容量

– 增加或删除索引
– 修改完整性约束条件

An Introduction to Database System

第七章 数据库设计
7.1 数据库设计概述 7.2 需求分析

7.3 概念结构设计
7.4 逻辑结构设计

7.5 数据库的物理设计
7.6 数据库的实施和维护

7.7 小结
An Introduction to Database System

7.7 小结
?数据库的设计过程
? 需求分析 ? 概念结构设计 ? 逻辑结构设计 ? 物理设计

? 实施和维护

An Introduction to Database System

小结(续)
?数据库各级模式的形成
? 数据库的各级模式是在设计过程中逐步形成的 ? 需求分析阶段综合各个用户的应用需求(现实世界的 需求) ? 概念设计阶段形成独立于机器特点、独立于各个DBMS 产品的概念模式(信息世界模型),用E-R图来描述

An Introduction to Database System

小结(续)
? 在逻辑设计阶段将E-R图转换成具体的数据库产品支持
的数据模型如关系模型,形成数据库逻辑模式。然后 根据用户处理的要求,安全性的考虑,在基本表的基 础上再建立必要的视图(VIEW)形成数据的外模式 ? 在物理设计阶段根据DBMS特点和处理的需要,进行物 理存储安排,设计索引,形成数据库内模式

An Introduction to Database System

下课了。。。

休息一会儿。。。

An Introduction to Database System


更多相关文档:

数据库系统概论课程设计

数据库系统概论》课程设计实验报告书 安徽工业大学计算机学院 《数据库系统概论》课程设计 实验报告书 姓专班学 名业级号 夏小宅 计算机科学与技术 计 101 冷...

数据库系统概论实验设计答案

数据库系统概论实验设计答案数据库系统概论实验设计答案隐藏>> --第二数据库系统概论实验 ---创建数据库 --drop...

数据库系统原理与设计(第2版) 万常选版 第1章 数据库系统概论 课后答案

数据库系统原理与设计(第2版) 万常选版 第1章 数据库系统概论 课后答案_工学_高等教育_教育专区。数据库系统原理与设计(第2版),课后答案今日...

数据库系统概论课程设计

巩固数据库系统的基本概念、原理和技术,学会使用某 一开发工具进行数据库设计和...5 第二章 需求分析 2.1 任务陈述任务陈述:前台销售数据库的目的是收集、存储...

数据库系统概论_离线作业第2次

数据库系统概论》离线作业第 2 次作业内容 第六章习题 2、12 第七章习题 ...答: 重要性: 数据库概念设计是整个数据库设计的关键, 将在需求分析阶段所得到...

数据库系统概论课程设计

2.2 功能模块图及分模块功能描述 2.2.1 系统的功能模块图 2数据库系统概论》课程设计实验报告书 安徽工业大学计算机学院 个人信息系统 备忘录 个人财务 电子...

数据库系统概论复习考点

数据库系统概论复习考点_教育学_高等教育_教育专区。第一章 数据库系统 1. 数据...设计数据库表的时候,要同时考虑表的范式及响应用户两个方面 3. 掌握 1NF,2NF...

数据库系统概论

数据库系统概论第七章 62页 免费 数据库系统概论简答 1页 2下载券 数据库系统...管理和使用数据库系统的人员主要是:数据库管理员、系统分析员和数据库设计人员、...

数据库系统概论课程设计报告

数据库系统概论课程设计报告_管理学_高等教育_教育专区。数据库课程设计报告 数据...E-R 图 2 数据库课程设计报告 2.关系模型 学生(学号,姓名,地址,邮政编码,...

数据库系统概论第七章大作业题目

数据库系统概论第七章大作业题目 隐藏>> 1、高校教务管理系统用户的要求: 围绕...2、 图书管理系统用户的要求: 围绕学校图书馆管理的各阶段的主要任务设计一个...
更多相关标签:
艺术概论第七章 | 电工学概论第七章 | 商品学概论第七章ppt | 考试系统数据库设计 | 订单系统数据库设计 | 选课系统数据库设计 | 系统数据库设计 | 博客系统数据库设计 |
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com