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