目录
5 . 5 数据库设计与建模
5.5.1数据库设计阶段
1 . 规划:为什么做?能不能做?
2 . 需求分析:做成什么样子?
3 . 概念设计:怎么做 - 概念 (用户)
4 . 逻辑设计:怎么做?-- 逻辑
5 . 物理设计:怎么做?-- 物理
5.5.2 实体联系模型到关系图
0. 三要素
1 . 联系的类型
2. E- -R 图的集成
3. E - R 图向关系模式的转换 (向关系型数据库的格式转换)
附录:
5 . 5 数据库设计与建模
数据库设计是指对一个给定的应用环境,提供:
- 一个确定:最优数据模型与处理模式的逻辑设计,
- 以及一个确定数据库存储结构与存取方法的物理设计,
- 建立起能反映现实世界信息和信息联系及满足用户数据要求和加工要求,以能够被某个 D B M S 所接受,
- 同时能实现系统目标,并有效存取数据的数据库。
5.5.1数据库设计阶段
基于数据库系统生命周期的数据库设计可分为如下5 个阶段:
规划、需求分析、概念设计、逻辑设计和物理设计。
1 . 规划:为什么做?能不能做?
规划阶段的主要任务是进行建立数据库的必要性及可行性分析,确定数据库系统在企业和信息系统中的地位,以及各个数据库之间的联系。有关系统规划方面的知识,将在第 9 章中详细介绍。
2 . 需求分析:做成什么样子?
需求分析的目标是通过调査研究,了解用户的数据和处理要求,并按一定格式整理形成需求说明书。需求说明书包括数据库所涉及的数据、数据的特征、使用频率和数据的估计,例如,数据名、属性及其类型 、主键属性、保密要求 、完 整性约束条件、更改要求、使用频率和数据量估计等。这些关于数据的数据称为元数据。
在设计大型数据库时,这些数据通常由数据字典来管理。用数据字典管理元数据,有利于避免数据的重复或電名,以保持数据的一致性。同时,有利于提高数据库设计的质量,减轻设计者的负担。有关需求分析的知识,将在第11章中详细介绍。
3 . 概念设计:怎么做 - 概念 (用户)
概念(Idea;Notion;Concept)是人类在认识过程中,从感性认识上升到理性认识,把所感知的事物的共同本质特点抽象出来,加以概括,是自我认知意识的一种表达,形成概念式思维惯性。在人类所认知的思维体系中最基本的构筑单位。
心理学上认为,概念是人脑对客观事物本质的反映,这种反映是以词来标示和记载的。概念是思维活动的结果和产物,同时又是思维活动借以进行的单元。表达概念的语言形式是词或词组。概念都有内涵和外延,即其涵义和适用范围。概念随着社会历史和人类认识的发展而变化。中华人民共和国国家标准GB/T15237.1-2000:“概念”是对特征的独特组合而形成的知识单元。德国工业标准2342将概念定义为一个“通过使用抽象化的方式从一群事物中提取出来的反映其共同特性的思维单位”。
概念设计也称为概念结构设汁,其任务是在需求分析阶段产生的需求说明书的基础上,按照特定的方法将它们抽象为一个不依赖于任何 D B M S 的数据模型,即概念模型。
概念模型使设计人员的注意力能够从复杂的实现细节中解脱出来,而只集中在最重要的数据的组织结构和处理模式上。为保证所设汁的概念模型能正确、完全地反映用户的数据及其相互关系,便于进行所要求的各种处理,在概念设计阶段中,可邀请用户参与。
在进行概念设计时,可先设计各个应用的视图,即各个应用所看到的数据及其结构,然后再进行视图集成,以形成一个单一的概念数据模型。
4 . 逻辑设计:怎么做?-- 逻辑
逻辑设计也称为逻辑结构设计,其任务是将概念模型转化为某个特定的 D B M S 上的逻辑模型。设计逻辑结构时,首先为概念模型选定一个合适的逻辑模型(例如,关系模型、网状模型或层次模型),然后将其转化为由特定 D B M S 支持的逻辑模型,最后对逻辑模型进行优化。
逻辑设计的目的是将概念设计阶段设计好的 E - R 图转换为与选用的具体机器上的D B M S 所支持的数据模型相符合的逻辑结构。
5 . 物理设计:怎么做?-- 物理
物理设计也称为物理结构设计,其任务是对给定的逻辑模型选取一个最适合应用环境的物理结构,所谓数据库的物理结构,主要是指数据库在物理设备上的存储结构和存取方法。
物理设计的步骤如下:
(1) 设计存储记录结构,包括记录的组成、数据项的类型和长度,以及逻辑记录到存储记录的映射。
(2) 确定数据存储安排。
(3) 设计访问方法,为存储在物理设备上的数据提供存储和检索的能力。
(4) 进行完整性和安全性的分析与设计。
(5) 数据库程序设计。
5.5.2 实体联系模型到关系图
0. 三要素
E - R 模型也称为 E - R 图,它是描述概念世界,建立概念模型的实用工具。
在 E - R 图中,主要包括以下三个要素:
(1) 实 体 (型)。
实体用矩形框表示,框内标注实体名称。
(2) 属性。
单值属性用椭圆形表示,并用连线与实体连接起来。
如果是多值属性,在椭圆形虚线外面再套实线椭圆;
如果是派生属性,则用虚线椭圆表示。其中,多值属性可以有一个或者两个以上的值,例如,学员信息数据库中可能包含关于他们个人兴趣的数据,一个学员可能有运动、电影、投资和烹调等多个兴趣;
派生属性是从基本属性计算出来的属性,例如,学员的总成绩和平均成绩等。
(3) 实体之间的联系。
实体之间的联系用菱形框表示,框内标注联系名称,并用连线将菱形框分别与有关实体相连,并在连线上注明联系类型。例如,图 5 4 就是某在线教育平台系统的一个 E - R 图 (为了简单起见,省略了部分实体的属性和联系的属性)。
1 . 联系的类型
E- -R 图中的联系可以归结为三种类型,分别是一对一联系 、 一 对多联系和多对多联系。
(1) 一对一联系(1:1)。
设 A, B 为两个实体集,若 A 中的每个实体至多和B 中的一个实体有联系,反过来,B 中的每个实体至多和A 中的一个实体有联系,则称A 对 对 B或 或 B 对 对 A 是 1:1联系。要注意的是,1:1联系不一定都是一一对应的关系,可能存在着无对应。例如,在 图 5 4 中,一个班只有一个班主任,一个辅导老师不能N 时兼任两个班的班主任,由于辅导老师紧缺,某个班的班主任也可能暂缺
(2) —对 多 联 系
如 果 实 体 集 A 中的每个实体可以和B中的几个实体有联系,而 而 B 中的每个实体至少和A 中的一个实体有联系,则 A 对 对 B M 于 1⑺联系。例如,在图 5-4中,一个班级有多个学员,而一个学员只能编排在一个班级,班级与学员之间的关系属于一对多的联系。
(3) 多对多联系(mTi )。
若实体集A 中的每个实体可与B 中的多个实体有联系,反过来,B 中的每个实体也可以与A 中的多个实体有联系,则称A 对 对 B 或 或 B 对 对 A 是 是 w力 力联系。例如,在 图 5 4 中,一个学员可以选修多门课程,一门课程由多个学员选修,学员和课程之间存在多对多的联系。
2. E- -R 图的集成
在数据库的概念设计过程中,先设计各子系统的局部E- -R 图,其设计过程是,首先,确定局部视图的范围;然后,识别实体及其标识,确定实体之间的联系;最后,分配实体及联系的属性。各子系统的局部E- -R 图设计好后,下一步就是要将所有的分E- -R 图综合成一个系统的总体E- -R 图,一般称为视图的集成。视图集成通常有两种方式,•一种方式是多个局部E- -R 图一次集成,这种方式比较复杂,做起来难度较大;
另一种方式是逐步集成,用累加的方式一次集成两个局部E- -R 图。这种方式每次只集成两个局部E- -R 图,可以降低复杂度。
由于各子系统应用所面临的问题不同,且通常是由不同的设计人员进行局部视图设计,这就导致各个局部E- -R图之间必定会存在许多不一致的问题,称之为冲突。因此,在合并E- -R 图时,不能简单地将各个局部E- -R 图M 到一起,而是必须着力消除各个局部E- -R 图中的不一致,以形成-•个能为全系统中所有用户共同理解和接受的统一的概念模型。
各局部E- -R 图之间的冲突主要有三类:属性冲突、命名冲突和结构冲突。
(1) 属性冲突。
属性冲突包括属性域冲突和属性取值冲突。属性冲突理论上好解决,只要换成相同的属性就可以了,但实际上需要各部门协商,解决起来并不简单。
(2) 命名冲突。
命名冲突包括同名异义和异名同义。处理命名冲突通常也像处理属性冲突一样,通过讨论和协商等行政手段加以解决。
(3) 结构冲突。
结构冲突包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E- -R 图中所包含的属性个数和属性排列次序不完全相同。对于前者的解决办法是将属性变换为实体或实体变换为属性,使同一对象具有相同的抽象。对于后者的解决办法是使该实体的属性取各 M 部 E - R 图中属性的并集,再适当调整属性的次序。
另外,实体间的联系在不同的局部 E - R 图中可能为不同的类型,其解决方法是根据
应用的语义对实体联系的类型进行综合或调整。在初步的 E - R 阁中,可能存在一些冗余
的数据和实体间冗余的联系。冗余数据和冗余联系容易破坏数据库的完整性,给数据库
维护增加困难,应当予以消除。消除冗余的主要方法为分析方法,即以数据字典和数据
流图为依据,根据数据字典中关于数据项之间逻辑关系的说明来消除冗余。有关数据字
典和数据流图的详细知识,将 在 11.4节中介绍。
3. E - R 图向关系模式的转换 (向关系型数据库的格式转换)
E - R 图向关系模式的转换 用于数据库的逻辑设计阶段的工作,该阶段需要将 E - R 模
型转换为某种 D B M S 能处理的关系模式,具体转换规则如下:
(1) 一个实体转换为一个关系模式,实体的属性就是关系的属性,实体的主键就是关系的主键。
(2) —个 1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为•-个独立的模式,则与该联系相连的各实体的主键和联系本身的属性均转换为关系的属性,每个实休的主键均是该关系的键属性;如果与某一端实体对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的主键和联系本身的属性。
(3) —个联系可以转换为一个独立的关系模式,也可以与任意《端对应的关系模式合并。如果转换为一个独立的模式,则与该联系相连的各实体的主键和联系本身的厲性均转换为关系的属性, fft 关系的主键为《端实体的主键;如果与《端实体对应的关系模式合并,则需要在该关系模式的属性中加入1端关系模式的主键和联系本身的属性。
(4) 一个联系转换为一个独立的关系模式,与该联系相连的各实体的主键以及联系本身的属性均转换为关系的属性,而关系的主键为各实体主键的组合。
(5) 三个以上实体间的一个多元联系可以转换为一个独立的关系模式,与该联系相连的各实体的主键和联系本身的属性均转换为关系的属性,而关系的主键为各实体主键的组合。
另外,还有4 种情况是需要特别注意的:
( 1 ) 多值属性的处理。
如果 E - R 图中某实体具有一个多值属性,则应该进行优化,把该属性提升为一个实体,通常称为弱实体;或者在转化为关系模式时,将实体的主键与多值属性单独构成一个关系模式。
(2) B L O B 型属性的处理。
典型的 B L O B 是一张图片或一个声音文件,由于它们的容量比较大,必须使用特殊的方式来处理。处理 B L O B 的主要思想就是让文件处理器(例如,数据库管理器)不去理会文件是什么,而是关心如何去处理它。因此,从优化的角度考虑,应采用的设计方案是将 B L O B M 性与关系的主键独立为一个关系模式。
(3) 派生属性的处理。
因为派生属性可由其他厲性计算得到,因此,在转化成关系模式时,通常不转换派生属性。
(4) 在面向对象的模型中,本节的关系模式就对应类,关系模式的属性就对应类的属性。
附录:
数据库主键:指的是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性。主键主要是用与其他表的外键关联,以及文本记录的修改与删除。