数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 1页第 5章 关系模型本章概述本章的学习目标主要内容数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 2页本章概述
前面三章分别介绍了建立数据库模型的 ER图,IDEF1x图和 ODL方法,这些方法可以很好地描述各种数据库将要包含的信息,建立完整的数据模型。
当前,关系模型是应用最为广泛的数据模型,它具有严格的理论体系,是许多数据库厂商推出的商品化关系型数据库系统的理论基础。
在当今的数据库市场上,Oracle,Microsoft SQL
Server,Sybase ASE,IBM DB2以及 Microsoft
Access,Visual FoxPro等商品化关系型数据库系统都占据着一定的份额。
由于关系模型的重要性,从本章开始,本书将花大部分篇幅介绍关系模型的原理和应用,使读者掌握最基本和最重要的数据库理论和应用知识。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 3页本章的学习目标
学习和掌握关系模型的基本概念;
掌握从 ER图到关系模型设计的转换技术;
掌握 ER图中联系的转换形式;
了解和掌握从 IDEF1x图到关系模型设计的转换知识;
掌握从 ODL设计到关系模型设计的基本转换技术;
掌握 ODL设计中联系转换技术。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 4页主要内容
5.1 基本概念
5.2 从 ER图到关系模型设计的转换
5.3 从 IDEF1x图到关系模型设计的转换
5.4 从 ODL设计到关系模型设计的转换
5.5 本章小结数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 5页
5.1 基本概念
关系模型是一种以二维表的形式表示实体数据和实体之间关系等信息的数据库模型,其中,
由于二维表在数学公式中一般称为关系,因此把这种模型称为关系模型。
在关系模型中,基本元素包括属性、
模式、元组、域、
键码、关系等价表示法以及关系实例等。下面介绍这些基本概念。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 6页属性
在二维表中,关系的第一行称为属性 (attribute),
它描述了属性所在列各项的含义。
例如,在如图 5-1的关系中,属性是 isbn,title、
page,bookType,year和 price,其中属性 isbn
所在列存放了图书的标准书号,属性 title存放了图书的书名,属性 page存放了图书的页数,属性
bookType 存放了图书的类型,属性 year存放了图书出版的年份,属性 price存放了以人民币元为货币单位的图书价格。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 7页模式
关系名和关系的属性集称为关系的模式。一般地,模式的表示形式有两种:
第一种表示方式是:模式名加上圆括号括起来的属性集;
第二种表示方式是使用模式名加上等号,然后是使用圆括号括起来的属性集。
这两种表示形式如图 5-2所示。
为了统一,本书采用模式的第一种表示方式。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 8页元组
在关系模式中,除了第一行是标题栏之外,关系中的其他行称为元组。
元组实际上就是关系中的数据。元组的各分量分别对应于关系中的各个属性。
例如,在图 5-1所示的 Book关系中,有
12个元组,每一个元组都有 6个分量,这些分量分别对应于关系的 6个属性,如
isbn,title,page,bookType,year
和 price。
例如,在 Book关系中,第一个元组的 6
个分量分别是 7-5327-1224-9/I·717、基督山伯爵,1428、文学,1992和 18.0,
这些分量分别表示书号、书名、页数、图书类型、出版年份和价格。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 9页域
在关系模型中,要求组成元组的每一个分量都是不可再分割的原子型,即这些分量必须属于某种基本类型,例如整数型、浮点型、字符型等。
不允许某个属性值属于记录结构、集合、列表、数组或可以合理地分解成更小分量的任何类型。由于在 ODL定义中,
属性可以包括这些记录结构、集合、列表、数组等类型,
因此 ODL中的属性不能直接转换成关系中的单个属性,但是可以转换成多个属性等。
一般地,把与关系中的每一个属性相关的特定类型称为域,
那么关系中任何元组的每一个分量都必须在相应列的域中取值。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 10页关系的等价表示方法
前面已经说过,关系的模式和元组都是集合,不是列表。因此,关系的模式和元组的顺序是不重要的,无论模式中属性的顺序或元组的顺序如何变换,只要是模式中的属性和元组本身没有变化,
那么得到的关系模式都是相同的。这种方式称为关系的等价表示方法。
例如,我们把图 5-1中的 12个元组的顺序任意排列,
而得到的关系都是与图 5-1中的关系相同。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 11页关系实例
一般情况下,与图书有关的关系不是静止的,而是不断变化的,且这些变化主要是反应在关系模式的元组中。例如,
当在数据库中增加图书时,就在关系 Book中插入一个新元组;如果对数据库中的图书信息进行修改时,就修改关系中现有的元组;如果由于某种原因需要把某本图书从数据库中清除掉时,就可以从关系中删除相应的元组。
但是,关系模式与元组不同,关系模式时比较稳定的,很少发生变化。虽然也存在向关系中增加属性或从关系中删除属性的情况,但是这种现象是少见的。另外,模式修改的成本也是非常高的,例如需要修改某些应用程序代码、
需要为成千上万个元组增加或删除一些分量、很难找到元组中新分量的取值等。
习惯上,把给定关系中元组的集合称为关系实例数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 12页键码
在前面建立数据库模型过程中,多次提到了键码的概念。
在关系模型中,键码的概念与前面提到的概念非常类似。如果关系中的所有元组在一个属性或多个属性的集合中都互不相同,也就是说可以使用该属性或属性的集合来确定关系中的元组,那么该属性或属性的集合称为关系中的键码。
有关关系键码的形式化描述在本书第六章详细介绍。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 13页主要内容
5.1 基本概念
5.2 从 ER图到关系模型设计的转换
5.3 从 IDEF1x图到关系模型设计的转换
5.4 从 ODL设计到关系模型设计的转换
5.5 本章小结数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 14页
5.2 从 ER图到关系模型设计的转换数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 15页
ER图和关系模式的比较
第一,在 ER图中,联系集作为独立的概念存在,而不是作为实体集的属性。在关系模式中,没有与联系集对应的概念。
第二,在 ER图中,没有严格的定义属性的数据类型,但是一般地允许结构化数据的存在,例如 Press实体集中的地址可以是一个结构的聚集。在关系模式中,强调属性的数据类型是原子类型的,不能再进行分割。
第三,在 ER图中,联系集可以有属性,但是在关系模式中,由于没有联系集的概念,所以联系集也没有属性的存在。
第四,在 ER图中,有特殊化、概括、继承等概念,而在关系模式中没有相应的概念。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 16页实体集到关系模式的转换
首先研究实体集到关系转换的情况,这里提到的实体集不包括弱实体集的情况。一般来说,对于每一个非弱实体集,在关系模式中建立一个与其同名且具有相同属性集的关系。该关系不包括任何与实体集有关的联系信息。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 17页联系集到关系模式的转换
现在研究 ER图中联系集到关系模式的转换。一般地,ER
图中的联系集也可以直接转换成关系。只是在转换之前,
需要确定联系集应该具有的属性,因为转换后的关系将包含与该联系集所有有关的属性。最终在关系中应该包括的这些属性来自两个方面:
该联系集涉及到的每个实体集的键码属性或属性集;
该联系集本身自有的属性。
如果一个实体集在某一个联系中作为不同的角色出现了多次,那么必须为每一次出现的属性改名,避免最终在关系模式中出现重名现象。同样,如果同名属性在关系本身或关系涉及的实体集的属性中出现两次或两次以上,也应该改名,避免在关系中重复。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 18页弱实体集到关系模式的转换
弱实体集可以直接转变成关系模式。弱实体集本身对应的关系模式包含了弱实体集本身的属性和构成该弱实体集的键码的其他实体集的键码属性。
处理弱实体集时,有一个特殊情况,即与弱实体集相关的双边菱形联系不需要转换成关系。这是因为这种双边菱形联系的属性是弱实体集本身属性集的子集。这种双边菱形联系的作用主要是为了找到弱实体集的键码属性,它不能提供其他有关的信息。
下面研究几个示例。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 19页
ER图中其他元素的转换
在 ER图中,还包括了一些特殊的元素,例如可以使用特殊化技术、概括技术、属性继承技术、聚集技术等绘制。
现在我们研究如何把使用特殊化技术绘制的 ER图转换成相应的关系模式。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 20页键码的转换
关系模式中包含了键码属性。在 ER图向关系模式转换时,还需要把实体集中的键码属性转换到最后的关系模式中。 ER图中的实体集和联系集在向关系模式转变时,其键码的转换规则是不同的。
规则一,如果关系来自一个实体集,那么实体集的键码就是该关系的键码。
规则二,如果关系来自一个二元联系集,则该联系集的多重类型将会影响到该关系的键码。不同的联系类型有不同的转换形式数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 21页主要内容
5.1 基本概念
5.2 从 ER图到关系模型设计的转换
5.3 从 IDEF1x图到关系模型设计的转换
5.4 从 ODL设计到关系模型设计的转换
5.5 本章小结数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 22页
5.3 从 IDEF1x图到关系模型设计的转换
IDEF1x图与 ER图不同。 IDEF1x图是一种规范数据库设计方法,它具有严谨的语法和精确的语义。
在 IDEF1x图的绘制过程中,虽然也涉及了实体、
联系、属性、键码等元素,但是由于 IDEF1x图的绘制过程本身已经考虑了信息冗余、键码迁移等问题,所以把 IDEF1x图转换成关系模式过程就比较简单。需要做的工作就是把 IDEF1x图中的各种实体转换成相应的关系模式,实体中的键码转换成相应的关系模式中的键码。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 23页主要内容
5.1 基本概念
5.2 从 ER图到关系模型设计的转换
5.3 从 IDEF1x图到关系模型设计的转换
5.4 从 ODL设计到关系模型设计的转换
5.5 本章小结数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 24页
5.4 从 ODL设计到关系模型设计的转换
研究了 ER图和 IDEF1x图的转换之后,现在研究如何从 ODL设计向关系模型设计的转换。相比之下,ER图和 IDEF1x图向关系模型设计的转换比较直接,ODL设计向关系模型的设计转换比较复杂,这是因为 ER图和 IDEF1x图主要是为关系型数据库管理系统提供数据库模型,而 ODL设计主要是为面向对象数据库管理系统提供数据库模型。
但是,由于在从 ODL设计向关系模型的设计转换过程中涉及到了关系模型的许多理论上的问题,
研究这种转变过程有助于我们对关系模型有更加深入的理解。因此,学习这种转换技术是非常有益的。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 25页
ODL设计和关系模式设计的比较
ODL设计与关系模式设计有很大的差别。从设计思想上看,
ODL是一种面向对象的设计方法,采用了封装属性、联系和方法等特性的类形式,而关系模式是一种面向实体的以二维表结构为基础的数据库模式。因此,在从 ODL设计向关系模式设计转变过程中,涉及到的主要问题包括:
ODL设计中使用了许多非原子的属性,而关系模式中的属性都是原子类型,在转换过程中需要处理这种问题。
ODL设计中封装了对象之间的联系,这些联系经常是多值的。因此,这种转换需要特殊的技术。
ODL设计中有子类的概念,而关系模式没有这种概念。
另外,ODL设计中的方法概念由于与关系模式没有关联,
所以不是我们研究转换的对象。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 26页从 ODL属性到关系模式的属性
从 ODL设计到关系模式的转换是一个复杂的过程。但是,
作为研究的起点,我们将从最简单的形式开始我们的转换。
然后,逐步复杂化 ODL设计向关系模型转变的过程。
假设我们的目标是为每一个类建立一个对应的关系,类中的每一个特性 (不包含方法特性 )都对应关系的一个属性。
为了保证这种转换的成功,我们假定两个限制条件:第一,
类的所有特性都是属性,不是联系或方法;第二,属性的类型都是原子的,不是结构或聚集。
在 ODL设计中,类 Book的对象就是在类的这些属性上各取一个值。如果每一个属性的值都作为元组的一个分量,
那么可以使用该对象组成一个元组。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 27页
ODL设计中非原子属性的转换
上面一节讨论的情况是非常简单的。但是,实际情况并非如此。在 ODL设计中,即使一个类的特性都是属性,但是在向关系模式的转变过程中,
还存在数据类型的问题。因为 ODL设计中的属性允许包括复杂的数据类型,这些复杂的数据类型包括集合、列表、包、数组和结构等,但是关系模型中属性的数据类型都是原子的,例如整数、
浮点数和字符串类型等。
因此,必须使用合适的方法把类中的这些非原子数据类型转换成关系模式中原子类型。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 28页
ODL设计中联系的转换
上面讨论的问题都是在 ODL定义中只有属性特性,
没有联系特性。实际上,在 ODL定义中,联系特性也是非常常见的一种特性。与属性特性相比,
联系特性的组成类似于属性特性,也是由数据类型和特性名组成。但是,属性特性与联系特性之间的最大差别是属性特性的数据类型是原子类型或原子类型的聚集,而联系特性的数据类型是接口类型或接口类型的聚集,且联系特性的数据类型不能是结构形式。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 29页
ODL设计中联系和反向联系问题
ODL设计中还有一个特殊的情况,即在类的定义中,包含了联系和反向联系。这种情况在 ODL定义中是合理的,因为联系和反向联系都是使用指针来表示,都是必须存在的。但是当把这种联系和反向联系都转变为关系模式时,却出现了大量的信息冗余。
因为在关系模式中,联系和反向联系包含的信息是完全一样的,但是却重复出现了两次。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 30页
ODL设计中子类结构的转换
面向对象的本质和关系的本质是不同的,因此,
处理 ODL设计中的子类结构的方法不同于前面讲过的处理 ER图中的分层结构。在 ODL设计中,一个对象完全属于一个类,即一个类完整地描述了一个对象的全部内容。子类继承了其超类的所有特性,但是在技术上,子类并不是超类的成员。
在 ER图中,一个对象是由属于多个实体集的实体来表示的,这些实体集通过 isa联系连接在一起。
因此,连接在一起的实体共同表示了这个对象,
并把其属性、联系等特性给予了该对象。
数据库系统原理与应用教程 (第二版 ) 第 5章 关系模型 第 31页主要内容
5.1 基本概念
5.2 从 ER图到关系模型设计的转换
5.3 从 IDEF1x图到关系模型设计的转换
5.4 从 ODL设计到关系模型设计的转换
5.5 本章小结