112
第第第 第第第 第第第第第 第第第第第 4-6 4-6 第第第第第第 第第第 第第第 第第第第第第第第第第第第第第第第 第第第第 第第第第第第第 •第第第第第第第第第84729625 Email [email protected] 第第第第第第第第 第第第第第第第第 2005 第 8 第 6 第

第二章 关系数据库 ( 4-6 学时)

  • Upload
    nerys

  • View
    82

  • Download
    4

Embed Size (px)

DESCRIPTION

数据库原理和语言. 第二章 关系数据库 ( 4-6 学时). 2005 年 8 月 6 日. 主讲:曹志英 副教授 大连海事大学计算机科学与技术学院 研究方向:软件工程与理论 • 数据库与信息系统 电话: 84729625 Email : [email protected]. 主要目的与内容 :. l 关系模型的基本概念 l 关系模型的数据结构 l 关系操作 l 关系的完整性. 集合论. 数学方法. 关系代数. 关系数据库的 数学理论基础 : l 集合论、 l 关系代数(信息代数), l 用数学的方法来处理数据。. 关系数据库的发展历程 - PowerPoint PPT Presentation

Citation preview

Page 1: 第二章 关系数据库 ( 4-6 学时)

第二章第二章 关系数据库关系数据库 (( 4-64-6 学时)学时)

主讲:曹志英 副教授

大连海事大学计算机科学与技术学院研究方向:软件工程与理论•数据库与信息系统

电话: 84729625Email : [email protected]

数据库原理和语言数据库原理和语言

2005 年 8 月 6 日

Page 2: 第二章 关系数据库 ( 4-6 学时)

主要目的与内容主要目的与内容::

关系模型的基本概念 关系模型的数据结构 关系操作 关系的完整性

Page 3: 第二章 关系数据库 ( 4-6 学时)

关系数据库的数学理论基础:         集合论、         关系代数(信息代数), 用数学的方法来处理数据。

数学方法

集合论

关系代数

Page 4: 第二章 关系数据库 ( 4-6 学时)

关系数据库的发展历程 1962 年, CODASYL “ 信息代数”。1968 年, David Child 在 7090 机上实现的

集合论数据结构。1970 年, E.F.Codd 发表多篇论,严格地、

系统地提出关系模型。20 世纪 70 年代末, IBM 的 San Jose 实验室

研制出关系数据库实验模型 System R (原型)

1981 年, IBM 研制出 SQL/DS 。

Page 5: 第二章 关系数据库 ( 4-6 学时)

§§2.1 2.1 关系模型概述关系模型概述 (P(P4545) )

前面讲过,关系数据库系统是支持关系模型的数据库系统,同样地由关系数据结构、关系操作集合和完整性约束条件三部分组成。

一、 单一的数据结构 ---- 关系 (P46) 实体以及实体间的联系均由关系来表示。

关系模型的数据结构非常单一。在关系模型中,现实世界的实体以及实体间的各种联系均用关系来表示。在用户看来,关系模型中数据的逻辑结构是一张二维表。

Page 6: 第二章 关系数据库 ( 4-6 学时)

二、关系操作 (P46) 关系模型给出了关系操作的能力,但不对具体

RDBMS 语言给出具体的语法要求。 常用的关系操作包括两大部分:  并( Union )   选择( Select )  交( Intersection )  投影( Project )  差( Difference )  连接( join )  除( Divide ) 等查询操作和  增加( Insert )  删除( Delete ) 修改( Update )操作。

Page 7: 第二章 关系数据库 ( 4-6 学时)

三、关系操作的特点: 集合操作方式,即操作的对象和结果都是集合,这种方式一次一集合( set-at-a-time )。

非关系数据模型数据操作方式:一次一记录( record-at –a-time )。

实现关系操作:关系代数和关系演算(元组关系演算、域关系演算),是抽象的查询语言。

关系语言是一种高度非过程化语言。SQL : Structured Query Language ,结构化查询语言。SQL 构成:集 DDL 、 DML 和 DCL 于一体。RDBMS - Relational Database Management System ,

关系数据库管理系统。

Page 8: 第二章 关系数据库 ( 4-6 学时)

关系数据语言关系数据语言三类:关系代数语言、关系演算语言和具有关系代数和

关系演算双重特点的语言

关系数据语言

1 关系代数语言  例如 ISBL

2 关系演算语言

1. 元组关系演算语言 例如 APLHA,QUEL

2. 域关系演算语言 例如 QBE

3 具有关系代数和关系演算双重特点的语言 例如 SQL(1) 关系代数是用对关系的运算来表达查询要求的方式。(2) 关系演算是用谓词来表达查询要求的方式。按谓词变元的基本

对象是元组变量还是域变量分为元组关系演算和域关系演算。

(3) 介于关系代数和关系演算之间的语言 SQL ( Standard Query Language ):它充分体现了关系数据语言的特点和优点,是关系数据库的标准语言。

◆ 特点:完备的表达能力、非过程化的集合操作、功能强、能嵌入高级语言使用。

Page 9: 第二章 关系数据库 ( 4-6 学时)

四、关系完整性约束条件四、关系完整性约束条件 (P(P4747))

关系的三类完整性约束:

关系模型提供了丰富的完整性控制机制,允许定义三类完整性:

• 实体完整性• 参照完整性• 用户定义的完整性

关系模型必须满足的完整性约束条件,应该由关系系统自动支持

——是应用领域需要遵循的约束条件,体现了具体领域中的语义约束

Page 10: 第二章 关系数据库 ( 4-6 学时)

§§2.2 2.2 关系数据结构及形式化定义关系数据结构及形式化定义 从集合论角度,给出关系数据结构形式化定义。

§2.2.1 关系 (P47)

§2.2.2 关系模式 §2.2.3 关系数据库( P52 )

Page 11: 第二章 关系数据库 ( 4-6 学时)

§§2.2.1 2.2.1 关系关系 (P(P4747))

1. 域( Domain )2. 笛卡尔积( Cartesian Product )3. 关系: (笛卡尔积的有效组合 )4. 码: (P49)

5. 关系的类型与性质: (P50)

Page 12: 第二章 关系数据库 ( 4-6 学时)

1. 1. 域(域( DomainDomain )) 域是一组具有相同数据类型的值的集合,又称为值域。

(用 D 表示)– 例如整数、实数、字符串的集合。

域中所包含的值的个数称为域的基数(用 m 表示)。 关系中用域表示属性的取值范围。例如:

– D1={李力,王平,刘伟 } m1=3

– D2={男,女 } m2=2

– D3={47,28,30} m3=3

– 其中, D1 , D2 , D3 为域名,分别表示教师关系中姓名、性别、年龄的集合。

域中的值无排列次序,如 D2={男,女 }={女,男 }

Page 13: 第二章 关系数据库 ( 4-6 学时)

2. 2. 笛卡尔积(笛卡尔积( Cartesian ProductCartesian Product )) 给定一组域 D1,D2,…,Dn (它们可以包含相同的元素,即可以完全不同,也可以部分或全部相同)。 D1 , D

2 ,…, Dn 的笛卡尔积为 D1×D2×……×Dn={ ( d1,d2,…,dn ) |di∈Di,i=1,2,…,n} 。 由定义可以看出,笛卡尔积也是一个集合。其中:

– 1 )元素中的每一个 di叫做一个分量 (Component) ,来自相应的域( di∈Di )

– 2 )每一个元素( d1,d2,d3,…,dn )叫做一个 n 元 组( n-tuple ),简称元组( Tuple )。但元组不是 di 的集合,元组的每个分量( di )是按序排列的。如:

