第六章 数据库设计
学习重点:
- 数据库设计的基本步骤;
- 数据库设计各阶段的具体设计内容;
- 数据库设计各阶段的设计描述;
- 数据库设计各阶段的设计方法;
学习难点:
- E-R图的设计;
- 数据模型的优化;
- 设计理论与实际应用的结合;
6.1 数据库设计概述
数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效的存储数据,满足用户的应用需求。
6.1.1 数据库和信息系统
数据库是信息系统的核心和基础。
6.1.2 数据库设计的特点
数据库建设是硬件、软件和干件的结合(技术与管理的界面称之为“干件”)。
数据库设计应该与应用系统设计相结合
结构和行为分离设计。
6.1.3 数据库设计方法简述
手工试凑法和规范设计法
手工试凑法:设计质量与设计人员的经验和水平直接相关。难以保证工程质量。
规范设计法:手工设计方法,过程迭代和逐步求精。
6.1.4 数据库设计的基本步骤
6.1.4.1 需求分析阶段
准确了解与分析用户需求。
用户需求的收集和分析,结果得到数据字典描述的数据需求和数据流图描述的处理需求。
6.1.4.2 概念结构设计阶段
概念结构设计是整个数据库设计的关键,通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,可以用E-R图表示。
6.1.4.3 逻辑结构设计阶段
将概念结构转换为某个DBMS所支持的数据模型,并进行优化。
6.1.4.4 数据库物理设计阶段
为逻辑数据模型选取一个最适合应用环境的物理结构。
6.1.4.5 数据库实施阶段
运用DBMS提供的数据语言(例如SQL)及其宿主语言(例如C),根据逻辑设计和物理设计的结果:
建立数据库,组织数据入库,编制、调试应用程序,进行试运行。
6.1.4.6 数据库运行和维护阶段
6.2 需求分析
需求分析就是分析用户的需要与要求,需求分析是设计数据库的起点,要做到准确地反映用户的实际要求。
6.2.1 需求分析的任务
通过调查,充分了解原系统工作概况,明确用户的各种需求。
6.2.2 需求分析的方法
调查清楚用户的实际需求并进行初步分析,与用户达成共识,进一步分析与表达用户需求。
进一步分析与表达用户需求
常使用自顶向下的结构化分析方法(Structured Analysis,简称SA方法),从最上层的系统机构入手,采用逐层分解的方法分析系统,并用数据流图(DFD)和数据字典(DD)描述系统。
6.2.3 数据字典
数据流图表达了数据和处理过程的关系。系统中的数据则借助数据字典(Data Dictionary)来描述。
数据字典的内容包括有:数据项、数据结构、数据流、数据存储、处理过程。
数据项
数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系}。
数据结构
数据结构描述={数据结构名,含义说明,组成:{数据项或数据结构}}。
数据流
数据流描述={数据流名,说明,数据流来源,数据流去向,组成:{数据结构},平均流量,高峰期流量}。
数据存储
数据存储描述={数据存储名,说明,编号,流入的数据流,流出的数据流,组成:{数据结构},数据量,存取方式}
处理过程
处理过程描述={处理过程名,说明,输入:{数据流},输出:{数据流},处理:{简要说明}}。
6.3 概念结构设计
6.3.1 概念设计
需求分析阶段描述用户应用需求是现实世界的具体需求,将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计。
6.3.2 概念结构设计的方法与步骤
设计概念结构的四类方法:
自顶向下
首先定义全局概念结构的框架,然后逐步细化
自底向上
首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构。
逐步扩张
首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构。
混合策略
将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成油自底向上策略中设计的各局部概念结构。
6.3.3 数据抽象与局部视图设计
概念结构式对现实世界的一种抽象,三种常用的抽象分别是:分类、聚集、概括。
分类
它抽象了对象值与型之间的“is member of ”的语义,在E-R模型中,实体型就是这种抽象。
聚集
它抽象了对象内部类型和成分之间的“is part of”的语义,在E-R模型中若干属性的聚集组成了实体型,就是这种抽象。
概括
它抽象了类型之间的“is subset of”的语义,概括有一个很重要的性质:继承性。子类继承超类上定义的所有抽象。
局部视图设计
选择局部应用
一般以中层数据流图作为设计分E-R图的依据。
逐一设计分E-R图
6.3.4 视图的集成
各个局部视图即分E-R图建立好后,还需要对它们进行合并,集成为一个整体的数据概念结构即总E-R图。
视图集成的两种方式:一次集成、逐步积累式。
在合并过程中需要解决各类冲突。
6.4 逻辑结构设计
逻辑结构设计的任务是:概念结构式各种数据模型的共同急促,为了能够用某一DBMS实现用户需求,还必须将概念结构进一步转化成相应的数据模型,这正是数据库逻辑结构设计所要完成的任务。
逻辑结构设计的步骤:
将概念结构转化为一般的关系、网状、层次模型;将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换;最后对数据模型进行优化。
6.4.1 E-R图向关系模型的转换
E-R图由实体、实体的属性和实体之间的联系三个要素组成,关系模型的逻辑结构式一组关系模式的集合,将E-R图转换为关系模型:将实体、实体的属性和实体间的联系转换称关系模式。
转换原则:
- 一个实体型转换为一个独立关系模式;
- 一个1:1联系可以转换为一个独立关系模式,也可以与任意一端对应的关系模式合并;
- 一个1:n联系可以转换为一个独立关系模式,也可以与n端对应的关系模式合并;
- 一个m:n联系转换为一个独立关系模式;
- 三个或三个以上实体间的一个多元联系可以转换为一个关系模式;
- 具有相同码的关系模式可合并;
6.4.2 数据模型的优化
由于数据库逻辑设计的结果不是唯一的。得到初步数据模型后,还应该适当的进行修改、调整数据模型的结构,以进一步提高数据库应用系统的性能,这就是数据模型的优化,而关系数据模型的优化通常以规范化理论为指导。
6.4.3 设计用户子模式
使用更符合用户习惯的别名
针对不同级别的用户定义不同的外模式,以满足系统对安全性的要求
简化用户对系统的使用
6.5 数据库的物理设计
数据库在物理设备上的存储结构与存取方式称为数据库的物理结构,它依赖于给定的计算机系统。为一个给定的逻辑数据模型选取一个最合适应用环境的物理结构的过程,就是数据库的物理设计。
6.5.1 数据库的物理设计的内容和方法
设计物理存储结构的准备工作:充分了解应用环境,详细分析要运行的事物,以获得选择物理数据库设计所需参数;充分了解所用RDBMS的内部特征,特别是系统提供的存取方法和存储结构。
6.5.2 关系模式存取方法选择
数据库系统是多用户东i昂的系统,对同一个关系要建立多条存取路径才能满足多用户的多种应用要求,物理设计的第一个任务就是确定要选择那些存取方式,即建立哪些存取路径。
常用的存取方式:索引方法(目前最主要的是B+书索引方法)、聚簇(Cluster)索引、HASH方法。
索引方法适用于:当一个(组)属性经常作为查询条件、聚集函数、连接条件时。
聚簇索引适用于:经常在一起进行连接操作的关系,一个关系的一组属性常用于想等条件的比较、一个关系的一组属性上的值重复率很高。
HASH方法适用于:连接条件或相等比较条件中,关系大小可预知且不变,DBMS支持动态HASH存取方式。
6.5.3 确定数据库的存储结构
确定数据存放的位置和存储结构:关系、索引、聚簇、日志、备份。
确定系统配置:同时使用数据库的用户数、同时打开的数据库对象书、使用的缓冲区长度和个数、时间片大小、数据库的大小、装填因子、锁的数目...
6.5.4 评价物理结构
对数据库物理设计过程中产生的多种方案进行细致的评价,从中选择一个较优的方案作为数据库的物理结构。
6.6 数据库的实施和维护
6.6.1 数据的载入和应用程序的调试
数据载入
在数据库结构建立好后,就可以向数据库中装在数据了,组织数据入库是数据库实施阶段最主要的工作。装载的方法主要有:人工方法和计算机辅助数据入库。
应用程序的调试
数据库应用陈鼓的设计应该与数据设计并行进行。
6.6.2 数据库的试运行
应用程序调试完毕后,并且有一部分数据入库后,就可以开始数据库的试运行。
6.6.3 数据库的运行和维护
在数据库试运行结果复合设计目标后,数据库就可以真正投入运行了,数据库投入运行标志着开发任务的基本完成和维护工作的开始。