Download presentation
Presentation is loading. Please wait.
1
第八章 数据库设计 8.1 数据库设计概述 8.2 需求分析 8.3 概念结构设计 8.4 逻辑结构设计 8.5 数据库的物理设计
第八章 数据库设计 8.1 数据库设计概述 8.2 需求分析 8.3 概念结构设计 8.4 逻辑结构设计 8.5 数据库的物理设计 8.6 数据库的实施和维护
2
8.1.1 数据库和信息系统 1.信息系统 是提供信息,辅助人们对环境进行控制和进行决策的系统。 2.数据
是信息系统的核心和基础。它把信息系统中大量的数据按一定的模型组织起来,提供存储,维护,检索数据的功能,使信息系统可以方便、及时、准确地从数据库中获得所需的信息。 8.1 数据库设计
3
3. 对于从事数据库设计的专业人员来讲,应该具备多方面的技术和知识 。主要有:
3. 对于从事数据库设计的专业人员来讲,应该具备多方面的技术和知识 。主要有: 数据库的基本知识和数据库设计技术 计算机科学的基础知识和程序设计的方法和技巧 软件工程的原理和方法 8.1.1 应用领域的知识 数据库和信息系统 8.1.2 数据库设计的特点 1. 数据库建设是硬件和软件的结合. 2. 要把结构(数据)设计和行为(处理)设计密切结合起来。
4
8.1.3 数据库设计方法简述 1. 新奥尔良(New Orleans)方法。它将数据库设计分为四个阶段: 需求分析(分析用户要求)
概念设计(信息分析和定义) 逻辑设计(设计实现) 物理设计(物理数据库设计) 8.1 2. 基于E-R模型的数据库设计方法 3. 基于3NF(第三范式)的设计方法. 数据库设计 4. 基于抽象语法规范的设计方法. 5. 数据库设计工具:计算机辅助软件工程(Computer Aided Software Engineering,简称CASE)
5
8.1.4 数据库设计的基本步骤 分为六个阶段: 需求分析 概念结构设计 逻辑结构设计 物理结构设计 数据库实施 数据库运行和维护
1. 需求分析阶段: 数据库设计的基本步骤 进行数据库设计首先必须准确了解与分析用户需求(包括数据与处理)。 2. 概念结构设计阶段: 概念结构设计是整个数据库设计的关键,主要是E—R图的绘制。
6
编制与调试应用程序,组织数据入库,并进行试运行。
3. 逻辑结构设计阶段: E—R图转换为关系模型 。 4. 数据库物理设计阶段: 包括存储结构和存取方法。 8.1.4 5. 数据库实施阶段: 数据库设计的基本步骤 编制与调试应用程序,组织数据入库,并进行试运行。 6.数据库运行和维护阶段: 进行评价,调整与修改。 本节结束
7
8.2 需求分析 8.2.1 需求分析的任务 调查的重点是“数据”和“处理”,通过调查,收集与分析,获得用户对数据库的如下要求:
8.2 需求分析 8.2.1 需求分析的任务 调查的重点是“数据”和“处理”,通过调查,收集与分析,获得用户对数据库的如下要求: 1.信息要求。 2.处理要求。 3.安全性与完整性要求。 8.2.2 需求分析的方法 8.2 需求分析 1. 调查用户需求的具体步骤:
8
(3)在熟悉了业务活动的基础上,协助用户明确对新系统的各种要求,包括信息要求,处理要求,安全性与完整性要求。 (4)确定新系统的边界。
(1)调查组织机构情况。 (2)调查各部门的业务活动情况。 (3)在熟悉了业务活动的基础上,协助用户明确对新系统的各种要求,包括信息要求,处理要求,安全性与完整性要求。 (4)确定新系统的边界。 2. 常用的调查方法: (1)跟班作业 (2)开调查会 (3)请专人介绍 (4)询问 (5)设计调查表请用户填写 (6)查阅记录 8.2.1 需求分析的方法
9
8.2.3 数据字典 数据字典是系统中各类数据描述的集合。 数据字典通常包括数据项,数据结构,数据流,数据存储和处理过程五个部分。
1. 数据项 数据项是不可再分的数据单位 数据项描述= 8.2 {数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系,数据项之间的联系} 需求分析
10
{数据结构名,含义说明,组成:{数据项或数据结构}}
2. 数据结构 反映了数据之间的组合关系。 数据结构描述= {数据结构名,含义说明,组成:{数据项或数据结构}} 3. 数据流 数据结构在系统内的传输的路径。 数据流描述= 8.2.3 {数据流名,说明,数据流来源,数据流去向, 组成:{数据结构},平均流量,高峰期流量} 数据字典 4. 数据存储 数据结构停留或保存的地方。
11
{数据存储名,说明,编号,输入的数据流,输出的数据流, 组成:{数据结构},数据量,存取频度,存取方式}
数据存储描述= {数据存储名,说明,编号,输入的数据流,输出的数据流, 组成:{数据结构},数据量,存取频度,存取方式} 5. 处理过程 一般用判定表或判定树来描述。 处理过程描述= {处理过程名,说明,输入:{数据流},输出:{数据流},处理:{简要说明}} 8.2.3 强调: 数据字典 设计人员应充分考虑到可能的扩充和改变,使设计易于更改,系统易于扩充。 必须强调用户的参与,这是数据库应用系统设计的特点。
12
举例数据字典的描述,列出“学生成绩管理系统”的部分数据字典条目。
数据项:学号 描述:唯一标识学生的编号 别名:无 类型: 字符串 长度:6位 取值范围:00000~99999 取值含义:前2位为入学年号,后3位为顺序编号 字符其他说明:学号不能重复 8.2.3 数据字典
13
其他说明:在系统功能扩充时可能增加定义项
数据结构名:学生 描述:包括学生的主要信息 别名:无 定义:学号 + 姓名 + 性别 + 年龄 + 专业 数据量:10000左右 峰值:随时,但经常在新生入学时期 其他说明:在系统功能扩充时可能增加定义项 8.2.3 数据字典
14
数据流来源:“学生选修”处理 数据流去向:“学生选修”存储 组成:学号,课程号,成绩 频率: 1000次左右(平均流量:每天1000个)
数据流名:学生成绩查询 描述:系统处理的一个命令 别名: 无 数据流来源:“学生选修”处理 数据流去向:“学生选修”存储 组成:学号,课程号,成绩 频率: 1000次左右(平均流量:每天1000个) 峰值:每天10000个 随时,但经常在学期开学 其他说明:在系统功能扩充时可能增加种类 8.2.3 数据字典
15
数据存储:以“学生选课”为例 数据存储名:学生选课 说明:记录学生所选课程的成绩 编号:(无) 流入的数据流:选修信息,成绩信息 流出的数据流:选修信息,成绩信息 组成:学号,课程号,成绩 数据量:300000个记录 存取方式:随机存取 8.2.3 数据字典
16
处理过程:以“学生选修”为例 处理过程名:学生选课 说明:学生从可选修的课程中选出课程 输入数据流:学生,课程 输出数据流:学生选修 处理:每学期学生都可以从公布的选修课程中选修自己愿意选修的课程,选课时有些选修课有先修课程的要求,还要保证选修课的上课时间不能与该生必修课时间相冲突,每个学生四年内的选修课门数不能超过30门。 8.2.3 数据字典
17
举例:ER图 数据流图 创建实体联系图 (1) 在需求收集的过程中,要求客户列出应用软件或业务过程涉及到的“事物”,将其演化成数据对象; (2) 一次考虑一个对象,分析员和客户定义这个对象和其他对象之间是否存在连接; (3) 如果存在连接,应创建一个或多个关系; (4) 对每一个关系,确定其关联类型; (5) 重复步骤(2)到步骤(4),直到定义了所有关系。 (6) 定义每个实体的属性; (7) 形式化并复审实体关系图; (8) 重复步骤(1)到(7),直到数据建模完成。 8.2.3 数据字典
18
举例分析: * 实体:学生、课程。 * 实体属性定义: 学生:学号、姓名、性别、年龄、专业 课程:课程编号、课程名称、课程学分 选修:学号、课程编号、分数
8.2.3 数据字典
19
* 实体联系图 ER图: 首先分析“学生成绩管理系统”的用户要求,找出该系统应该包括的实体。教务人员虽然是系统的用户,但其信息与系统处理无关,因此不用作为实体。接着,我们分析这些实体之间的关联关系。从实际情况得知,一个学生可以选多门课程,一门课程也可以有多个学生选修,但每个学生选一门课程必须有一个成绩。根据上述分析,我们得到如图所示的实体联系图。 学生 课程 选修 m 成绩 n 8.2.3 数据字典
20
创建数据流模型 通常,数据流图是分层绘制的,整个过程反映了自顶向下进行功能分解和细化的分析过程。顶层(也称第0层)DFD用于表示系统的开发范围,以及该系统与周围环境的数据交换关系;最底层DFD代表了那些不可进一步分解的"原子加工";中间层DFD是对上一层父图的细化,其中的每一个加工可以继续细化,中间层次的多少由系统的复杂程度决定。 (1) 第0层DFD将整个系统表示成一个加工; (2) 确定并标记主要的输入和输出; (3) 分离出下一层中的加工、数据对象和存储,并对其进行细化,一次细化一个加工; (4) 标记所有加工和箭头; (5) 重复步骤(3)和(4),直到所有的加工只执行一个简单的操作,可以很容易地用程序实现。 8.2.3 数据字典
21
* 第0层DFD图 教务人员维护学生信息和课程信息,并登录学生的选课成绩;学生查询自己的成绩单。
举例分析: * 第0层DFD图 教务人员维护学生信息和课程信息,并登录学生的选课成绩;学生查询自己的成绩单。 绘制第0层DFD的时候,将整个系统看成一个加工,然后找出作用于该加工的外部实体,以及相应的数据输入和输出。对于"学生成绩管理系统"而言,整个系统就是一个加工"学生成绩管理"。从用户的需求描述可知,"教务人员"是数据的源点,"学生"是数据的终点。另外,教务人员需要录入学生信息、课程信息和成绩,说明"学生信息"、"课程信息"和"成绩"是数据流;同样,"查询请求"和"查询结果"也是数据流。根据上述分析,得到如图所示的第0层DFD。 8.2.3 数据字典
22
8.2.3 第0层DFD图 数据字典
23
对第0层DFD图中的一个加工“学生成绩管理”进行展开。
绘制1层数据流图时,细化第0层的加工"学生成绩管理",从而描述系统的主要功能。从第0层DFD得知,"学生信息"是教务人员需要录入的一个信息,因此加入录入学生信息",同样得到"录入课程信息"、"登记成绩"两个加工。另外,数据流"查询请求"和"查询结果"应该由加工"查询成绩"来完成。这样,我们用"录入学生信息"、"录入课程信息"、"登记学生成绩"和"查询学生成绩"四个加工代替第0层的"学生成绩管理",同时增加这些数据流对应的数据存储,即"学生"、"课程"和"成绩",最后得到如图所示的第1层DFD。 8.2.3 数据字典
24
8.2.3 数据字典 第1层DFD图
25
对第1层DFD图中的一个加工“查询学生成绩”进行展开。
为了继续进行分解,我们分析第1层DFD中的加工"查询学生成绩"。学生查询成绩时需要提供合法性检查,因此,"查询学生成绩"可以分解为"合法性检查"和"查询成绩"两个处理步骤,从而形成如图所示的第2层DFD。 8.2.3 数据字典
26
8.2.3 数据字典 第2层DFD图
27
根据以上实例和经验,绘制数据流图应当遵循以下原则: (1) 分层时,子图的输入、输出数据流必须和父图中相应加工的输入、输出数据流一致; (2) 加工的编号应该唯一且具有层次性; (3) 加工不应该只有输入或只有输出,通常既有输入又有输出; (4) 数据流图不应反映处理的顺序; (5) 加工之间应通过数据存储进行通信,避免从一个加工直接流到另一个加工; (6) 数据应通过加工进行流动,避免从一个数据存储直接流到另一个数据存储; (7) 数据流图中所有元素的命名应当对客户有意义,且与业务相关; (8) 不要在一个图中绘制7个以上的加工,否则难于绘制和理解。 8.2.3 数据字典 本节结束
28
8.3 概念结构的设计 8.3.1 概念结构 概念结构的主要特点: 1. 能真实,充分地反映现实世界,包括事物和事物之间的联系
2. 易于理解 3. 易于更改 4. 易于向关系,网状,层次等各种数据模型转换 8.3 8.3.2 概念结构设计的方法与步骤 概念结构设计 设计概念结构通常有四类方法: 自底向上 自顶向下 逐步扩张 混合策略
29
其中最经常用的策略是:自顶向下地进行需求分析,自顶向上地设计概念结构。
● 自顶向下 需求 全局概念模式 8.3.1 概念模式 …… 概念模式 概念结构 …… …… …… 概念模式 概念模式 … 概念模式 概念模式
30
… …… 子需求 子需求 子需求 子需求 概念模式 概念模式 概念模式 概念模式 概念模式 概念模式 概念模式 自底向上 8.3.1
概念结构 概念模式
31
逐步扩张 核心需求 需求 核心概念 模式 全局概念 模式 8.3.1 … 概念结构
32
混合策略 需求 需求 需求 需求 需求 需求 需求 概念模式 概念模式 概念模式 概念模式 概念模式 概念模式 全局概念模式 8.3.1
概念结构 概念模式 概念模式 全局概念模式
33
定义某一类概念作为现实世界中一组对象的类型。
8.3.2 数据抽象与局部视图设计 概念结构是对现实世界的一种抽象。 一般有三种抽象: 分类(Classification) 定义某一类概念作为现实世界中一组对象的类型。 聚集(Aggregation) 8. 3 定义某一类型的组成成分。 概念结构设计 概括(Generalization) 定义类型之间的一种子集联系。
34
原E-R 模型不具有概括,这里对E-R 模型作了扩充,允许定义超类实体型和子类实体型。并用双竖边的矩形框表示子类,用直线加小圆圈表示超类-子类的联系。
学生 “is subset of” 8.3.2 数据抽象与局部视图设计 本科生 研究生 子类 利用抽象机制对需求分析阶段收集到的数据进行分类、组织(聚集),形成实体、实体的属性、标识实体的码,确定实体之间的联系类型(1 :1 、1 :n 、 m :n),设计分E-R图。
35
为了简化E-R图的处置,现实世界的事物能作为属性对待的,尽量作为属性对待。
具体做法: 选择局部应用 局部应用作为设计分E-R图的出发点。 2.逐一设计分E-R图 为了简化E-R图的处置,现实世界的事物能作为属性对待的,尽量作为属性对待。 8.3.2 数据抽象与局部视图设计 (1)作为“属性”,不能再具有需要描述的性质。 “属性”必须是不可分的数据项,不能包含其他属性。 (2)“属性”不能与其它实体具有联系,即E-R图中所表示的联系是实体之间的联系。
36
例1:职工是一个实体,职工号,姓名,年龄是职
工的属性。职称如果没有与工资、福利挂钩、换句话说,没有需要进一步描述的特性,可以作为职工实体的属性。但如果不同的职称有不同的工资,住房标准和不同的附加福利,则职称作为一个实体看待就更恰当 。 8.3.2 职工 数据抽象与局部视图设计 职工号 姓名 年龄 职称
37
聘任 职工 职称 8.3.2 数据抽象与局部视图设计 附加福利 职工代码 房标准码 职工号 姓名 年龄 工资
38
例2:在医院中,一个人只能住在一个病房,病房号可以作为病人实体的一个属性。但如果病房还要与医生实体发生联系,即一个医生负责几个病房的病人的医疗工作,则病房应作为一个实体。
n 1 m 职工号 姓名 病房 医疗 住院号 姓名 1 医生
39
逐步集成,用累加的方式一次集成两个分E-R图。
视图集成可以有两种方式: 多个分E-R图一次集成。 逐步集成,用累加的方式一次集成两个分E-R图。 1. 合并分E-R图,生成初步E-R图 各分E-R图之间的冲突主要有三类: 8.3.2 属性冲突 命名冲突 结构冲突 数据抽象与局部视图设计 解决方法是根据应用的语义对实体联系的类型综合或调整。 2. 消除不必要的冗余,设计基本E-R图 消除冗余主要采用分析方法。 用规范化理论来消除冗余。 本节结束
40
8.4 逻辑结构设计 设计逻辑结构时一般要分三步进行: 将概念结构(E-R图)转换为一般的关系、网状、层次模型;
将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换; 对数据模型进行优化。 8.4.1 E-R图向关系模型的转换 (第二章已讲) 8.4.2 数据模型的优化 8.4 逻辑结构设计 确定数据依赖。 对于各个关系模式之间的数据以来进行极小化处理,消除冗余的联系。 按照数据依赖的理论的理论对关系模式逐一进行分析。
41
4. 按照需求分析阶段得到的处理要求,进行合并或分解。 5. 对关系模式进行必要的分解。
5. 对关系模式进行必要的分解。 结合DBMS的特点,设计用户的外模式。 使用更符合用户习惯的别名。 可以对不同级别的用户定义不同的View,以保证系统的安全性。 简化拥护对系统的使用 。 8.4 逻辑结构设计 本节结束
42
8.5 数据库的物理设计 1. 数据库的物理设计通常分两步: (1)确定数据库的物理结构,在关系数据库中主要指存取方法和存取结构;
(2)对物理结构进行评价,评价的重点是时间和空间效率。 2. 数据库的物理设计的内容和方法 : 8.5 没有通用的物理设计可以遵循,一般原则是: 数据库的物理设计 事务响应时间小 存储空间利用效率高 事务吞吐率大 本节结束
43
8.6 数据库的实施和维护 1. 数据的载入和应用程序的调试 数据库实施阶段包括两项重要的工作 : 数据的载入, 应用程序的编码和调试。
2. 数据库的试运行 在原有系统的数据有一小部分已输入数据库后,就可以开始对数据库系统进行联合调试,这又称为数据库的试运行。 8.6 数据库的实施和维护 3. 数据库的运行和维护 数据库运行合格后,数据库开发工作就基本完成,即可投入正式运行了。 在数据库运行阶段,对数据库经常性的维护工作主要是由DBA完成的 。 本节结束
44
本章主要讨论数据库设计的方法和步骤,通过实例,详细介绍了数据库设计各个阶段的目标、方法、应注意的事项.
小结 本章主要讨论数据库设计的方法和步骤,通过实例,详细介绍了数据库设计各个阶段的目标、方法、应注意的事项. 1. 概念结构的设计 2. 逻辑结构的设计
45
作 业 P 234 本章结束
46
Click to edit company slogan .
Thank You ! Click to edit company slogan .
Similar presentations