– ( 1 , 2 , 3 )≠( 2 , 3 , 1 )≠( 1 , 3 , 2 );– 而集合中的元素是没有排序次序的,如 {1 , 2 , 3}=

{2 , 3 , 1}={1 , 3 , 2} 。

Page 14: 第二章 关系数据库 ( 4-6 学时)

3 )若 Di ( i= 1,2,…,n )为有限集,其基数( Cardinal number )为mi ( i= 1,2,…,n ),则 D1×D2×…×Dn 的基数 M (即元素( d1,d2,…,dn )的个数)为所有域的基数的累乘之积,即:

例 1 : D1= 男人的集合( Man )={王兵、李平、张强} D2= 女人的集合( Woman )={丁梅、吴芳}

D3= 儿童的集合( Child )={王一、李一、李二}

n

iimM

1

笛卡尔积是一个二维表,表中每行对应一个元组,每列对应一个域。

则这三个集合的笛卡尔积为: D1×D2×D3={ ( 王兵、丁梅、王一 ) , ( 王兵、丁梅、李一 ) ,( 王兵、丁梅、李二 ) , ( 王兵、吴芳、王一 ) , ( 王兵、吴芳、李一 ) , ( 王兵、吴芳、李二 ) ,……, ( 张强、吴芳、李二 )}

共有 18个元素:笛卡尔基数= 3×2×3= 18 每小括号的组合,是一个元组。 每一个元组中的每一个元素 ( 如王兵、丁梅等 )就叫分量。

Page 15: 第二章 关系数据库 ( 4-6 学时)

– 例 2 :上述表示教师关系中姓名 D1={ 李力 , 王平 , 刘伟 } 、性别 D2 ={ 男 , 女 } 两个域的笛卡尔积为:

– D1×D2={( 李力 , 男 ),( 李力 , 女 ),( 王平 , 男 ),( 王平 ,女 ),( 刘伟 , 男 ),( 刘伟 , 女 )}

– 其中: 李力、王平、刘伟、男、女都是分量 (李力 ,男),(李力 ,女)等是元组其基数 M=m1×m2=3*2=6 元组的个数为 6

– 例如,上述的 6个元组可表示成表 2.1 。

姓名 性别李力 男李力 女王平 男王平 女刘伟 男刘伟 女

表 2.1 D1 和 D2 的笛卡尔积

- 由上例可以看出,笛卡尔积实际是一个二维表,表的框架由域构成,表的任意一行就是一个元组,表中的每一列来自同一域(例如:第一个分量来自 D1 ,第二个分量来自D2 )。

Page 16: 第二章 关系数据库 ( 4-6 学时)

33 、关系:、关系: (( 笛卡尔积的有效组合笛卡尔积的有效组合 ))

定义:笛卡尔积 D1×D2×…×Dn 的任一子集称为定义在域 D1, D2,…, Dn 上的 n 元关系( Relation ),可用 R( D1, D2,…, Dn )表示– 如上例 D1×D2笛卡尔积的子集可以构成教师关系 T1 ,

如下表:

姓名 性别李力 男王平 女刘伟 男

元组

属性

Page 17: 第二章 关系数据库 ( 4-6 学时)

若有一个家庭成员集合: R (父亲,母亲,孩子)

Man Woman Child

王兵 丁梅 王一

李平 吴芳 李一

李平 吴芳 李二

这个集合才是有效集合,在现实生活中才有实现的意义,是 Man×Woman×Child 之子集。

Page 18: 第二章 关系数据库 ( 4-6 学时)

几点说明:几点说明:

1. R 为关系名, n称为关系的目或度( Degree )。– 当 n=1 时,称为单元关系。– 当 n=2 时,称为二元关系。– …– 当 n=n 时,称为 n 元关系。– 如上例为二元关系,关系名为 T 。

2. 关系是笛卡尔积的有限子集,即是一个二维表。– 行对应一个元组;– 列对应一个域;– 每列的名称成为属性。

3. n 目关系必有 n个属性

Page 19: 第二章 关系数据库 ( 4-6 学时)

44 、属性、码的概念、属性、码的概念 (P(P4949))

候选键与关键字 能唯一标识关系中元组的属性或属性集,称该

为候选键 (Candidate Key) ,也称候选关键字或候选码。如:– “ 学生关系”中的学号能唯一标识每一个学生,则属性学号是学生关系的候选键。

– 在“选课关系”中,只有属性的组合“学号 +课程号”才能唯一地区分每一条选课记录,则属性集“学号 + 课程号”是选课关系的候选键。

Page 20: 第二章 关系数据库 ( 4-6 学时)

44 、属性、码的概念、属性、码的概念 (P(P4949) ) Cont.01Cont.01

如果一个关系中有多个候选键,可以从中选择一个作为查询、插入或删除元组的操作变量,被选用的候选键称为主关系键 (Primary Key) ,或简称为主键、主码、关系键、关键字。– 例如,假设在学生关系中没有重名的学生,则“学号”和“姓名”都可作为学生关系的候选键。如果选定“学号”作为数据操作的依据,则“学号”为主关系键。

主关系键是关系模型中的一个重要概念。每个关系必需选择一个主关系键,选定以后,不能随意改变。

每个关系必定有且仅有一个主关系键,因为关系的元组无重复,至少关系的所有属性的组合可作为主关系键,通常用较小的属性组合作为主关系键。

Page 21: 第二章 关系数据库 ( 4-6 学时)

44 、属性、码的概念、属性、码的概念 (P(P4949) ) Cont.02Cont.02

主属性与非码属性 主属性( Prime Attribute ):包含在任何一个候选码中的的各属性称为主属性。

非码属性( Non-Prime Attribute ):不包含在任何候选码中的属性称为非码属性,或非主属性( Non-key Attribute )。

在最简单的情况下,一个候选码只包含一个属性,如学生关系中的“学号”,教师关系中的“教师号”。

在最极终端的情况下,所有属性的组合是关系的候选码,这时称为全码( all-key )。

Page 22: 第二章 关系数据库 ( 4-6 学时)

44 、属性、码的概念、属性、码的概念 (P(P4949) ) Cont.03Cont.03

下面是一个全码的例子:– 假设有教师、课程、参考书关系 TCB ,分别有三个属性

教师号( T )、课程号( C )和参考书号( B )。一个教师可以讲授多门课程;一门课程可以为多个教师讲授,他们使用相同的一套参考书;同样每种参考书可以供多门课程使用。 教师 课程 参考书

李立 物理 普通物理学王军 物理 光学原理李立 数学 数学分析张平 数学 微分方程张平 计算数学 数学分析周峰 计算数学 数值计算

Page 23: 第二章 关系数据库 ( 4-6 学时)

5. 5. 关系的类型与性质:关系的类型与性质: (P(P5050))

1)关系的类型

2)基本关系的性质

Page 24: 第二章 关系数据库 ( 4-6 学时)

11)关系的类型)关系的类型

关系可以有三种类型,具体如下 ----

基本关系(通常又称为基本表或基表):基本表是实际存在的表,它是实际存储数据的逻辑表示。

查询表:查询查询结果对应的表。 视图表:视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。

Page 25: 第二章 关系数据库 ( 4-6 学时)

22)基本关系的性质)基本关系的性质

   列是同质的,即每一列的分量是同一类型的数据,来自同一个域。

   不同的列可出自同一个域,称其中的每一个列为一个属性,不同的属性要给予不同的属性名。

     列的顺序无所谓,即列的次序可以任意交换。    任意两个元组不能完全相同。     行的次序无所谓,即行的次序可以任意交换。 分量必须取原子值,即每一个分量都必须是不可

分的数据项。

Page 26: 第二章 关系数据库 ( 4-6 学时)

22)基本关系的性质 )基本关系的性质 Cont.01Cont.01

