数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 1页第 2章 数据库建模 — ER图本章概述本章的学习目标主要内容数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 2页本章概述
现在开始讲述数据库建模方法。
设计数据库的方法就是确定将要在数据库中保留什么信息和确认各种信息之间存在什么联系。建立数据库模型,就是使用合适的语言或表示方法表示出这种描述。
建立数据库模型的过程一般包括确认需求,即使用某种方式描述将要管理的信息和信息之间的联系,然后把这些格式化的信息输入到数据库管理系统中。
目前,有许多建立数据模型的方法和工具,例如 ER,IDEF1x,ODL
和统一建模语言( Unified Modeling Language,UML)。因为许多课程都在讲述 UML,所以本书重点讲述前 3种建模方法。
本章将要学习如何使用实体联系 (Entity Relationship,ER)图建立数据模型。 ER图是一种可视化的图形方法,它基于对现实世界的这样一种认识,即客观现实世界由一组称为实体的基本对象和这些对象之间的联系组成。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 3页本章的学习目标
掌握使用 ER图建立数据库模型的基本原理;
认识和掌握 ER图的基本元素;
了解使用 ER图建立数据库模型的基本原则;
认识数据库建模的约束;
掌握如何使用 ER图建立约束模型;
了解弱实体集的概念、表示和作用;
掌握绘制 ER图的技巧;
学习和掌握 ER图的高级技术。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 4页主要内容
2.1 ER图的基本概念
2.2 ER图设计原则
2.3 对约束建模
2.4 弱实体集
2.5 ER图的高级技术
2.6 本章小结数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 5页
2.1 ER图的基本概念
实体集和实体集中的属性
联系集和联系集中的属性
绘制 ER图数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 6页实体集
在 ER图中,把准备模型化的现实世界看成是由实体组成的,实体是现实世界区别于其他对象的无形事件或有形物体。
实体既可以是实实在在的可视的客观对象,也可以是抽象的无形的客观事件
实体集是具有相同类型和相同特征 (或属性 )的实体集合
一般情况下,实体集是不相交的。在某些情况下,
实体集也可以相交。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 7页实体集中的属性
实体集通过一组属性来描述,属性是实体集中每一个成员具有的描述性的特性值。
从形式化的角度来看,
可以把实体集的属性看作是实体集映射到域的函数。
ER图中的属性可以分为简单属性和复合属性、单值属性和多值属性,NULL属性、
派生属性等。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 8页属性的类型
简单属性就是不能再划分为更小部分的属性
复合属性是可以继续划分为更小部分的属性
对于实体集中的属性,如果对一个特定的实体,只有一个单独的取值与其对应,则称该属性为单值属性。
如果对某个特定实体而言,一个属性可能对应一组值,那么这种属性称为多值属性。
NULL属性就是当实体在某个属性上没有值时使用 NULL
值。 NULL值的含义是没有意义或丢失或不知道是否有意义。
派生属性的取值可以从别的相关属性或实体中派生出来,
这些相关属性称为基属性或存储属性。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 9页联系集
联系就是表示多个实体之间的相互关联。
联系集是指同类联系的集合。
多个实体集之间的关联称为参与,也就是说,
实体集 E1,E2,…,
En参与联系集 R。
为了方便地表示联系集涉及的实体集的数量,
使用度来表示与某个联系集相关的实体集的数量。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 10页联系集中的角色
实体在联系中的作用称为角色。一般来说,参与一个联系集的实体集是互异的,因而角色是隐含的,没有必要声明。
当联系的含义需要解释时角色的概念就有了实际的意义,这时参与联系集的实体集并非互异。也就是说,在一个联系集中,同一个实体集参与的次数超过一次时,则每一次参与都具有不同的角色。在这种情况下,需要显式使用角色名来定义一个实体参与联系实例的方式。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 11页联系集中的属性
就像实体集中的属性一样,联系集中也可以包含描述性属性。
例如,在实体集 books和 authors之间的联系集
writeBook中,可以包含属性 begin_date,表示作者开始写作本图书的日期。这时,图书,基督山伯爵,对应的实体和作者大仲马对应的实体之间的联系写作 writeBook,可以使用
{(begin_date,1881-08-05)}来描述,表示大仲马于 1881年 8月 5日开始写作,基督山伯爵,一书。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 12页
ER图的图元数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 13页绘制 ER图
对于联系集来说,可以是多对多、一对多、多对一、一对一等类型。为了将这些类型的联系集区别开来,在联系集和实体集之间使用箭头或使用线段。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 14页主要内容
2.1 ER图的基本概念
2.2 ER图设计原则
2.3 对约束建模
2.4 弱实体集
2.5 ER图的高级技术
2.6 本章小结数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 15页
2.2 ER图设计原则
前面我们对实体集、联系集以及它们的属性进行了详细的研究。但是,实体集和联系集的概念并不是特别的准确,而且在定义实体和实体之间的联系时往往有多种方法。
在设计 ER图时必须遵询一定的原则,这些原则包括:
真实性原则
避免冗余原则
简单性原则
合适性原则,其中合适性原则包括确定合适的实体集和属性原则和确定合适的实体集和联系集原则。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 16页真实性原则
在使用 ER图描述客观现实时,这种描述必须是真实的。也就是说,ER图必须真实地反映出客观世界的状况。真实是建立描述客观现实的基础,是成功的前提。
例如,实体集 books包括了属性 title,isbn、
page,type,year和 price,这是因为我们在实际中知道,一本图书确实可以使用这些属性来描述。
除了在确定实体集的属性时遵循真实性原则之外,
在确认实体集之间的联系时,仍然要遵循真实性原则。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 17页避免冗余原则
避免冗余原则是数据库设计的一个非常重要、非常复杂、也是非常基本的原则,其本质就是对客观现实的一个事物进行设计时只能出现在一个地方。
例如,我们介绍了实体集 books和实体集
authors和它们之间的联系集 writeBook假设,现在在实体集 books中增加一个属性
author_of_book,这种增加是完全可以轻易实现的,但是这种做法可能会带来许多可怕的后果:
存储空间过大、修改异常。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 18页简单性原则
客观现实往往是非常复杂的,模型既是对客观现实的反映,
又是对客观现实的简化。作为描述客观现实实体集和实体集之间联系集的 ER图也是如此。
ER图的简单性原则就是保证在设计 ER图时,避免引入过多的元素,这些元素包括实体集、联系集和属性。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 19页恰当性原则:用实体集还是用属性
经常会碰到选择实体集还是选择属性的问题。
一般地,使用属性比使用实体集更加简单,但是让一切事物都表示成属性也会带来许多麻烦。
在实体集 authors中,包括了 id,name和
birthplace三个属性。
出生地 birthplace显然可以作为一个单独的实体集
把属性 name看成一个实体集,那么是否可行呢?
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 20页恰当性原则:用实体集还是用联系集
在设计 ER图时,还会碰到这样的问题,是使用实体集呢,还是使用联系集呢?
这个问题没有明确的答案,关键是具体情况具体分析
虽然说,某一个客观对象的描述是使用实体集还是使用联系集不是非常清楚的,但是在确定使用实体集还是使用联系集时可以遵循的一个原则是:
当描述发生在实体集之间的行为时,最好采用联系集。
该原则对于决定是使用属性还是使用联系集时也同样适用。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 21页主要内容
2.1 ER图的基本概念
2.2 ER图设计原则
2.3 对约束建模
2.4 弱实体集
2.5 ER图的高级技术
2.6 本章小结数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 22页
2.3 对约束建模
前面,我们已经学习了如何使用实体集、联系集、属性来建立客观对象的模型,但是客观对象的某些方面的信息单靠使用前面学习过的知识是不能在模型中表达的,这些信息就是对客观对象的约束。
约束就是对客观对象的属性和关系的取值范围进行限制的手段。在 ER图中的约束建模就是指在绘制的 ER图中表达出这些限制信息。
在 ER图中,需要建立的约束模型包括:
映射约束 (mapping constraints)
键码约束 (keys constraints)
参照完整性约束 (reference integrity constraints)
域约束 (domain constraints)
一般性约束 (general constraints)
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 23页映射约束
映射约束就是指一个实体集中的实体通过联系集可以同另一个实体集相联系的实体数量。
映射约束既可以描述涉及多个实体集的联系集,也可以只是涉及联系两个实体集的联系集。
这里主要研究涉及两个实体集的二元联系集数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 24页实体集中的键码约束
超键码是一个或多个属性的集合,这些属性的组合可以使人们在一个实体集中唯一地标识一个实体。
对于一个实体集,通常会有多个超键码。
我们只是对一部分超键码感兴趣,即对于那些任意的真子集都不能成为超键码的超键码感兴趣,这种超键码就是我们寻找的目标,这里称为键码。
在一个实体集中,可能会同时存在多个键码。
在实体中,键码的确定通常根据客观现实的情况。
在数据库的设计中,用来在实体集中区分不同实体的键码称为主键码 (primary key)。在 ER图中,主键码包括的属性以下划线标示数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 25页联系集中的键码约束
如果某一个联系集 R涉及实体集 E1,E2,…,En,而
primaryKey(Ei)代表构成实体集 Ei的主键码的属性的集合。
与联系集键码相关的属性构成包括两个部分,一部分是与联系集相关的属性的结构,另一部分是与联系集相关的实体集的主键码集合。
联系集的主键码的构成还依赖于联系集的映射约束。如果联系集 R是多对多关系,那么联系集 R的主键码由与该联系集相关的所有实体集的主键码共同组成。
如果联系集是多对一关系或一对多关系,则联系集的主键码由“多”方实体集的主键码组成。
如果联系集的关系是一对一,则两个实体集的两个主键码中的任意一个都可以作为联系集的主键码。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 26页参照完整性约束
参照完整性约束也是一种非常重要的约束形式,这种约束有时也称为存在依赖约束。
如果实体集 x的存在依赖于实体集 y的存在,
那么就说实体集 x参照依赖于实体集 y,或者说实体集 x存在依赖于实体集 y。这时,
实体集 y称为主实体集或支配实体集,实体集 x称为参照实体集或从属实体集。
在 ER图中,使用圆箭头表示这种参照完整性约束。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 27页其他类型的约束
域约束 (domain constrains)就是把属性的取值限制在一个有限的集合内。一般地,在 ER图上,不表示出这种域约束形式,但是可以在 ER图旁边注明这些域约束的内容。
一般性约束就是指在数据库中应该满足的其他条件。例如,
我们可以要求在每一本图书中,列出的作者数量不能超过
5个。在 ER图中,我们可以把一个极限数据附在联系集和实体集的连线旁边,表明限制与有关实体集的任何一个实体相连的实体数量。
另外,我们可以把 ER图中的表示联系“少”方的箭头看作是,≤1”的约束形式,而把表示参照完整性约束的圆箭头看作是,=1”的约束形式。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 28页主要内容
2.1 ER图的基本概念
2.2 ER图设计原则
2.3 对约束建模
2.4 弱实体集
2.5 ER图的高级技术
2.6 本章小结数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 29页
2.4 弱实体集
在描述实体的过程中,存在这种现象,即在组成一个实体集键码的属性中,一部分或所有属性都来自另外一个实体集。这种实体集就称为弱实体集 (weak entities ),
另外的实体集可以称为强实体集 (strong
entities )。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 30页弱实体集产生的原因
第一,实体集具有层次结构;
第二,实体集来源于连接实体集。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 31页对弱实体集的要求
在选择弱实体集的键码属性时,必须经过慎重的选择,也就是说这些键码属性、强实体集等必须满足一定的条件。
例如,如果 U是一个弱实体集,那么每一个为该弱实体集提供一个或多个键码属性的实体集 V必须通过联系集 R与该弱实体集相连。
下面总结了一些对这种弱实体集的一些要求:
第一,联系集 R必须是从实体集 U到实体集 V的二元的多对一或一对一的联系。
第二,实体集 V为弱实体集 U提供的键码属性必须是实体集 V的键码属性。
第三,如果 V本身也是弱实体集,那么弱实体集 V提供给弱实体集 U的键码属性可能是通过多对一或一对一的联系集与 V关联的某个实体集 W的键码属性。
第四,如果从弱实体集 U到实体集 V有多个多对一或一对一的联系,那么每一个联系都可能使用由实体集 V的键码属性构成弱实体集 U的键码属性。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 32页弱实体集的表示方法
第一,关于弱实体集的表示方法。如果某一个实体集是弱的,则在 ER图中使用双边矩形表示,图 2-25中的 Dept、
图 2-26中的 districts和图 2-27中的 contracts都是弱实体集。
第二,关于与弱实体集关联的联系集的表示方法。如果一个实体集是弱的,那么与该弱实体集相连且提供键码属性的其他实体集的联系集使用双边菱形表示。图 2-25,2-26
和 2-27中的联系集都使用了双边菱形。
第三,关于弱实体集的属性。如果弱实体集本身的属性是键码的组成部分,那么在这些属性下面加下划线。在图 2-
25中,弱实体集 Dept的名称属性 name是弱实体集键码的组成部分。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 33页主要内容
2.1 ER图的基本概念
2.2 ER图设计原则
2.3 对约束建模
2.4 弱实体集
2.5 ER图的高级技术
2.6 本章小结数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 34页
2.5 ER图的高级技术
前面讨论了 ER图的基本技术,这些基本技术足够满足一般用户绘制 ER图的需要。但是,通过对 ER图的更高一层的研究,可以更加恰当地描述客观现实的某些特征。
这些 ER图的高级技术包括:
特殊化技术
概括技术
属性继承技术
聚集技术数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 35页特殊化技术
每一类书都可以通过由实体集 books的所有属性和一些附加的属性所构成的属性集合来描述。
例如,romance实体集可以通过描述主人公的属性 role来进一步地描述,而 courtroom实体集则通过描述结局的属性 ending来进一步地描述。
这种在实体集内部进行分组的过程称为特殊化技术。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 36页概括技术
概括技术就是指确定高层实体集与一个或多个低层实体集之间的包含关系。
概括技术是特殊化技术的逆过程。在设计 ER图时,一般配合使用这两种技术。
在 ER图中,对概括技术和特殊化技术的表示不加区别。
概括技术的出发点和达到的目标与特殊化技术不同。概括技术基于这种认识,即一些实体集具有共同的特征。利用概括技术,就可以在这些具有共性的实体集的基础上综合成一个高层实体集。
概括主要是强调低层实体集之间区别背后的相似性。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 37页属性继承技术
在前面提到的特殊化技术和概括技术中,所产生的高层实体集和低层实体集的一个重要特性是属性继承技术。高层实体集的属性可以被低层实体集所继承。
对于 ER图中的某个特定部分,无论是通过特殊化技术还是通过概括技术得到,其结果都是一样的,
即都遵守这种原则:同高层实体集相联系的所有属性和联系也适用于它的所有低层实体集中;低层实体集特有的性质仅仅适用于某个特定的低层实体集。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 38页概括约束设计
为了更加准确地建立数据库模型,可以有选择地在 ER图中特定的概括上加上一些约束。这些约束包括成员资格约束、多重性约束和全部性约束。
第一类概括约束是成员资格约束,用来确定哪些实体可以成为指定低层实体集的成员,成员资格既可以是条件定义的,也可以是用户定义的。
第二类概括约束是多重性约束,用来确定在同一个概括中,
一个实体是否可以属于多个低层实体集。这时,低层实体集既可以是不相交的,也可以是有重叠的。
第三类概括性约束是全部性约束,用来确定高层实体集中的一个实体是否必须属于某个概括的至少一个低层实体集。
这种约束既可以是全部的,也可以是部分的。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 39页聚集技术
聚集是一种抽象,通过这种抽象,可以把联系看成高层实体。
数据库系统原理与应用教程 (第二版 ) 第 2章 数据库建模 —— ER图 第 40页主要内容
2.1 ER图的基本概念
2.2 ER图设计原则
2.3 对约束建模
2.4 弱实体集
2.5 ER图的高级技术
2.6 本章小结