第三章 数据库设计
数据库设计概述
数据库的生命周期
- 数据库分析与设计阶段:
- 需求分析;
- 概念设计;
- 逻辑设计;
- 物理设计;
- 数据库实现与操作阶段:
- 实现;
- 操作与监督;
- 修改与调整;
数据库设计的目标
- 满足应用功能需求:增(存)、删、改、查(取);
- 良好的数据库性能:
- 数据的高效率存取和空间的节省;
- 共享性、完整性、一致性、安全保密性;
数据库设计的内容
- 数据库 结构 设计(静态的):
- 数据库 概念 结构设计;
- 数据库 逻辑 结构设计;
- 数据库 物理 结构设计;
- 数据库 行为 设计(动态的):
- 功能 设计;
- 事务 设计;
- 程序 设计;
数据库设计的方法
- 直观设计法:最原始的数据库设计方法;
- 规范设计法:
- 新奥尔良设计方法:需求分析、概念结构设计、逻辑结构设计、物理结构设计;
- 基于 E-R模型 的数据库设计方法;
- 基于 第三范式 的设计方法,是一类结构化设计方法;
- 计算机辅助设计法:辅助软件工程工具;
数据库设计的特点
行为设计和结构设计的 分离。
数据库设计的过程(简答)
- 需求分析;
- 内容设计:结构设计 + 行为设计;
- 数据库实施:加载数据库数据 + 调试运行运用程序;
- 数据库运行与维护;
数据库设计的基本步骤
- 需求分析:数据库设计的 起点;
- 概念结构设计;
- 逻辑结构设计;
- 物理结构设计;
- 数据库实施;
- 数据库运行和维护;
需求分析
目标:是了解与分析用户的信息及应用处理的要求,并将结果按照一定格式整理而形成需要 分析报告。
需求分析是 概念设计、逻辑设计、物理设计、数据库建立与维护 的依据。
需求分析的 步骤:
- 确定数据库范围;
- 分析数据应用过程;
- 收集和分析数据;
- 编写需求分析报告;
确定数据库范围
数据库的 第一项工作:(简答)
- 有效地利用计算机设备及数据库系统的潜在能力;
- 提高数据库的应变能力;
- 避免应用过程中对数据库做太多或太大的修改;
- 延长数据库的生命周期;
应用过程分析
了解并分析数据与数据处理间的关系:
- 用到哪些数据;
- 数据使用的顺序;
- 对数据作何处理和处理的策略以及结果;
应用过程分析的结果是数据库结构设计的 重要依据。
收集和分析数据
任务:是了解并分析数据的组成格式及操作特征,每个数据元素的语义及关系等,并将他们收集起来整理归档。
- 静态结构:不施加 应用操作与其上时数据的 原始状况;
- 数据分类表;
- 数据元素表;
- 动态结构:将应用操作 施加 于数据之上后数据的状况;
- 任务分类表;
- 数据特征操作表;
- 数据约束:使用数据时的特殊要求;
- 数据的安全保密性;
- 数据的完整性;
- 响应时间;
- 数据恢复;
静态结构的 数据分类表:用于数据的总体描述
数据ID | 数据名 | 用途 | 主人 | 用户 | 来源 | 去向 | 存档时间 | 数据量 |
---|
可通过【数据ID】进行联想
静态结构的 数据元素表:指通常意义下的数据项或属性
数据ID | 数据元素ID | 元素名 | 意义 | 类型 | 长度 | 算法 | 备注 |
---|
可通过【数据元素ID】进行联想
动态结构的 任务分类表:一个任务指为完成某一个特定处理功能的相对独立的 操作序列
任务ID | 名称 | 功能 | 类型 | 主人 | 用户 | 执行日期 | 频率 | 操作过程 | 备注 |
---|
可通过【任务ID】进行联想
动态结构的 数据特征操作表:用以描述 任务和数据 之间的关系,它包括不同任务对数据执行不同操作的频率
任务ID | 数据ID | 建立 | 查询 | 插入 | 修改 | 删除 | 数据量 |
---|
可通过【任务ID】+【数据ID】进行联想
编写需求分析报告
编写需求分析报告的 内容:
- 数据库的应用功能目标;
- 标明不同用户视图范围;
- 应用处理过程需求说明,包括:数据流程图、任务分类表、数据操作特征表、操作过程说明书;
- 数据字典:是数据库系统中存储三级结构定义的数据库,通常指的是数据库系统中各类数据详细描述的集合。功能是存储和检索各种数据描述,即元数据。包括数据分类表、数据元素表和各类原始资料;
- 数据量;
- 数据约束;
概念结构设计
概念结构设计的 任务:
在需求分析中产生的需求分析报告的基础上,按照特定的方法设计满足应用需求的用户信息结构。
概念结构设计的 方法:
- 实体分析法(自顶向下法);
- 属性综合法(自底向上法);
概念模型(自顶向下),独立于任何软件和硬件,主要目标:最大限度的满足应用需求。
逻辑结构设计
目标:将概念模型转换为等价的、并为特定DBMS所支持数据模型的结构。
数据库的逻辑模型:
- 层次 数据模型;
- 网状 数据模型;
- 关系 数据模型;
逻辑结构设计的 步骤:
- 模型转换 是指将概念模型等价地转换为特定DBMS支持的关系模型、网状模型或层次模型表示;
- 子模型设计 的目标是抽取或导出模式的子集,以构造不同用户使用的局部数据逻辑结构;
- 应用程序设计说明 的目的是为可实际运行的应用程序设计提供依据与指导,并作为设计评价的基础;
- 设计评价 的任务是分析并检验模式及子模式的正确性与合理性;
物理结构设计
具体任务主要是确定数据库在 存储设备 上的 存储结构 及 存取方法。
因DBMS的不同还可能包括 建立索引、聚集、物理块的大小、缓冲区的个数及大小、数据压缩的选择 等。
数据库实施
数据库实施的 步骤:
- 加载数据:收集、分类、整理、校验、输入等;
- 应用程序设计;
- 数据库试运行,好处:
- 有利于工作人员掌握并熟悉系统;
- 有利于正式运行时避免人为的操作不当等损害;
数据库运行与维护
目标:保证数据库的正常运行。
系统维护中 最困难 的工作是 数据库重组与重构。
关系数据库设计方法
概念模型的表示方法
即 E-R 图 的表示方法:
- 矩形 表示实体型;
- 椭圆 表示属性;
- 棱形 表示联系;
联系 可以有 属性;
概念结构设计方法
两个 实体间的关系:
- 一对一:1:1;
- 一对多:1:N;
- 多对多:M:N;
单个 实体间的关系:
- 一对多:1:N;
三个 实体间的关系:
- 一对多:1:M:N;
- 多对多:M:N:P;
局部信息结构设计
- 确定局部范围:局部范围主要依据 需求分析报告 中标明的 用户视图范围 来确定;
- 选择实体:
- 数据分类表 是选择实体的直接依据;
- 实体选择的最大困难是如何区别 实体与属性;
- 选择实体的关键字属性:实体的存在依赖于其 关键字 的存在;
- 确定实体间的联系:数据间的联系必须在 概念设计 是确定;
- 确定实体的属性:属性分为 标识属性 和 说明属性;
逻辑结构设计方法
- 将E-R图转换为关系模型;
- 对关系数据模型进行优化;
- 设计面向用户的外模式;
E-R图向关系模型的转换
- 一个实体型转换为一个关系模式,实体的属性作为关系的属性,实体的码作为关系的码;
- 一个一对一联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并;
- 一个一对多联系可以转换为一个独立的关系模式,也可以与N端对应的关系模式合并;
- 一个多对多联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性;
- 三个或以上实体间的一个多元联系可以转换为一个关系模式;
- 具有相同码的关系模式可合并;
将上面的 E-R 图进行转换,得到的结果:
- 用户(用户ID,用户名,用户组ID,部门ID)
- 用户组(用户组ID,用户组名)
- 部门(部门ID,部门名)
- 权限(权限ID,权限名)
- 拥有(用户组ID,权限ID)
拥有 表中的 用户组ID + 权限ID 即作为 联合主键,也是 外键
数据模型的优化
- 确定各 属性 间的函数依赖关系;
- 对于各个关系模式之间的数据依赖进行极小化处理,消除 冗余 的联系;
- 判断每个关系模式的 范式,根据实际确定最合适的范式;
- 按照 需求分析 阶段得到的处理要求,分析这些模式对于这样的应用环境是否合适,确定是否要对某些模式进行合并或分解;
- 对关系模型进行必要的分解,提高 数据操作 的效率和 存储空间 的利用率;
设计用户子模式
- 可以通过视图机制在设计用户视图时,重新定义某些属性的别名,使其更符合用户的习惯,以方便使用;
- 可以对不同级别的用户定义不同的视图,以保证系统的安全性;
- 简化用户对系统的使用;
物理结构设计方法
- 建立索引(逻辑连接):
- 静态索引建立:预先 建立,适用于用户较多且周期较长的数据;
- 动态索引建立:临时 建立,适用于单独用户或临时性使用要求;
- 建立聚集(物理聚集):
- 聚集是将相关数据集中存放的 物理存储技术;
- 数据聚集结构的一种有效方式是 块结构方式;
- 数据聚集可在 一个或多个 关系上建立;