尽管关系与二维表格、传统的数据文件是非常类似的,但它们之间又有重要的区别。

严格地说,关系是规范化了的二维表中行的集合,为了使相应的数据操作简化,在关系模型中,对关系作了种种限制,关系具有如下特性:

( 1 )关系中不允许出现相同的元组。因为数学上集合中没有相同的元素,而关系是元组的集合,所以作为集合元素的元组应该是唯一的。

( 2 )关系中元组的顺序(即行序)是无关紧要的,在一个关系中可以任意交换两行的次序。因为集合中的元素是无序的,所以作为集合元素的元组也是无序的。根据关系的这个性质,可以改变元组的顺序使其具有某种排序,然后按照顺序查询数据,可以提高查询速度。

Page 27: 第二章 关系数据库 ( 4-6 学时)

22)基本关系的性质 )基本关系的性质 Cont.02Cont.02

( 3 )关系中属性的顺序是无关紧要的,即列的顺序可以任意交换。交换时,应连同属性名一起交换,否则将得到不同的关系。

例如:关系 T1 作如下交换时,无任何影响,如下表所示:

性别 姓名男 李力女 王平男 刘伟

姓名 性别李力 男王平 女刘伟 男

T1

Page 28: 第二章 关系数据库 ( 4-6 学时)

22)基本关系的性质 )基本关系的性质 Cont.03Cont.03

而作如下交换时,不交换属性名,只交换属性列中的值,则得到不同的关系,如下表 :

姓名 性别男 李力女 王平男 刘伟

Page 29: 第二章 关系数据库 ( 4-6 学时)

22)基本关系的性质 )基本关系的性质 Cont.04Cont.04

( 4 )同一属性名下的各个属性值必须来自同一个域,是同一类型的数据。

( 5 )关系中各个属性必须有不同的名字,不同的属性可来自同一个域,即它们的分量可以取自同一个域。

例如,有如下表中关系,职业与兼职是两个不同的属性,但它们取自同一个域职业={教师,工人,辅导员}。

姓名 职业 兼职

张强 教师 辅导员

王丽 工人 教师

刘宁 教师 辅导员

Page 30: 第二章 关系数据库 ( 4-6 学时)

22)基本关系的性质 )基本关系的性质 Cont.05Cont.05

( 6 )关系中每一分量必须是不可分的数据项,或者说所有属性值都是原子的,即是一个确定的值,而不是值的集合,即不可“表中有表”。满足此条件的关系称为规范化关系,否则称为非规范化关系。

例如:在表 2.8 中,籍贯含有省、市/县两项,出现了“表中有表”的现象,则为非规范化关系,而把籍贯分成省、市/县两列,将其规范化,如表 2.9所示。

姓名籍贯省 市 /县

张强 吉林 长春

王丽 山西 大同

姓名 省 市 /县

张强 吉林 长春

王丽 山西 大同

表 2.8 表 2.9

Page 31: 第二章 关系数据库 ( 4-6 学时)

§§2.2.2 2.2.2 关系模式关系模式 数据库中要区分型、值。 - 在关系数据库中,关系模式是型,关系是值。关系模式:对关系的描述。是关系的框架,或称为表框架。它应该:– 指出关系由哪些属性构成,这些属性来自哪些域,以及属性与域之间的映象关系

– 刻画关系必须满足的完整性约束条件 形式化描述为: R ( U , D , dom, F) 其中: R :关系名 U :组成该关系的属性名集合 D :为属性组 u 中属性所来自的域 dom :为属性向域的映象集合 F :为属性间数据的依赖关系

Page 32: 第二章 关系数据库 ( 4-6 学时)

§§2.2.2 2.2.2 关系模式 关系模式 Cont.01Cont.01

关系模式– 关系模式通常可以简记为: R ( A1, A2, …,

An )。而域名及属性向域的映象常常直接说明为属性

的类型、长度。 – 关系模式是静态的、稳定的;– 关系是关系模式在某一时刻的状态或内容,动态的、随时间不断变化的。

关系名

属性名

Page 33: 第二章 关系数据库 ( 4-6 学时)

§§2.2.3 2.2.3 关系数据库(关系数据库( PP5252 )) (在一个给定的应用领域中,所有实体及实体间联系的关系的集合构成一个关系数据库)

