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