数据库设计:针对具体的应用场景,使用现有的DBMS构建适合的数据库模式,建立数据库及其应用系统,使之能有效地收集、存储、操作和管理数据,满足实际业务中各类用户的应用需求、信息需求和处理需求,这个过程称之为数据库设计。
1. 设计概述
1.1 数据库设计的两个阶段(生命周期)
1.1.1 数据库分析和设计阶段(需求分析、概念设计、逻辑设计、物理设计)
1.1.2 数据库实现和操作阶段(数据库的实现、操作和监督、修改和调整)
1.2 数据库设计的两个目标
1.2.1 满足应用功能需求(满足用户应用中的增、删、查、改)
1.2.2 良好的数据库性能(数据库具有高效的存取和对空间的节省,并具有良好的数据共享性、完整性、一致性及安全保密性)
1.3 数据库设计的两大内容
1.3.1 数据库结构设计(模式及子模式的设计[静态]:概念结构设计、逻辑结构设计、物理结构设计)
1.3.2 数据库行为设计(确定用户的行为和动作[动态])
1.4 数据库设计的三种方法
1.4.1 直观设计法(利用经验和技巧设计,无法保证质量,已被淘汰)
1.4.2 规范设计法
(1) 新奥尔良设计方法(分阶段)
把设计分为四个阶段(需求分析、概念结构设计、逻辑结构设计、物理结构设计),注重结构设计,而不考虑行为设计。
(2) 基于E-R模型的设计方法
在需求分析的基础上用 E-R图 构造反映实体之间联系的企业模式,然后将此模式转换为概念模式。
(3) 基于第三范式的设计方法(结构化)
在需求分析的基础上确定数据库的模式、属性与属性间的依赖关系,然后组织在一个关系模式中,再分析模式中不符合第三范式的关系,进行模式分解。
1.4.3 计算机辅助设计法(以人机交互的方式模拟规范化设计的方法,以此加速设计的过程)
1.5 数据库设计的过程
2. 基本步骤(需求分析、概念设计、逻辑设计、物理设计、数据库实施、数据库的运行和维护)
2.1 需求分析(确定数据库范围、应用过程分析、收集与分析数据、编写需求分析报告)
目的:了解与分析用户的信息与应用处理的要求,并将结果按一定格式整理而形成需求分析报告。
作用:该分析报告是后续概念设计、逻辑设计、物理设计、数据库建立与维护的依据。
2.1.1 确定数据库范围
(1) 首先考虑支持用户工作所必须的应用要求
(2) 确定数据库应支持的应用功能,充分满足用户的应用功能要求
(3) 尽可能考虑将来的应用需求,以提高数据库的应变能力
(4) 避免应用过程中对数据库做太多或太大的修改,从而提高数据库的生命周期
2.1.2 应用过程分析(可借助数据流程图等工具)
(1) 确定要用到的数据
(2) 数据的使用顺序
(3) 数据该作如何处理及处理的策略
(4) 处理的结果
2.1.3 收集与分析数据
目的:了解并分析数据的组成格式及操作特征,每个数据元素的语义及关系等。
可以下三个方面展开:
(1) 静态结构(不施加应用操作时数据的原始状况)
I. 数据分类表(数据的总体描述)
II. 数据元素表(数据项及属性)
(2) 动态结构(施加应用操作时数据的状况)——概念设计和物理设计的重要依据
I. 任务分类表(对数据流程的分析)
II. 数据操作特征表(描述任务与数据之间的关系)
(3) 数据约束(使用数据时的特殊要求)
I. 数据的安全保密性,其主要是针对各种不同类数据,谁拥有操作(增删查改)权限
II. 数据的完整性,其主要是指数据正确性的约束范围和验证准则,以及一致性保护的要求
III. 响应时间,其主要是指某些特定应用要求的数据存取时间限制
IV. 数据恢复,其主要是指转储及恢复的时机与范围等要求
2.1.4 编写需求分析报告
作用:应用需求的业务人员和数据库设计人员的“共同语言”,能准确地表达应用需求,可读性强,且无二义性,能为数据库的后续阶段设计提供全面、准确和详细的资料。
通常包含以下内容:
(1) 数据库的应用功能目标
(2) 标明不同用户的视图范围
(3) 应用处理过程需求说明
I. 数据流程图
II. 任务分类表
III. 数据操作特征表
IV. 操作过程说明书(根据以上三类内容,标明各任务的主要逻辑执行步骤)
(4) 数据字典(包括数据分类表、数据元素表和各类原始资料)
作用:存储和检索各种数据(元数据)描述。
(5) 数据量(根据数据分类表的静态数据量和操作特征表的动态数据量统计得出)
(6) 数据约束
2.2 概念结构设计
目的:在需求分析报告的基础上按照特定的方法设计满足应用需求的用户信息结构(概念模型),可完全不顾及具体的硬件和软件的限制,它是一个符合用户要求的趋于理想化的信息结构。
(1) 实体分析法(自顶向下:E-R模型)
(2) 属性综合法(自底向上)
步骤:属性分类、实体构成、联系的确定
2.3 逻辑结构设计
目的:将概念模型转换为等价的、并为特定DBMS所支持的数据模型(层次、网状、关系)的结构。
(1)需准备以下信息
I. 独立于特定DBMS的概念模型
II. 有关响应时间、安全保密性、数据完整性及恢复方面的要求说明,包括保持数据一致性的规则说明
III. 数据量及使用频率
IV. 特定DBMS特性,包括DBMS支持的数据模型及数据定义语言的说明
(2)需产出以下信息
I. 特定DBMS支持的概念模型(即模式)
II. 一个或多个外部视图(即子模式)
III. 物理设计说明(存入数据库的数据量、使用频率和响应时间要求)
IV. 程序设计说明(在需求分析的基础上,根据已完成的逻辑模型(模式),编制各程序名、执行逻辑步、存取数据的名、顺序和操作特征(增删查改)的说明)
(3)设计步骤
I. 应用程序设计说明:为可实际运行的应用程序设计提供依据与指导,并作为设计评价的基础。
II. 设计评价:分析并检验模式及子模式的正确性与合理性,通过程序设计指南中提交的程序执行逻辑步骤进行模拟,考核模式及子模式是否满足应用需求,并进一步估计数据容量及存取效率,为物理设计提供参考信息。
2.4 物理设计
目的:根据指定的逻辑结构,研究并构造物理结构的过程,具体包括确定数据库在存储设备上的存储结构及存取方法,可能还包括建立索引和聚集,以及物理块大小、缓冲区个数和大小、数据压缩的选择等。
2.5 数据库实施
(1) 加载数据
(2) 应用程序设计(随着数据库结构设计逐步进行,这样才能具有较高的稳定性和实用性)
(3) 数据库试运行
2.6 数据库运行和维护
难点:数据库重组与重构
重组:当空间利用率和存取效率下降时,利用DBMS提供的设施调整数据的存储位置,从而回收“碎片”,使有关联的数据尽可能靠近存放,达到提高空间利用率和数据存取效率的目的。
重构:修改部分逻辑结构或物理结构(设计阶段未考虑周到)。
3. 关系数据库设计方法
3.1 关系数据库设计过程与各级模式
3.2 概念结构的设计方法
步骤:建立局部信息结构→合成全局信息结构并优化(用E-R图作描述工具)
组成三要素:实体、实体的属性以及实体间的联系
3.2.1 E-R图的表示方法
实体型之间的联系类型:1:1、1:N、M:N
(1) 两个实体型之间的联系
(2) 两个以上的实体型之间的联系
(3) 单个实体型内的联系
3.2.2 局部信息结构设计
目的:根据需求分析报告中标明的用户视图范围建立满足应用需求的信息结构。
步骤:确定局部范围、选择实体、选择实体关键字、确定实体间的联系、确定实体的属性。
(1) 确定局部范围(需求分析报告中的用户视图范围(子模式范围))
(2) 选择实体(依据数据分类表选择实体;难点:区分实体与属性)
(3) 选择实体关键字(唯一标识实体)
(4) 确定实体间的联系(实体间能匹配)
(5) 确定实体的属性(属性分为标识属性和说明属性)
3.2.3 全局信息结构设计
目的:将所有局部信息结构合并为一个全面且准确的全局信息结构,避免或消除不同局部信息结构因合并导致的数据不一致,并尽可能增强数据共享性,控制数据的冗余。
冲突:属性冲突、命名冲突和结构冲突。
(1) 属性冲突:属性域(类型、取值范围、取值集合);属性取值单位。
(2) 命名冲突:同名异义;异名同义。
(3) 结构冲突:同一对象在不同的局部E-R图代表不同性质(实体、属性);同一实体在不同E-R图中属性个数或类型不一致;实体间的联系在不同的E-R图中的类型不一致。
优化步骤:相关实体类型合并、消除不必要的冗余属性、消除不必要的冗余联系。
3.3 逻辑结构的设计方法
目的:把概念设计阶段的E-R图转换为RDBMS支持的数据模型。
步骤:将E-R图转换为关系模型、对关系模型进行优化、设计面向用户的外模式。
3.3.1 E-R图向关系模型转换
目的:将实体、实体的属性以及实体间的联系转换为关系模型。
转换原则:
(1) 一个实体型可转换为一个关系模式
(2) 一个[1:1]实体联系可以转换为一个独立的关系模式,也可以任意一端的关系模式合并
(3) 一个[1:N]实体联系可以转换为一个独立的关系模式,也可以任意N端的关系模式合并
(4) 一个[M:N]实体联系可以转换为一个关系模式
(5) 三个或三个以上实体间的多元联系可以转换为一个关系模式
(6) 具有相同码的关系模式可以合并
3.3.2 数据模型的优化
目的:根据应用需要修改、调整数据模型的结构,以关系规范化理论为指导。
(1) 确定属性间的函数依赖关系
(2) 对各关系模式间的数据依赖进行极小化处理,消除冗余的联系
(3) 判断各关系模式的范式,根据实际需求选择合适的范式
(4) 根据需求分析阶段的数据处理要求,分析这些模式是否适合应用环境,确定是否进行模式分解或合并
(5) 对关系模式进行必要的分解,以提高数据操作的效率及空间的利用率
3.3.3 设计用户子模式
目的:根据局部应用需求,利用视图(View)设计更符合局部用户需要的外模式。
(1) 可根据用户习惯重新定义属性的别名
(2) 可对不同级别的用户定义不同的视图,保证系统的安全性
(3) 可对经常使用的复杂查询定义为视图,简化用户操作
3.4 物理结构设计方法
目的:通过对关系建立索引和聚集来实现与应用相关数据的逻辑连接和物理聚集,以改善对数据库的存取效率。
3.4.1 建立索引
注意:建立索引的对象应是插入、修改和删除操作较少的,但使用频率(查询)较高的。
(1) 静态索引(预先建立,适合多用户且使用周期长)
(2) 动态索引(临时建立,适合单独用户或临时需求)
3.4.2 建立聚集
说明:聚集时将数据集中存放的物理存储技术,借以提高I/O的数据命中率而改善存取速率。
注意:使用频率高、数据量大的数据才建立聚集,且修改操作应较少。