关系模式的集合 == 关系数据库的描述 == 关系数据库的型(也可称为数据库的内含( Intention ),包括关系各属性定义及在相应域中的映象。

关系数据库的“型”是稳定不变的。关系数据库的“值”(或叫数据库的外延 Extentio

n )是关系模式在某一时刻对应的关系的集合。(通常称为 ---- 关系数据库)– 随时间而变化– 元组的插入、更新、删除

Page 34: 第二章 关系数据库 ( 4-6 学时)

§§2.2.3 2.2.3 关系数据库 关系数据库 Cont.01Cont.01

关系数据库模式是一组关系模式的集合,是对关系数据库结构的描述,或者说是对关系数据库框架的描述,也称为关系数据库的型。

与关系数据库模式对应的数据库中的当前值,就是关系数据库的内容,称为关系数据库的实例。

例如,在教学数据库中,共有五个关系,其关系模式分别为:– 学生(学号,姓名,性别,年龄,系别)– 教师(教师号,姓名,性别,年龄,系别)– 课程(课程号,课程名,课时)– 选课(学号,课程号,成绩)– 授课(教师号,课程号)

Page 35: 第二章 关系数据库 ( 4-6 学时)

§§2.2.3 2.2.3 关系数据库 关系数据库 Cont.02Cont.02

在每个关系中,又有其相应的数据库的实例– 例如:与学生关系模式对应的数据库中的实例有如下 6个元组:

S1 赵亦 女 17 计算机

S2 钱尔 男 18 信息S3 孙珊 女 20 信息S4 李思 男 21 自动化

S5 周武 男 19 计算机

S6 吴丽 女 20 自动化

Page 36: 第二章 关系数据库 ( 4-6 学时)

§§2.3 2.3 关系的完整性(关系的完整性( PP5252-P-P5555 )) 本质:关系模型的完整性规则,是对关系的某种约束条件。背景:为了维护数据库中数据与现实世界的一致性,对关系数据库的插入、删除和修改操作必须有一定的约束条件,这就是关系模型的三类完整性。

分类:关系模型中有三类完整性约束:

实体完整性

参照完整性

用户定义完整性

必须满足的完整性约束条件(即:关关系的两个不变性系的两个不变性)

DBMS自动支持

体现了具体领域的语义约束

Page 37: 第二章 关系数据库 ( 4-6 学时)

一、实体完整性一、实体完整性 (Entity Integrity P(Entity Integrity P55

33)) 实体完整性是指主键的值不能为空或部分为空。 关系模型中的一个元组对应一个实体,一个关

系则对应一个实体集。– 例如,一条学生记录对应着一个学生,学生关系对应着学生的集合。

规则(实体完整性规则):若属性 A 是基本关系 R 的主码中的属性,则属性 A 不能取空值。

实体完整性是针对基本关系的。

Page 38: 第二章 关系数据库 ( 4-6 学时)

实体完整性实例实体完整性实例例如: 设备库

Equipment(*设备编号,设备名称,规格型号…) SBBH SBMC GGXH

另如:学生基本信息 学号 姓名 出生日期 出生地 民族Student( *Sno, Sname, CSRQ, CSD, MZ, …

再如:选课信息

学号 课程号 成绩SG ( *Sno, *Cno, CJ,… )

均不为空

Page 39: 第二章 关系数据库 ( 4-6 学时)

对实体完整性规则说明对实体完整性规则说明① 实体完整性是针对基本关系而言的。一个基本关系对应现实世界的一个实体集。实体-实体间的联系② 现实世界中实体是可区分的,即它们可以具有某种唯一性标识。③ 关系模型中的主码作为唯一性标识。④ 主码中的属性即主属性不能取空值(空值就是不知道或无意义的值),不是空字符串或 0 。

如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与②矛盾。

Page 40: 第二章 关系数据库 ( 4-6 学时)

二、 参照完整性二、 参照完整性 ((Referential IntegrityReferential Integrity PP5353)) ::

现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系与关系间的引用。

例 1 : 学生(学号,姓名,性别,专业号,年龄)

专业(专业号,专业名) 例 2 : 学生(学号,姓名,性别,专业号,年龄)

课程(课程号,课程名,学分) 选课(学号,课程号,成绩) 例 3 : 学生 2 (学号,姓名,性别,专业号,年龄,班长)

引用返回

Page 41: 第二章 关系数据库 ( 4-6 学时)

例如: 学生: S(* SNO , SNAME , SEX , DPNO ……) 系部: D(* DPNO , DNAME , TEL , LEADER…

…) DPNO 在 S 表中就是一个属性;而 DPNO 在 D 表中则是主码。

定义 2.5 设 F 是基本关系 R 的一个或一组属性,但不是关系 R 的码,如果 F 与基本关系 S 的主码 Ks相对应,则称 F 是基本关系 R 的外码( Foreign key ),并称基本关系 R 为参照关系( Referencing relation ),基本关系 S 为被参照关系( Referenced relation )或目标关系( Target relation )。关系 R 和 S 不一定是不同的关系。

Page 42: 第二章 关系数据库 ( 4-6 学时)

二、 参照完整性 二、 参照完整性 Cont.01Cont.01

参照完整性规则:若属性(或属性组) F 是基本关系R 的外码,它与基本关系 S 的主码 Ks相对应(基本关系 R 和 S 不一定是不同的关系),则对于 R 中每个元组在 F 上的值必须为: 

( 1 )或者取空值( F 的每个属性值均为空值); ( 2 )或者等于 S 中某个元组的主码值。

如图 2.2 所示,学生关系中某个学生(如 s1 或 s2 )“系别”的取值,必须在参照的系别关系中主关系键“系别”的值中能够找到,否则表示把该学生分配到一个不存在的部门中,显然不符合语义。

如果某个学生(如 s11 )“系别”取空值,则表示该学生尚未分配到任何一个系。否则,它只能取专业关系中某个元组的专业号值。

Page 43: 第二章 关系数据库 ( 4-6 学时)

二、 参照完整性 二、 参照完整性 Cont.02Cont.02

S (学生关系)         D (系别关系)SNO

学号 SN

姓名SEX

性别AGE

年龄DEPT

所在系S1 赵亦 女 17 计算机

S2 钱峰 男 18 信息

S3 高原 男 18 管理管理… … … … …

S11 王威 男 19

DEPT

所在系ADDR

地址计算机 1号楼

信息 1号楼

自动化 2号楼

图 2.2 学生表和系别表

取空值,则表示该学生尚未分配到任何一个系

“ 管理”在系别关系中不存在 ,表示把该学生分配到一个不存在的部门中,显然不符合语义

Page 44: 第二章 关系数据库 ( 4-6 学时)

二、 参照完整性 二、 参照完整性 Cont.03Cont.03

在例2中,如果按照参照完整性规则,选课关系中的外部关系键“学号”和“课程号”可以取空值或者取被参照关系中已经存在的值。但由于“学号”和“课程号”是选课关系中主属性,根据实体完整性规则,两个属性都不能为空。所以选课关系中的外部关系键“学号”和“课程号”中能取被参照关系中已经存在的值。

实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作关系的两个不变性。任何关系数据库系统都应该支持这两类完整性。

除此之外,不同的关系数据库系统由于应用环境的不同,往往还需要一些特殊的约束条件,这就是用户定义完整性。

Page 45: 第二章 关系数据库 ( 4-6 学时)

例 4 :( P54 )

学生 ( 学号,姓名,性别,专业号,年龄 )

专业(专业号,专业名)

外码

等价于

学生关系

参照关系

专业关系

被参照关系

专业号

Page 46: 第二章 关系数据库 ( 4-6 学时)

例 5 :( P54 ) 学生 ( *学生号,姓名,性别,专业号,年龄 )

*课程( 课程号,课程名,学分)

*选修( 学号 *, 课程名,成绩名)

等价

于学生关系

选修关系

学号

课程关系

课程号

Page 47: 第二章 关系数据库 ( 4-6 学时)

例 6 :( P54 ) 同一关系属性间也能存在引用关系。 “班长”属性与本身的主码“学号”属性相对应,因此“班长”是外码。这里,学生关系既是参照关系也是被参照关系。

学生( *学号,姓名,性别,专业号,年龄,班长)

学生关系 班长

等价

Page 48: 第二章 关系数据库 ( 4-6 学时)

三、用户定义的完整性三、用户定义的完整性 ((User-defined Integrity User-defined Integrity

PP5555)) 根据具体的应用环境,往往需要一些特殊的约束条

件。 ----需要由用户定义。 此规则反映 ----某一具体应用所涉及的数据必须满足

的语义要求。 例如:某个属性的取值,结合具体应用,必须满足以下语义要求:

某个属性的取值必须取唯一值; 某些属性值之间必须满足一定的函数关系; 某个属性的取值范围在 [a , b] 区间之间等。例如,属性值根据实际需要,要具备一些约束条件,如选课关系中成绩不能为负数。

某些数据的输入格式要有一些限制等。 关系模型应该提供定义和检验这类完整性的机制,以便用统一的、系统的方法处理它们,而不要由应用程序承担这一功能。

Page 49: 第二章 关系数据库 ( 4-6 学时)

§§2.4 2.4 关系代数(关系代数( PP5555-P-P6464 ))

关系模型与其他模型相比,最有特色的是它的数据库语言。

这种语言灵活方便、表达能力和功能都很强。 目前关系数据库所使用的语言一般都具有定义、查询、更新和控制一体化的特点,而查询是最主要的部分。

所以说,关系数据库的核心部分是查询,故又称为查询语言,而查询的条件要使用关系运算表达式来表示。

因此,关系运算是设计关系数据语言的基础。 按表达查询的方法不同,关系运算可分为关系代数和

关系演算两大类。

Page 50: 第二章 关系数据库 ( 4-6 学时)

§§2.4 2.4 关系代数 关系代数 Cont.01Cont.01

定义:关系代数 是一种抽象的查询语言; 是关系操纵语言的一种传统表达方式; 是用对关系的运算来表达查询。

§2.4.1 关系代数的分类及其运算符

§2.4.2 传统的集合运算( P56-P57 )

§2.4.3 专门的关系运算( P58-P64 )

Page 51: 第二章 关系数据库 ( 4-6 学时)

§2.4.1 关系代数的分类及其运算符 关系代数是对关系进行集合代数运算,是基于关系代

数的操作语言,称为关系代数语言,简称关系代数。– 它是由 IBM 在一个实验性的系统上实现的,称为 ISBL(Infor

mation System Base Language) 语言。– ISBL 的每个语句都类似于一个关系代数表达式。

关系代数的运算对象是关系,运算结果也是关系,关系代数用到的运算符主要包括四类:– 集合运算符:∪(并), - (差),∩(交), X (广义笛

卡尔积);– 专门的关系运算符: σ( 选择 ) ,∏(投影),∞(连接),

* (自然连接), ÷ (除);– 算术比较运算符: > (大于),≥(大于等于), < (小

于),≤(小于等于), = (等于),≠(不等于);– 逻辑运算符:∧(与) ,∨(或) ,┐ (非)

Page 52: 第二章 关系数据库 ( 4-6 学时)

§2.4.1 关系代数的分类及其运算符 Cont.01Cont.01

关系代数的运算按运算符的不同主要分为两类:传统的集合运算:把关系看成元组的集合,以元

组作为集合中元素来进行运算,其运算是从关系的“水平”方向即行的角度进行的。包括并、差、交和笛卡尔积等运算。

专门的关系运算:不仅涉及行运算,也涉及列运算,这种运算是为数据库的应用而引进的特殊运算。包括选择、投影、连接和除法等运算。

Page 53: 第二章 关系数据库 ( 4-6 学时)

§2.4.2 传统的集合运算 (P56-P57) 特点:

– 是二目运算;– 将关系看成元组;– 其运算从关系的行的角度进行,包括:并、交、

差、笛卡尔积。传统的集合运算是在两个关系中进行的。但是并

不是任意的两个关系都能进行这种集合运算,而是要在两个满足一定条件的关系中进行运算。那么,对关系有什么要求呢?下面先看一个定义。

Page 54: 第二章 关系数据库 ( 4-6 学时)

定义 2.9 设给定两个关系 R 、 S ,若满足:( 1 )具有相同的度 n;

( 2 ) R 中第 i个属性和 S 中第 i个属性必须来自同一个域。则说关系 R 、 S 是相容的。

除笛卡尔积外,要求参加运算的关系必须满足上述的相容性定义。

Page 55: 第二章 关系数据库 ( 4-6 学时)

1. 1. 并(并( UnionUnion )) 关系 R 和关系 S 的并,是由属于 R或属于 S 的元组组成,即 R 和 S 的所有元组合并,删去重复元组,组成一个新关系,其结果仍为 n 目关系。记作:

R∪S={t|t∈R∨t∈S} 对于关系数据库,记录的插入和添加可通过并运算实现。 一个元素在并集中只出现一次 R 和 S 必须同类型(属性集相同、次序相同,但属性名可

以不同)

R S R∪S

Page 56: 第二章 关系数据库 ( 4-6 学时)

2. 2. 差(差( DifferenceDifference )) 关系 R 与关系 S 的差由属于 R 而不属于 S 的所有元

组组成,即 R 中删去与 S 中相同的元组,组成一个新关系,其结果仍为 n 目关系。记作:

R-S={t|t∈R ┐∧ t∈S} 通过差运算,可实现关系数据库记录的删除。

R S R-S

Page 57: 第二章 关系数据库 ( 4-6 学时)

3. 3. 交(交( IntersectionIntersection )) 关系 R 与关系 S 的交由既属于 R 又属于 S 的元组组

成,即 R 与 S 中相同的元组,组成一个新关系,其结果仍为 n 目关系。记作:

R∩S={t|t∈R∧t∈S} 如果两个关系没有相同的元组,那么它们的交为空。 两个关系的并和差运算为基本运算(即不能用其他运

算表达的运算),而交运算为非基本运算,交运算可以用差运算来表示:

R∩S=R-(R-S)

R S R ∩S

Page 58: 第二章 关系数据库 ( 4-6 学时)

4. 4. 广义笛卡尔积(广义笛卡尔积( Extended Cartesian ProducExtended Cartesian Produc

tt )) 两个分别为 n 目和 m 目关系 R 和 S 的广义笛卡尔积是一个( n+m )列的元组的集合,元组的前 n列是关系 R 的一个元组,后 m列是关系 S 的一个元组。若 R 有 k1个元组, S 有 k2

个元组,则关系 R 和关系 S 的广义笛卡尔积有k1*k2个元组,记作

R×S={tr⌒ts| tr∈R∧ts∈S} 关系的广义笛卡尔积可用于两关系的连接操作

(连接操作将在下一节中介绍)。

Page 59: 第二章 关系数据库 ( 4-6 学时)

例如:(见 P57 实例)设有三个属性列的关系 R 和 S 如下:

A B C

a1

a1

a2

b1

b2

b2

c1

c2

c1

RA B C

a1

a1

a2

b2

b3

b2

c2

c2

c1

S

A B C

a1

a1

a2

a1

b1

b2

b2

b3

c1

c2

c1

c2

R∪SA B C

a1

a2

b2

b2

c2

c1

R∩SA B C

a1 b1 c1

R - S

Page 60: 第二章 关系数据库 ( 4-6 学时)

R×S

R ( A , B , C ) S ( A , B , C )  

A B C A B C  

a1

a1

a1

a1

a1

a1

a2

a2

a2

b1

b1

b1

b2

b2

b2

b2

b2

b2

c1

c1

c1

c2

c2

c2

c1

c1

c1

a1

a1

a2

a1

a1

a2

a1

a1

a1

b2

b3

b2

b2b3

b2

b2

b3

b2

c2

c2

c1

c2

c2

c1

c2

c2

c1

〈 R1S1

〉〈 R1S2

〉〈 R1S3

〉〈 R2S1

〉〈 R2S2

〉〈 R2S3

〉〈 R3S1

〉〈 R3S2

〉〈 R3S3

Page 61: 第二章 关系数据库 ( 4-6 学时)

§2.4.3 专门的关系运算 (P58-P64)

由于传统的集合运算,只是从行的角度进行,而要灵活地实现关系数据库多样的查询操作,必须引入专门的关系运算。

专门的关系运算包括选择、投影、连接、除等。

1. 引入几个相关概念2. 选择( Selection )3. 投影( Projection )4. 连接( Join )5. 除法( Division )6. 关系代数综合应用举例

Page 62: 第二章 关系数据库 ( 4-6 学时)

1. 引入几个相关概念

为叙述上的方便先引入几个概念。

( 1 )元组的分量( 2 )属性列 / 域列( 3 )元组的连接( 4 )象集( Image Se

t )

Page 63: 第二章 关系数据库 ( 4-6 学时)

( 1 )元组的分量 一个元组的分量表示 t [Ai] 设关系模式为 R(A1,A2,……An) ,它的一个关系为 R , t ∈R 表示

t 是 R 的一个元组, t[Ai] 则表示元组 t 中相应于属性 Ai 的一个分量。

A1 A2 … Ai … An

… … … … … …

at1 at2 at3 ati atn

… … … … … …

元组t

分量 t[Ai]

Page 64: 第二章 关系数据库 ( 4-6 学时)

( 1 )元组的分量 Cont.01Cont.01

如:关系模式 S

SNO SNAME SSEX SCSRQ ……

99001……

99058

张三……庞兵

男……男

1980……1979

………………

t : (99058 ,庞兵,男, 1979 ,…… )

t(SNAME)=庞兵,表示元组 t 在姓名 SNAME 上的分量为“庞

兵”。

Page 65: 第二章 关系数据库 ( 4-6 学时)

( 2 )属性列 / 域列若 A={Ai1,Ai2,…,Aik} ,其中 Ai1,Ai2,…,Aik 是 A1,A

2,…,An 中的一部分,则 A称为属性列或域列。

t[A]=(t[Ai1],t[Ai2],…,t[Aik]) 表示元组 t 在属性列A 上诸分量的集合。

A 则表示 {A1,A2,…,An} 中去掉 {Ai1,Ai2,…,Aik}

后剩余的属性组。

A1,A2, A3, …,An

Ai1 Ai2

Page 66: 第二章 关系数据库 ( 4-6 学时)

( 2 )属性列 / 域列 Cont.Cont.0101

姓名 学号 性别 出生日期 身份证号 籍贯… … … … … …

张玫 200101 女 1987.1.3 210211870103980 辽宁刘清 200102 女 1988.4.9 370602880409222 山东田亮 200103 男 1988.10.6 101234881006301 河北

… … … … … …

A

元组 tt[A]=( 刘清 ,200102, 女 )是元组 t 在属性列 A 上诸分量的集

Page 67: 第二章 关系数据库 ( 4-6 学时)

( 3 )元组的连接

R 为 n 目关系, S 为 m 目关系, tr∈R, ts∈S, t

r

⌒ts称为元组的连接( Concatenation ),它是

一个 n+m列的元组,前 n个分量为 R 的一个 n元组,后 m个分量为 S 中的一个 m 元组。

Page 68: 第二章 关系数据库 ( 4-6 学时)

辽宁2102118701039801987.1.3女200101张玫………………

籍贯身份证号出生日期性别学号姓名学生S

tsc

ts

………………………

7801200102

辽宁210211870103980

1987.1.3女200101张玫

成绩课程号SC. 学号籍贯身份证号出生日期性别S. 学号姓名S×SC

7801200102

………

成绩课程号学号选课

SC

ts

︵tsc

tstsc

Page 69: 第二章 关系数据库 ( 4-6 学时)

( 4 )象集( Image Set ) 给定一个关系 R ( X , Z ), X 和 Z 为属性组,定义当 t[X]=

x 时, x 在 R 中的象集( Image set )为 Zx={t[Z]|t∈R , t[X]=x} 它表示 R 中的属性组 X 上值为 x 的诸元组在 Z 上分量的集合。

学号 课程号 成绩200102 02 57

200102 01 78

200101 03 89

… … …

选课 SC

X Z

x

t[Z]

t[Z]

则 Zx={(02,57),(01,78)}

Page 70: 第二章 关系数据库 ( 4-6 学时)

例如:学生 -课程数据库中的选修关系 S-C

SNO CNO Grade

99001990019900299002

001003001002

85907580

t [X]=t[SNO]= x=99001

象集: Zx={ ( 001 , 85 ),( 003 , 90 ) }

t [X]=t [ CNO]=x=001

象集: Zx={ ( 99001 , 85 ),( 99002 ,75 ) }

Page 71: 第二章 关系数据库 ( 4-6 学时)

学号 姓名 性别 年龄 籍贯20010

3张力 女 17 河北

200102

王红 女 18 上海

200101

马闯 男 19 北京

200104

刘树 男 19 广州

学生X

x

则 Zx={(200103, 张力 ,河北 )}

Z

t[Z]

Page 72: 第二章 关系数据库 ( 4-6 学时)

2. 选择( Selection ) ( P58-P60 )

选择又称为限制( Restriction )定义:选择是单目运算,是从关系R中选择满足给定

条件的诸元组。记作: σF ( R )= { t | t∈RF(t)=‘真’ } 其中:

F定义:是选择条件,它是一个逻辑表达式,一个或几个算术表达式用逻辑符连接。取逻辑值为真或假。

F 中的算术表达式基本形式为: X1θY1 , 其中 X1, Y1是属性名、常量或简单函数,属性名也可用它的序号来代替。 θ∈{ >,≥,<,≤,=,≠ } 为比较运算符。

特点:选择运算实际上是从关系 R 中选取使逻辑表达式为真的元组,选择运算是从关系“行”的角度进行的运算。

Page 73: 第二章 关系数据库 ( 4-6 学时)

T (教师表)

TNO教师号

TN姓名

SEX性别

AGE

年龄PROF职称

SAL工资

COMM岗位津贴

DEPT系别

T1 李力 男 47 教授 1500 3000 计算机

T2 王平 女 28 讲师 800 1200 信息

T3 刘伟 男 30 讲师 900 1200 计算机

T4 张雪 女 51 教授 1600 3000 自动化

T5 张兰 女 39 副教授 1300 2000 信息

引用返回

例例 11 ::

Page 74: 第二章 关系数据库 ( 4-6 学时)

S (学生表)

SNO学号

SN姓名

SEX性别

AGE年龄

DEPT系别

S1 赵亦 女 17 计算机S2 钱尔 男 18 信息S3 孙珊 女 20 信息S4 李思 男 21 自动化S5 周武 男 19 计算机S6 吴丽 女 20 自动化

Page 75: 第二章 关系数据库 ( 4-6 学时)

C (课程表)CNO课程号

CN课程名

CT课时

C1 程序设计 60

C2 微机原理 80

C3 数字逻辑 60

C4 数据结构 80

C5 数据库 60

C6 编译原理 60

C7 操作系统 60

Page 76: 第二章 关系数据库 ( 4-6 学时)

SC (选课表)          TC (授课表) SNO学号

CNO课程号

SCORE成绩

S1 C1 90

S1 C2 85

S2 C5 57

S2 C6 80

S2 C7

S2 C5 70

S3 C1 0

S3 C2 70

S3 C4 85

S4 C1 93

S4 C2 85

S4 C3 83

S5 C2 89

TNO教师号

CNO课程号

T1 C1

T1 C4

T2 C5

T3 C1

T3 C5

T4 C2

T4 C3

T5 C5

T5 C7

引用返回

Page 77: 第二章 关系数据库 ( 4-6 学时)

以下例题均是以上图所示的五个关系为例进行运算。 例:查询计算机系的全体学生。

– σDEPT=’ 计算机’ (S) 或– σ5=’ 计算机’ (S) (其中 5 为 DEPT 的属性序号)

结果右图所示。

SNO SN SEX AGE DEPT

S1 赵亦 女 17 计算机

S5 周武 男 19 计算机

Page 78: 第二章 关系数据库 ( 4-6 学时)

例:查询工资高于 1000 元的男教师。– σ(SAL>1000) (SEX=’∧ 男’ ) (T)

结果如图所示。 TNO TN SEX AGE PROF SAL COMM DEPT

T1 李力 男 47 教授 1500 3000 计算机

注意:字符型数据的值应该使用单引号括起来,例如,‘计算机’,‘男’。练习: 1 )查询选择了 课程‘ C1’ 的学生 2 )查询教授了 课程‘ C2’ 的教师

