第七章 数据库设计
7.1 概述
1.数据库设计的基本步骤
数据库设计可以分为以下六个阶段
-
需求分析阶段
准别了解和分析用户的需求(包括数据与处理)。需求分析是整个设计过程的基础,觉定了在其上构建数据库的速度和质量。需求分析做不好可能会导致整个数据库设计返工重做 -
概念结果设计阶段
是整个过程的关键,通过对用户需求进行综合、归纳和抽象,形成一个独立于具体数据库的概念模型。 -
逻辑结构设计阶段
将概念结果转化为某个数据库管理系统所支持的数据模型,并优化 -
物理结构设计阶段
为逻辑结果模型选取一个最适用于应用环境的物理结构 -
数据库实施阶段
运用DBMS提供的数据库语言根据逻辑设计和物理设计的结果建立数据库,编写与调试程序,组织数据入库。 -
数据库运行和维护阶段
接下来,我们就要住个分析上述数据库设计的六个阶段
7.2 需求分析
数据库设计的第一个阶段是需求分析
1.需求分析的任务
需求分析的主要任务是分析数据库需要解决的问题。通过详细调查现实世界要处理的对象,充分了解原系统的工作概况。需要获得用户对数据库的以下要求:
- 信息要求:用户需要从数据库中获取的信息的内容和性质
- 处理需求:用户要完成的数据处理功能以及对处理的性能需求
- 安全性和完整性需求
2.需求分析的方法
进行需求分析的首要任务是调查清楚用户的实际要求,与用户达成共识。调查用户需求后,还需要进一步分析和表达用户的需求,**结构化分析(SA)**是一种简单实用的方法。SA从最上层的系统组织结构下手,自顶向下逐步分解来分析系统。
3.数据字典
数据字典是进行详细的数据收集和数据分析所获得的主要成果,是关于数据库中数据的描述。它在需求分析阶段建立,在数据库设计过程中不断的修改、充实和完善。数据字典一般包括以下内容:
数据项:
数据项是不可再分的数据单位,一般数据项的描述包括以下内容:
数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,和其他数据项的关系}
其中,“取值范围”,“和其他数据项的关系”定义了数据的完整性约束条件,是设计数据检验功能的关键,在后续需要设计键的时候十分关键。
数据结构:
数据结构反映了数据之间的组合关系,一个数据结构由若干个数据项或数据结构组成,内容一般如下:
数据结构描述={数据结构名,含义说明,组成:{数据项或数据结构}}
数据流
数据流是数据结构在系统捏传输的路径,数据流的描述通常包括以下内容:
数据流描述={数据流名,说明,数据流来源和去向,{数据结构},平均流量,高峰期流量}
数据存储
数据存储是数据结构停留或者保存的地方,也是数据流的来源和去向之一,不一定需要存储在数据库中,也可以是txt文档,甚至是纸质文档也行。
数据存储描述={数据存储名,说明,编号,输入数据流,输出数据流,{数据结构},数据量,存取频率,存取方式}
处理过程
处理过程的具体逻辑一般用判定表或者判定树描述,数据字典中只需要描述说明性信息,真正的处理过程不存储在数据字典中。
7.3 概念结构设计
将需求分析得到的用户需求抽象为信息结构(概念模型)就是概念结构设计的主要任务。
1.概念模型
在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结果,才能更好的实现这些需求。概念模型的特点是:
- 能够真实、充分反映真实世界事物和事物之间的联系
- 易于理解,可以用它和不熟悉计算机的用户小欢意见
- 易于修改,当需求发生变更的时候容易对概念模型进行修改和补充
- 易于向其他类型的数据模型转换
2.E-R模型
ER模型是十分著名的模型,包括实体、属性、实体之间的联系等。
两个实体型之间的联系可以分为以下三种:
- 一对一联系(1:1)
- 一对多联系(1:n)
- 多对多联系(m:n)
两个以上的实体型之间的联系
两个以上的实体型之间也存在一对一、一对多和多对多的联系,比如一门课程会有多本参考书,然后有多个教师任教,如下图:
单个实体型内的联系
同一个实体集合中的个实体之间也可以存在联系,比如职工实体型内具有领导和被领导的联系,也就是某一职工干部领导若干职工。一般的,将参与联系的实体型数目称为联系的度,N个实体型之间的联系度为N,称为N元联系。
E-R图
ER图提供了标识实体型、属性和联系的方法。实体使用矩形表示,属性用椭圆形表示,联系用棱形表示。具体例子如下:
ISA联系
使用er图的时候,可能会碰到某个实体型是某个实体型的子类型的情况,比如本科生是学生的子类型,则会使用ISA联系,语义为“本科生 is a 学生“。一般用三角形来表示。ISA联系描述了对一个实体型中的实体的分类方法,用于描述一个实体是另一个实体的子对象。ISA联系的一个重要性质是子实体会继承父实体的所有性质。ISA使用一个三角形来表示
ISA约束还有以下的分类:
不相交约束和可重叠约束
不相交约束描述父类中一个实体不能同时属于多个子类中的实体集合,比如一个学生不能即是本科生又是研究生,这意味着一个父类中的实体最多属于一个子类的实体集合,用ISA联系三角形符号内加一个“X”来表示。如果父类中一个实体能够同时属于多个子类的实体集,则称为可重叠约束。
基数约束
基数约束是对实体之间一对一、一对多和多对多关系的细化。实体型可以使用基数约束来说明实体型中任何一个实体在联系中出现的最少次数和最多次数。基数约束使用一个数对min…max表示实体的取值范围,具体例子如下:
学生和学生证之间只能有一对一的关系,而一个课程可能会有0到无穷个学生选修,一个学生必须选修20~30门选修课。
Part-of联系
Part-of联系又名部分联系,表明某个实体型是另一个实体型的一部分,比如说汽车和轮子两个实体,轮子实体是汽车实体的一部分。这又分为来那个黄总情况:一种是整体实体被破坏,部分实体仍然可以独立存在,称之为非独占的part-of联系;比如轮子可以独立存在,不一定要安装在汽车上。非独占的Part-of联系可以使用基数约束来表达。另外还有一种Part-of是独占联系,也就是整体实体如果遭到破坏,部分实体就不可以存在,那么这个实体被称为弱实体型
3.UML
表示ER图的方法有很多,使用同统一建模语言UML是其中一种方法。UML中的类对应ER图中的实体,但是不仅包含了对象的属性,还包含了对象的方法。UML描述ER图包含三个信息:实体型、实体的嘛、联系
7.4 逻辑结构设计
概念结构是独立于任何一种数据模型的信息结构,因此,逻辑结构设计的任务就是把概念结构设计阶段设计好的基本ER图转化为于选用数据库管理系统产品所支持的数据模型相符合的逻辑结构。
7.5 物理结构设计
为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构,这就是数据库的物理设计,这通常分为两步:
- 确定数据库的物理结果
- 对物理结构进行评价