Page 79: 第二章 关系数据库 ( 4-6 学时)

例 2 :选修关系 SC (见 P59图 2.3(c)

)SNO CNO Grade

S1

S2

S3

S4

S5

S6

123231

859075809288

SNO SNAME SDEPT SAGE

S1

S2

S3

S4

S5

S6

ABCDEF

CSCSMAC1MACS

202119192022

学生 Student (见 P59图 2.3(a) )

1 )求计算机科学系( CS )的学生:记作: σSdept=‘cs’(student) 或 σ3=‘cs’(student)

结果为: SNO SNAME SDEPT SAGE

S1

S2

S6

ABF

CSCSCS

202122

引用返回

Page 80: 第二章 关系数据库 ( 4-6 学时)

2 )求年龄大于或等于 20 的学生:

)(20'' StudentAGEDEPT SCSS

)(88'2' SCGradeCNO

4 )求选修课程 2且成绩大于等于 88 分的元组:

3 )求计算机科学系年龄大于等于 20 的学生:

)Student(20SAGE

)(204 Student或

SNO SNAME SDEPT SAGE

S1

S2

S5

S6

ABEF

CSCSMACS

20212022

SNO SNAME SDEPT SAGE

S1

S2

S6

ABF

CSCSCS

202122

SNO CNO Grade

S2 2 90

Page 81: 第二章 关系数据库 ( 4-6 学时)

3. 投影( Projection ) (( PP6060-P-P6161 ))

投影运算也是单目运算,关系 R 上的投影是从 R 中选择出若干属性列,组成新的关系,即对关系在垂直方向进行的运算,从左到右按照指定的若干属性及顺序取出相应列,应删去重复元组。记作:

A(R)={t[A]|t∈R} 其中 A 为 R 中的属性列, 为投影运算符。 从其定义可看出,投影运算是从列的角度进行的运算,这正是选择运算和投影运算的区别所在。选择运算是从关系的水平方向上进行运算的,而投影运算则是从关系的垂直方向上进行的。

投影之后,新关系与原关系可能不相容。 投影之后,去掉了一些列,可能出现重复的元组,在结果

中要去掉重复的元组。因此投影之后,要去掉某些行和列。

Page 82: 第二章 关系数据库 ( 4-6 学时)

例: 查询学生的姓名和所在系( Student 表见例2)

)(, StudentDEPTNAME SS

例:查询学生关系中有哪些系( Student 表见例2)

)(StudentDEPTS

SNAME SDEPT

ABCDEF

CSCSMAC1MACS

SDEPT

CSMAC1

Page 83: 第二章 关系数据库 ( 4-6 学时)

再例:查询教师的姓名,教师号及其职称(教师表参见例1)。 TN, TNO,PROF(T) 或 2,1,5(T) – (其中 2,1,5 分别为 TN 、 TNO 和 PROF 的属性序号)

结果右图所示TN TNO PROF

李力 T1 教授

王平 T2 讲师

刘伟 T3 讲师

张雪 T4 教授

张兰 T5 副教授

上例表明,投影运算可以改变关系的属性次序

Page 84: 第二章 关系数据库 ( 4-6 学时)

又例:查询教师关系中有哪些系(教师表参见例1) 。 DEPT(T)

结果如右图所示

DEPT

计算机

信息

自动化

由上例可以看出,投影后取消了某些属性列后,就可能出现重复行,应该取消这些完全相同的行。所以投影之后,不但减少了属性,元组也可能减少,新关系与原关系不相容。

Page 85: 第二章 关系数据库 ( 4-6 学时)

又例:查询讲授 C5课程的教师号(教师表参见例1) 。 TNO(σCNO=’C5’(TC))

结果如右图所示。 TNO

T2

T3

T5

本例中选取运算和投影运算相结合,先在授课表中选取满足条件的元组,再于 TNO属性上进行投影。

练习:1 )查询 ‘数据库’的课时2 )查询选择了 课程‘ C1’ 的学生的学生号及成绩

Page 86: 第二章 关系数据库 ( 4-6 学时)

4. 连接( Join ) 连接运算是二目运算,是从两个关系的笛卡尔积中选取满足

连接条件的元组,组成新的关系。 设关系 R ( A1,A2,…,An )及 S ( B1,B2,…,Bm ),连接属性

集 X 包含于 {A1,A2,…,An} ,及 Y 包含于 {B1,B2,…,Bm} , X

与 Y 中属性列数目相等,且相对应属性来自相同的域。 【 若 Z={A1,A2 , … , An}/X ( /X :去掉 X 之外的属性)及

W={B1,B2 , … , Bm}/Y ,则 R 及 S可表示为 R(Z,X) , S(W,Y) 。 】

关系 R 和 S 在连接属性 X 和 Y 上的连接,就是在 R×S笛卡尔积中,选取 X属性列上的分量与 Y属性列上的分量满足给定 θ比较条件的那些元组,也就是在 R×S 上选取在连接属性 X,Y 上满足 θ 条件的子集,组成新的关系。新关系的度为 n+m 。

Page 87: 第二章 关系数据库 ( 4-6 学时)

4. 连接( Join ) Cont.01Cont.01

记作: R ∞ S={tr

⌒ts |tr∈R∧ts∈S∧tr[X]θts[Y] 为真 } XY

其中,∞是连接运算符, θ 为算术比较运算符,也称 θ 连接; XθY 为连接条件;

– θ 为“ =” 时,称为等值连接;– θ 为“ <” 时,称为小于连接;– θ 为“ >” 时,称为大于连接。

连接运算为非基本运算,可以用选择运算和广义笛卡尔积运算来表示:– R ∞ S=σxθy ( R×S ) XY

Page 88: 第二章 关系数据库 ( 4-6 学时)

分类:连接运算主要分成两大类:   常用的连接运算     一般的连接运算其中,在连接运算中两种重要的也最为常

用的连接:     等值连接( Equijoin ); 自然连接 (Natural join) 。

Page 89: 第二章 关系数据库 ( 4-6 学时)

等值连接( Equijoin ): 为“=”的连接运算为“等值连接”。它是从关系 R

与 S 的广义笛卡尔积中选取 A 、 B属性值相等的那些元组,即等值连接记为:

一般的连接操作不需要取消重复列,所以是从行的角度进行运算 , 而自然连接是同时从行的角度和列的角度进行运算。

自然连接( Natural join ):是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。即: R 和 S 具有相同的属性组 B (同名),则自然连接记为:

R∞S={t r

⌒ts |tr R t∈ ∧ s S t∈ ∧ r[Y]=ts[Y]}

R ∞ S={t r

⌒ts |tr R t∈ ∧ s S t∈ ∧ r[A]=ts[B]}

A=B

Page 90: 第二章 关系数据库 ( 4-6 学时)

例:如图 (a) 、 (b)所示的两个关系 R 与 S (c) 为 R 和 S 的大于连接( C>D ); (d) 为 R 和 S 的等值连接( C=D ); (e) 为 R 和 S 的等值连接( R.B=S.B ); (f) 为 R 和 S 的自然连接。

A B C

a1 b1 2

a1 b2 4

a2 b3 6

a2 b4 8

B D

b1 5

b2 6

b3 7

b3 8

(a) (b)

R S

Page 91: 第二章 关系数据库 ( 4-6 学时)

R : X={C}

S : Y={D}

大于连接( C>D ) 等值连接( C=D ) R ∞ S R ∞ S C>D C=D

A R.B

C S.B D

a2 b3 6 b1 5

a2 b4 8 b1 5

a2 b4 8 b2 6

a2 b4 8 b3 7

A R.B C S.B D

a2 b3 6 b2 6

a2 b4 8 b3 8

(d)

(c)

Page 92: 第二章 关系数据库 ( 4-6 学时)

R : X={B}

S : Y={B}

等值连接 (R.B=S.B) 自然连接 R ∞ S R ∞ S 或 R*S R.B=S.B

A R.B C S.B D

a1 b1 2 b1 5

a1 b2 4 b2 6

a2 b3 6 b3 7

a2 b3 6 b3 8

A B C D

a1 b1 2 5

a1 b2 4 6

a2 b3 6 7

a2 b3 6 8

(e) (f)

Page 93: 第二章 关系数据库 ( 4-6 学时)

实例: (见 P62图 2.6 ) 关系 R 关系 S

一般连接 (见 P62图 2.6(c) )

A B C

a1

a1

a2

a2

b1

b2

b3

b4

568

12

B E

b1

b2

b3

b3

b5

37

1022

SREC

BS A E

a1

a1

a1

a1

a2

b1

b1

b2

b2

b3

55668

b2

b3

b2

b3

b3

71071010

CRBR

Page 94: 第二章 关系数据库 ( 4-6 学时)

等值连接 (见 P62图 2.6(d) ) SRBSBR

BR BS A C E

a1

a1

a2

a2

b1

b2

b3

b3

5688

b1

b2

b3

b3

37

102

自然连接 (见 P62图 2.6(e) ) SR

A B C E

a1

a1

a2

a2

b1

b2

b3

b3

5688

37102

Page 95: 第二章 关系数据库 ( 4-6 学时)

结合上例,我们可以看出等值连接与自然连接的区别:

1. 等值连接中不要求连接属性的属性名相同,而自然连接要求连接属性的属性名必须相同,即两关系有同名属性才能进行自然连接。– 如上例 R 中的 C 列和 S 中的 D 列可进行等值连接,但因为属

性名不同,不能进行自然连接。

2. 等值连接不将重复属性去掉,而自然连接去掉重复属性,也可以说,自然连接是去掉重复列的等值连接。– 如上例 R 中的 B 列和 S 中的 B 列进行等值连接时,结果有两

个重复的属性列 B, 而进行自然连接时,结果只有一个属性列B 。

Page 96: 第二章 关系数据库 ( 4-6 学时)

例 :查询讲授数据库课程的教师姓名(教师表参见例1) 。– ΠTN(σCN=’ 数据库’ (C) ∞ ΠTNO,CNO(TC) ∞ΠTNO,TN(T)) 或– ΠTN(ΠTNO(σCN=’ 数据库’ (C) ∞TC) ∞ ΠTNO,TN(T))

结果如右图所示。

TN

王平

刘伟

张兰

Page 97: 第二章 关系数据库 ( 4-6 学时)

5. 除法( Division )

除法运算是二目运算 前提:设有关系 R ( X , Y )与关系 S ( Y , Z ),其中 X , Y , Z 为属性集合, R 中的 Y 与 S 中的 Y可以有不同的属性名,但对应属性必须出自相同的域。

关系 R 除以关系 S 所得的商是一个新关系 P ( X ),P 是 R 中满足下列条件的元组在 X 上的投影:元组在X 上分量值 x 的象集 Yx 包含 S 在 Y 上投影的集合。记作:– R÷S={tr[X]|tr∈R Π∧ y(S)Yx}

其中, Yx 为 x 在 R 中的象集, x= tr[X] 。

Page 98: 第二章 关系数据库 ( 4-6 学时)

除法是既从列的角度又从行的角度对关系 R进行运算。首先,新关系 P 中只保留属性列 X;

其次,新关系 P 中只保留这样的 X值 x : S 在Y 上投影的集合是 x 的象集 Yx 的子集。

除法运算为非基本运算,可以表示为:

– R÷S=Πx(R) - Πx(Πx(R)×S - R) (error)

Page 99: 第二章 关系数据库 ( 4-6 学时)

例:已知关系 R 和 S ,如下图所示,求 R÷S 。

A B C D E

a1 b2 c3 d5 e1

a1 b2 c4 d6 e1

a2 b4 c1 d3 e3

a3 b5 c2 d8 e4

C D F

c3 d5 f3

c4 d6 f4

本题中 X={A,B,E} Y={C,D} , Z={F} 。其中,在关系 R 中,X可以取三个值 {(a1,b2,e1),(a2,b4,e3),(a3,b5,e4)} ,它们的象集分别为:

–(a1,b2,e1) 的象集为 {(c3,d5),(c4,d6)}

–(a2,b4,e3) 的象集为 {(c1,d3)}

– (a3,b5,e4) 的象集为 {(c2,d8)}

S 在 Y 上的投影为 {(c3,d5),(c4,d6)}

R S

A B E

a1 b2 e1

R÷S

Page 100: 第二章 关系数据库 ( 4-6 学时)

除法运算同时从行和列的角度进行运算,适合于包含“至少、全部”之类的短语的查询。

例 :查询选修了全部课程的学生学号和姓名。

ΠSNO,CNO(SC)÷ΠCNO(C)*ΠSNO,SN(S)

Page 101: 第二章 关系数据库 ( 4-6 学时)

例 6 :(见 P63图 2.7 )设关系 R 为 关系 S 为

A B C

a1

a2

a3

a1

a4

a2

a1

b1

b3

b4

b2

b6

b2

b2

c2

c7

c6

c3

c6

c3

c1

B C D

b1

b3

b4

c2

c1

c3

d1

d1

d2

B 、 C 为 R 、 S 两个关系中可比属性值R(X , Y) S(Y , Z) 其中 X=A , Y= ( B , C ),Z=D

求: R÷S

Page 102: 第二章 关系数据库 ( 4-6 学时)

解:①求 Y(S)= B,C(S)={(b1,c2),(b2,c1),(b2,c3)}

②求 X(R) = A(R) ={a1,a2,a3,a4} = { t[X] | t R }

③求 A 为 a1 、 a2 、 a3 、 a4 在 R 上的象集A=a1 的象集: { (b1 ,c2) ,(b2 ,c3) ,(b2 ,c1) }

A=a2 的象集: { (b2 ,c7) ,(b2 ,c3) }

A=a3 的象集: { (b4 ,c6) }

A=a4 的象集: { (b6 ,c6) }

比较 ai 的象集与 S 在 B 、 C 上投影:显然, a1 的象集包含 S 在 B 、 C 上投影因此: R÷S 结果为:

A

a1

Page 103: 第二章 关系数据库 ( 4-6 学时)

例 7 : 查询至少选修 1号课程和 3号课程的学生号码解:构造一个临时关系 K (如下), K SC

1

3

SNO CNO Grade

9500195001950019500295002

12323

9285889080

然后求 95001 的象集: {1 , 2 , 3}

95002 的象集: {2 , 3}

只有 95001 的象集包含 K ,所以结果为

}95001{)(, KSCNONO CS

SNO

95001

Page 104: 第二章 关系数据库 ( 4-6 学时)

Student SNO SNAME SSEX SAGE SDEPT

95001950029500395004

李勇刘晨王敏张力

男女女男

20191819

CS1S

MA1S

6. 关系代数综合应用举例(见(见 PP6363-P-P6464 ))

Page 105: 第二章 关系数据库 ( 4-6 学时)

Course CNO CNAME CPNO

(先行课 )

CCredit

( 学分)

1234567

数据库数学信息系统操作系统数据结构数据处理Pascal 语言

5 167 6

4243424

Page 106: 第二章 关系数据库 ( 4-6 学时)

SC

SNO CNO Grade

9500195001950019500295002

12323

9285889080

Page 107: 第二章 关系数据库 ( 4-6 学时)

例 8 : 查询选修了 2号课程的学生的号码:}95002,95001{))(( '2' SC

NONO CS 例 9 : 查询至少选修了一门其直接先修课为 5号课程的学生姓名。解: Sname(Cpno=‘5’(course) SC πSno,Sname(student))

或:Sname(πSno(Cpno=‘5’(course) SC) πSno,Sname(student))

Page 108: 第二章 关系数据库 ( 4-6 学时)

与 SC 连接:

)('5' CoursePNOC

CNO CNAME CPNO Ccredit

1 数据库 5 4

SCCoursePNOC )('5'

SNO CNO CNAME CPNO Grade CCredit

95001 1 数据库 5 92 4

}{)( 李勇StudentNAMES

Sno

95001

Sno Sname Ssex Sage Sdept

95001 李勇 男 20 CS

πSno 然后与 Student 连接:

Page 109: 第二章 关系数据库 ( 4-6 学时)

例 10 : 查询选修了全部课程的学生号码和姓名

)('5''2' SCNONO CC

例: 查询选修了课程 2或课程 3 的情况

Sno,Cno(SC)÷πCno(course) πSno,Sname(student)

Page 110: 第二章 关系数据库 ( 4-6 学时)

§§2.5 2.5 关系演算关系演算

关系代数与关系演算完全等价,不作要求,希望大家课后自学。

Page 111: 第二章 关系数据库 ( 4-6 学时)

小 结小 结 关系数据库系统是目前使用最广泛的数据库系

统,本书的重点也是讨论关系数据库系统。

本章系统地介绍了关系数据库的一些基本概念,其中包括关系模型的数据结构、关系的完整性及其关系操作。

结合实例详细介绍了关系代数的具体使用方法。

这些概念及方法对理解本书的内容非常重要。

Page 112: 第二章 关系数据库 ( 4-6 学时)

作业作业Page 80