Presentation is loading. Please wait.

Presentation is loading. Please wait.

数据库技术 第二章 关系数据库 中国科学技术大学网络学院 阚卫华.

Similar presentations


Presentation on theme: "数据库技术 第二章 关系数据库 中国科学技术大学网络学院 阚卫华."— Presentation transcript:

1 数据库技术 第二章 关系数据库 中国科学技术大学网络学院 阚卫华

2 第二章 关系数据库 (8学时) 2.1 关系模型概述 2.2 关系数据结构及形式化定义 2.3 关系的完整性 2.4 关系代数
第二章 关系数据库 (8学时) 2.1 关系模型概述 2.2 关系数据结构及形式化定义 2.3 关系的完整性 2.4 关系代数 * 2.5 关系演算 2.6小结 2018年11月22日星期四

3 关系数据库简介 关系数据库是应用数学方法来处理数据库中的数据。系统地、严格地提出关系数据模型的是美国IBM公司的E.F.Codd。
   1970 年,E.F.Codd在美国计算机学会会刊《 Communication of the ACM 》上发表的题为“A Relational Model of Data for Large Shared Data Banks”的论文,首先提出了关系数据模型,开创了数据库系统的新纪元。之后,他又提出了关系代数和关系演算的概念,提出了函数依赖的概念; 2018年11月22日星期四

4 关系数据库简介(续) 1972 年提出了关系的第一、第二、第三范式; 1974 年提出了关系的BC范式(Boyce - Codd),为关系数据库奠定了理论基础 (由于Codd对关系数据库理论的突出贡献,他获得了ACM的最高奖:图灵奖)。20世纪80年代后,关系数据库系统成为最重要、最流行的数据库系统(数据库系统产品:1. 典型实验系统的 System R; University INGRES 典型商用系统的ORACLE;SYBASE;INFORMIX;DB2;INGRES) 。 2018年11月22日星期四

5 2.1 关系模型概述 关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。 一、单一的数据结构 关系
一、单一的数据结构  关系 现实世界的实体以及实体间的各种联系均用关系来表示。 数据的逻辑结构:二维表。 关系模型中的数据结构非常单一。从用户角度来看,关系模型中数据的逻辑结构是一张二维表。 2018年11月22日星期四

6 二、关系操作 (1) 关系模型中常用的关系操作包括7 种 查询: 选择;投影;连接;除;并;交; 差。
(1) 关系模型中常用的关系操作包括7 种 查询: 选择;投影;连接;除;并;交; 差。 (2)数据更新:增加、删除、修改3种。    查询的表达能力是其中最主要的部分;关系模型给出了关系操作的能力,但对RDBMS语言没有给出具体的语法要求。 2018年11月22日星期四

7 集合操作方式(即操作的对象和结果都是集合。非关系数据模型的数据操作方式:一次一记录的方式)。
(3) 关系操作的特点:    集合操作方式(即操作的对象和结果都是集合。非关系数据模型的数据操作方式:一次一记录的方式)。 2018年11月22日星期四

8 (4)关系数据语言    关系数据语言包括:A)关系代数语言;B)关系演算语言(元组关系演算语言、域关系演算语言);C)具有关系代数和关系演算双重特点的语言三类。这些关系数据语言的共同特点是:语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够嵌入到高级语言中使用。 2018年11月22日星期四

9 A)关系代数语言:用对关系的运算来表达查询要求。典型代表:ISBL B)关系演算语言:用谓词来表达查询要求
1) 元组关系演算语言:谓词变元的基本对象是元组变量。典型代表:APLHA, QUEL     2) 域关系演算语言 :谓词变元的基本对象是域变量。典型代表:QBE 2018年11月22日星期四

10 C)具有关系代数和关系演算双重特点的语言。
   *早期的关系操作能力通常用代数方式和逻辑方式来表示,分别称为关系代数和关系演算。关系演算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。这三种语言在表达能力上是完全等价的。 C)具有关系代数和关系演算双重特点的语言。 典型代表:SQL 2018年11月22日星期四

11    这是一种介于关系代数和关系演算之间的语言SQL(Structured Query Language)。SQL不仅具有丰富的查询功能,而且具有数据定义和数据控制功能,是集查询、DDL、DML和DCL于一体的关系数据语言。它充分体现了关系数据语言的特点(优点),是关系数据库的标准语言。 2018年11月22日星期四

12 (5)关系数据语言的特点    关系数据语言是一种高度非过程化的语言;存取路径的选择由DBMS的优化机制来完成,不必请求DBA为其建立特殊的存取路径;用户不必用循环结构就可以完成数据操作;能够嵌入到高级语言中使用;理论上已经证明:关系代数、元组关系演算和域关系演算三种语言在表达能力上是完全等价的。 2018年11月22日星期四

13 三、关系的三类完整性约束 实体完整性:通常由关系系统自动支持; 参照完整性:通常由关系系统自动支持;
 三、关系的三类完整性约束 实体完整性:通常由关系系统自动支持; 参照完整性:通常由关系系统自动支持; ( 实体完整性和参照完整性是关系模型必须满足的完整性约束条件;早期系统不支持,目前大型系统能自动支持。) 用户定义的完整性:反映应用领域需要遵循的约束条件,体现了具体领域中的语义约束。用户定义后由系统支持。    下面将分别讨论关系模型的三个方面(第三章将专门讨论SQL)。 2018年11月22日星期四

14 2.2 关系数据结构及形式化定义    在关系模型中,无论是实体还是实体之间的联系,都是由单一的结构类型(即:关系或表)来表示。在此以前,尽管已经讨论过关系模型以及有关的概念,但那是非形式化的。这里我们从集合论的角度给出关系数据结构的形式化定义(关系模型是建立在集合代数的基础的)。 2018年11月22日星期四

15 2.2.1 关系 1.域(Domain):域是一组具有相同数据类型的值的集合。
    与以前域的概念在本质上是一样的,只不过抽象为数据类型。(注:数据类型是一个很重要的概念。例如:C语言中数据类型定义为整型的数据。它表示:在具体的计算机内的取值范围<如在微机中的范围为-32767~32768>;它在机内的表示<如为补码形式>;它所能允许的操作<如+、-、*、/、% 等运算>;数据类型可以构成较为复杂的数据结构<即:数据的组织形式>)。 2018年11月22日星期四

16 2. 笛卡尔积(Cartesian Product) 给定一组域D1,D2,…,Dn,这些域中可以有相同的。
{(d 1,d 2,…,d n)|d i D i,i=1,2,…,n} 其中每一个元素(d 1,d 2,…,d n)叫做一个n元组(n-tuple)或简称元组(Tuple)。元组中的每一个值d i叫做一个分量(Component)。 2018年11月22日星期四

17   若D i (i=1,2,…,n)为有限集,其基数(Cardinal number)为m i(i=1,2,…,n),则D1×D2×…×Dn的基数M为:
     2018年11月22日星期四

18 笛卡儿积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应一个域。
下面以实际的例子做笛卡儿积的运算过程。所有域的所有取值的一个组合不能重复。 2018年11月22日星期四

19 则D1,D2,D3的笛卡尔积为: 例 给出三个域: D1=导师集合SUPERVISOR ={ 张清玫,刘逸 }
例 给出三个域: D1=导师集合SUPERVISOR ={ 张清玫,刘逸 } D2=专业集合SPECIALITY={计算机专业,信息专业} D3=研究生集合POSTGRADUATE={李勇,刘晨,王敏} 则D1,D2,D3的笛卡尔积为: 2018年11月22日星期四

20 {(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),
则D1,D2,D3的笛卡尔积为:  D1×D2×D3 = {(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨), (张清玫,计算机专业,王敏),(张清玫,信息专业,李勇), (张清玫,信息专业,刘晨),(张清玫,信息专业,王敏), (刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨), 2018年11月22日星期四

21 (刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),
(刘逸,信息专业,刘晨),(刘逸,信息专业,王敏) } 其中, (张清玫,计算机专业,李勇)等都是元组[笛卡尔积中每一个元素(d1,d2,…,dn)] ; [笛卡尔积元素(d1,d2,…,dn)中的每一个值 d i 叫作一个分量] :张清玫,计算机专业,李勇等。 2018年11月22日星期四

22 在上例中,基数为:2×2×3=12,即D1×D2×D3共有2×2×3=12个元组,12个元组可列成一张二维表。
   笛卡尔积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应一个域。 继续P23 2018年11月22日星期四

23 表2.1 D1,D2,D3的笛卡尔积 SUPERVISOR SPECIALITY POSTGRADUATE
张清玫   计算机专业     李勇 张清玫   计算机专业     刘晨 张清玫   计算机专业     王敏 张清玫   信息专业      李勇  张清玫   信息专业      刘晨 张清玫   信息专业      王敏  刘逸    计算机专业     李勇 刘逸    计算机专业     刘晨  刘逸    计算机专业     王敏 刘逸    信息专业      李勇  刘逸    信息专业      刘晨 刘逸    信息专业      王敏  返回P21 继续P23 返回P29 2018年11月22日星期四

24 3.关系(Relation) 关系的定义: D1×D2×…×Dn的子集叫作在域 D1,D2,…,Dn上的关系,表示为
R(D1,D2,…,Dn),这里R表示关系的名字, n表示关系的目或度(Degree)。 2018年11月22日星期四

25 D1×D2×…×Dn表示的是域上所有可能的组合,在现实生活中很多元组是无意义的数据,而一个关系肯定包含在D1×D2×…×Dn之中,因此,在数学上把关系定义为D1×D2×…×Dn的子集。
2018年11月22日星期四

26 关系中的每个元素是关系中的元组,通常用t表示。 当n=1时,称该关系为单元关系
 (Unary relation)。    当n=2时,称该关系为二元关系(Binary relation)。 2018年11月22日星期四

27 注意:关系是笛卡尔积的有限子集。无限关系在数据库系统中是没有意义的。
   关系是笛卡儿积的有限子集,所以关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性(Attribute)。n目关系必有n个属性。    注意:关系是笛卡尔积的有限子集。无限关系在数据库系统中是没有意义的。 2018年11月22日星期四

28 候选码:若关系中的某一属性或属性组的值能唯一地标识一个元组,则称该属性组为候选码(Candidate key)。
若一个关系有多个候选码,则选定其中一个为主码(Primary key)。主码中的所有属性称为主属性(Prime attribute)。不包含在任何候选码中的属性称为非码属性(非主属性)(Non-key attribute)。 2018年11月22日星期四

29 在最简单的情况下,候选码只包含一个属性。在最极端的情况下,关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)。
2018年11月22日星期四

30 例 在表2.1 的笛卡尔积中取出子集(有实际意义的元组)来构造关系。
   例 在表2.1 的笛卡尔积中取出子集(有实际意义的元组)来构造关系。    由于一个研究生只师从一个导师,学习某一门专业,所以笛卡尔积中的许多元组都是没有实际意义的。现从中取出有实际意义的元组来构造关系。 2018年11月22日星期四

31 关系名:SAP,属性名:SUPERVISOR,SPECIALITY和POSTGRADUATE。
 假设:导师与专业是1:1,即一个导师只有一个专业;导师与研究生是1:n,即一个导师可以带多名研究生,而一名研究生只有一个导师。   如表 2.2 所示 继续课程P32 2018年11月22日星期四

32 {(张清玫,信息专业,李勇), (张清玫,信息专业,刘晨),(刘逸,信息专业,王敏)}如表 2.2 所示。
这样,SAP关系可以包含三个元组: {(张清玫,信息专业,李勇), (张清玫,信息专业,刘晨),(刘逸,信息专业,王敏)}如表 2.2 所示。 表 2.2 SAP关系 返回P30 SUPERVISOR SPECIALITY POTGRADUATE 信息专业 李勇 张清玫 张清玫 信息专业 刘晨 刘逸 信息专业 王敏 继续课程P32 2018年11月22日星期四

33 三种关系类型: 基本关系(基本表或基表): 实际存在的表,是实际存储数据的逻辑表示。 查询表:查询结果对应的表。 视图表:
由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。 2018年11月22日星期四

34 当关系作为关系数据模型的数据结构时,需要给予如下的限定和扩充:
   当关系作为关系数据模型的数据结构时,需要给予如下的限定和扩充: ⑴ 无限关系在数据库系统中是无意义的。因此,限定关系数据模型中的关系必须是有限集合。 ⑵ 通过为关系的每个列附加一个属性名的方法取消关系元组的有序性。说明见下页 2018年11月22日星期四

35 (d1,d2,…,dn )≠(d2,d1,…,dn ) 但关系满足交换律,即
  由于笛卡尔积不满足交换律,即 (d1,d2,…,dn )≠(d2,d1,…,dn ) 但关系满足交换律,即  (d1,d2 ,…,di ,dj ,…,dn) =   (d1,d2 ,…,dj,di ,…,dn)    (i,j = 1,2,…,n)  解决方法:为关系的每个列附加一个属性名的方法取消关系元组的有序性。 2018年11月22日星期四

36 基本关系具有以下六条性质:    因此,基本关系具有以下六条性质:注意:在许多实际关系数据库产品中,基本表并不完全具有这六条性质,例如,有的数据库产品(如FoxPro)仍然区分了属性顺序和元组的顺序;许多关系数据库产品中,例如Oracle,FoxPro等,它们都允许关系表中存在两个完全相同的元组,除非用户特别定义了相应的约束条件。 2018年11月22日星期四

37 基本关系具有以下六条性质(续): ① 列是同质的(Homogeneous),即每一列中的分量是同一类型的数据,来自同一个域。
② 不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。   这样,在上例中也可以只给出两个域: 人(PERSON)= 张清玫,刘逸,李勇,刘晨,王敏 专业(SPECIALITY)= 计算机专业,信息专业 2018年11月22日星期四

38 *SAP关系的导师属性和研究生属性都从PERSON域中取值。但为了避免混淆,必须给这两个属性取不同的属性名,而不能直接使用域名。
   例如,定义:导师属性名为SUPERVISOR-PERSON(或SUPERVISOR),研究生属性名为POSTGRADUATE-PERSON(或POSTGRADUATE)。 2018年11月22日星期四

39 基本关系具有以下六条性质(续): ③ 列的顺序无所谓,即列的次序可以任意交换。
   遵循这一性质的数据库产品(如Oracle),增加新属性时,永远是插至最后一列。    但也有许多关系数据库产品没有遵循这一性质,例如FoxPro仍然区分了属性顺序。 2018年11月22日星期四

40 基本关系具有以下六条性质(续): ④ 任意两个元组不能完全相同。
   这是由笛卡尔积的性质决定的。但许多关系数据库产品没有遵循这一性质。例如:Oracle,FoxPro等都允许关系表中存在两个完全相同的元组,除非用户特别定义了相应的约束条件。 2018年11月22日星期四

41 基本关系具有以下六条性质(续): ⑤ 行的顺序无所谓,即行的次序可以任意交换。
 基本关系具有以下六条性质(续): ⑤ 行的顺序无所谓,即行的次序可以任意交换。    遵循这一性质的数据库产品( 如Oracle),插入一个元组时永远插至最后一行。但也有许多关系数据库产品没有遵循这一性质,例如FoxPro 仍然区分了元组的顺序。 2018年11月22日星期四

42 基本关系具有以下六条性质(续): ⑥ 分量必须取原子值,即关系的每一个分量都必须是一个不可分的数据项。
   分量必须取原子值,这是规范条件中最基本的一条。关系模型要求关系必须是规范化的,即要求关系模式必须满足一定的规范条件。关系的每一个分量都必须是一个不可分的数据项。   规范化的关系简称为范式(Normal Form)。 2018年11月22日星期四

43    例如,表2.3虽然表达了导师与研究生之间的一对多关系,但由于POSTGRADUATE分量取了两个值,不符合规范化的要求,因此,这样的关系在数据库中是不允许的。
2018年11月22日星期四

44 表2.3 非规范化关系: POSTGRADUATE SUPERVISOR SPECIALITY PG1 PG2 张清玫 刘晨 信息专业 李勇
刘逸 信息专业 王敏 返回P42 2018年11月22日星期四

45 2.2.2 关系模式 什么是关系模式?    在数据库中要区分型和值的概念。在关系数据库中,关系模式是型,关系是值。关系模式是对关系的描述。描述一个关系应该有如下几个方面: 2018年11月22日星期四

46 1.关系实质上是一张二维表,表的每一行为一个元组,表的每一列为一个属性。一个元组就是该关系所涉及的属性集的笛卡儿积的一个元素。关系是元组的集合,因此,关系模式必须指出这个元组集合的结构(即它由哪些属性构成,这些属性来自哪些域,以及属性与域之间的映象关系)。 2018年11月22日星期四

47 2.一个关系通常是由赋予它的元组语义来确定的。元组语义实质上是一个n目谓词(n是属性集中属性的个数)。凡使该n目谓词为真的笛卡儿积中的元素(或者说凡符合元组语义的那部分元素)的全体就构成了该关系模式的关系。 2018年11月22日星期四

48 3.关系模式应当刻划出这些完整性约束条件。  现实世界随着时间在不断地变化,因而在不同的时刻,关系模式的关系也会有所变化。尽管如此,现实世界的许多已有事实限定了的关系模式所有可能的关系必须满足一定的完整性约束条件。这些约束或者通过对属性取值范围的限定(例如,在职职工年龄的限制),或者通过属性值之间的相互关联(主要体现于属性值的相等与否)反映出来。 2018年11月22日星期四

49 定义关系模式: 关系模式(Relation Schema)(至此,我们所定义的关系模式应当是一个5元组)可以形式化地表示为:
定义关系模式:      关系模式(Relation Schema)(至此,我们所定义的关系模式应当是一个5元组)可以形式化地表示为:    R(U,D,dom,F)    其中:R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,dom为属性向域的映象集合,F为属性间数据的依赖关系集合。 2018年11月22日星期四

50 dom(SUPERVISOR - PERSON)=
   *例如:在上面的例子中,由于导师和研究生出自同一个域(:人),所以要取不同的属性名,并在模式中定义属性向域的映象,即说明它们分别出自哪个域,例如: dom(SUPERVISOR - PERSON)=   dom(POSTGRADUATE - PERSON)= PERSON 2018年11月22日星期四

51 关系模式通常可以简记为:R (U) 或 R (A1,A2,…,An)
2018年11月22日星期四

52 关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。但在实际中,人们常常把关系模式和关系统称为关系(可以通过上下文加以区别)。 2018年11月22日星期四

53 2.2.3 关系数据库 分清关系数据库型和值的概念。 1. 关系数据库
在一个给定的应用领域中,所有实体及实体之间联系的关系的集合,构成一个关系数据库。 (在关系模型中,实体以及实体之间的联系都是用关系来表示的。例如,导师实体、研究生实体之间的一对多联系都可以分别用一个关系来表示。) 2018年11月22日星期四

54 关系数据库的型,称为关系数据库模式,是对关系数据库的描述,它包括若干域的定义以及在这些域上定义的若干关系模式。
2. 关系数据库的型与值 关系数据库也有型和值之分。 关系数据库的型,称为关系数据库模式,是对关系数据库的描述,它包括若干域的定义以及在这些域上定义的若干关系模式。 关系数据库的值,是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。 2018年11月22日星期四

55 2.3 关系的完整性 如前所述: 关系模型的完整性规则是对关系的某种约束条件。关系模型中可以有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,它们应该由关系系统自动支持。 2018年11月22日星期四

56 一、实体完整性(Entity Integrity)
实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。 例 如:在 关 系 “SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)”中,研究生姓名POSTGRADUATE属性为主码(假设研究生不会重名),则其不能取空值。 2018年11月22日星期四

57 实体完整性规则规定:基本关系的所有主属性都不能取空值,而不仅是主码整体不能取空值。
例如:学生选课关系“选修(学号,课程号,成绩)”中,“学号,课程号”为主码,则“学号”和“课程号”都不能取空值。 2018年11月22日星期四

58 对于实体完整性规则说明如下: (1) 实体完整性规则是针对基本关系而言的。一个 基本表通常对应现实世界的一个实体集。
(1) 实体完整性规则是针对基本关系而言的。一个  基本表通常对应现实世界的一个实体集。 (2) 现实世界中的实体是可区分的,即它们具有某  种唯一性标识。 (3) 关系模型中以主码作为唯一性标识。   (4) 主码中的属性不能取空值(空值:“不知道”或“无意义”),如果主属性取空值,则说明存在某个不可标识的实体(即存在不可区分的实体),但这与(2)点相矛盾,因此,这个规则称为实体完整性。 2018年11月22日星期四

59 二、参照完整性 现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系与关系之间的引用。关系间的引用举例: 例1 学生实体和专业实体以及专业与学生间的一对多联系 [主码用下划线标识]  学生(学号 ,姓名,性别,专业号 ,年龄) 专业(专业号 ,专业名) 说明 转P69 2018年11月22日星期四

60 这两个关系之间存在着属性的引用,学生关系引用了专业关系的主码“专业号”。显然,学生关系中的“专业号”值必须是确实存在的、已有专业的、专业号(即专业关系中有该专业的记录)。这也就是说,学生关系中的某个属性的取值需要参照专业关系的属性取值。 继续 2018年11月22日星期四

61 例2 学生、课程、学生与课程之间的多对多联系: 学生(学号, 姓名,性别,专业号,年龄) 课程(课程号 ,课程名,学分)
例2 学生、课程、学生与课程之间的多对多联系: 学生(学号, 姓名,性别,专业号,年龄) 课程(课程号 ,课程名,学分) 选修(学号 ,课程号 ,成绩) 继续课程P62 说明见下页P61 转P70 2018年11月22日星期四

62 这三个关系之间存在着属性的引用,即选修关系引用了学生关系的主码“学号”和课程关系的主码“课程号”;同样,选修关系中的“学号” 值必须是确实存在的学生的学号,即学生关系中有该学生的记录;选修关系中的“课程号” 值也必须是确实存在的课程的课程号,即课程关系中有该课程的记录。或者说,选修关系中某些属性的取值需要参照其它关系的属性取值。 继续课程P62 返回例2P60 2018年11月22日星期四

63 不仅两个或两个以上的关系之间可以存在引用关系,同一关系内部属性之间也可能存在引用关系。
例3 学生实体及其内部的领导联系( 一对多) :在 学生2(学号,姓名,性别,专业号,年龄,班长)中,“学号”属性是主码,“班长”属性表示该学生所在班级的班长的学号,它引用了本关系“学号”属性,即“班长”必须是确实存在的学生的学号。 转P71 2018年11月22日星期四

64 外码(Foreign Key) 外码定义: 设 F 是基本关系 R 的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码(Foreign Key),并称基本关系R为参照关系(Referencing Relation),基本关系S为被参照关系Referenced Relation)或目标关系(Target Relation)。关系R和S不一定是不同的关系。 2018年11月22日星期四

65 注意:F不能是关系R的主码,Ks必须是关系S的主码。 显然,目标关系S的主码Ks和参照关系的外码F必须定义在同一个(或一组)域上。
   在例1中,学生关系的“专业号” 属性与专业关系的主码“专业号”相对应,因此,“专业号” 属性是学生关系的外码。这里专业关系是被参照关系,学生关系为参照关系。如图2.1(a)所示: 继续课程P66 2018年11月22日星期四

66 图2.1 关系的参照图 专业号 学生关系 专业关系 ( a ) 学号 课程号 学生关系 选修关系 课程关系 ( b ) 返回P64
2018年11月22日星期四

67    在例2中,选修关系的“学号”属性与学生关系的主码“学号”相对应,“课程号”属性与课程关系的主码“课程号” 相对应,因此,“学号”和“课程号” 属性是选修关系的外码。这里学生关系和课程关系均为被参照关系,选修关系为参照关系。如图2.1(b)所示。 2018年11月22日星期四

68 在例3中,“班长”属性与本身的主码“学号”属性相对应,因此,“班长”是外码。这里学生2关系既是参照关系也是被参照关系。
   在例3中,“班长”属性与本身的主码“学号”属性相对应,因此,“班长”是外码。这里学生2关系既是参照关系也是被参照关系。    需要指出的是,外码并不一定要与相应的主码同名(如例3)。不过,在实际应用当中,为了便于识别,当外码与相应的主码属于不同的关系时,往往给它们取相同的名字。参照完整性规则就是定义外码与主码之间的引用规则。 2018年11月22日星期四

69 参照完整性规则:    参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:   或者取空值(F的每个属性值均为空值);   或者等于S中某个元组的主码值。 2018年11月22日星期四

70 例如,对于例1,学生关系中每个元组的“专业号”属性只能取下面两类值: (1)空值(表示尚未给该学生分配专业);
   例如,对于例1,学生关系中每个元组的“专业号”属性只能取下面两类值: (1)空值(表示尚未给该学生分配专业); (2)非空值(这时该值必须是专业关系中某个元组的“专业号”值 ,表示该学生不可能分配到一个不存在的专业中。即被参照关系“专业”中一定存在一个元组,它的主码值等于该参照关系“学生”中的外码值)。 2018年11月22日星期四

71    对于例2,按照参照完整性规则,“学号”和“课程号”属性也可以取两类值:空值或目标关系中的已经存在的值。但由于“学号”和“课程号”是选修关系中的主属性,按照实体完整性规则,它们均不能取空值。所以选修关系中的“学号”和“课程号” 属性实际上只能取相应被参照关系中已经存在的主码值。 2018年11月22日星期四

72 (1)空值,表示该学生所在班级尚未选出班长(或该学生本人即是班长); (2)非空值,这时该值必须是本关系中某个元组的学号值。
   参照完整性规则中,R与S可以是同一个关系。例如,对于例3,学生2(学号,姓名,性别,专业号,年龄,班长)按照参照完整性规则,“班长”属性值可以取两类值: (1)空值,表示该学生所在班级尚未选出班长(或该学生本人即是班长); (2)非空值,这时该值必须是本关系中某个元组的学号值。 2018年11月22日星期四

73 三、用户定义的完整性(User-defined Integrity)
不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。 关系模型应提供定义和检验这类完整性的机制,以便用统一的、系统的方法处理它们,而不要由应用程序承担这一功能。 2018年11月22日星期四

74 非主属性“课程名” 属性必须取唯一值; “ 课程名” 也不能取空值 ; “ 学分” 属性只能取值{1 ,2 ,3 ,4}。
例如: 课程(课程号 ,课程名,学分) 非主属性“课程名” 属性必须取唯一值; “ 课程名” 也不能取空值 ; “ 学分” 属性只能取值{1 ,2 ,3 ,4}。 2018年11月22日星期四

75 2.4 关系代数 关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是用对关系的运算来表达查询的。
   关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是用对关系的运算来表达查询的。    任何一种运算都是将一定的运算符作用于一定的运算对象上,达到预期的运算结果。所以运算对象、运算符、运算结果是关系代数运算的三个要素。 2018年11月22日星期四

76 关系代数运算的三个要素: 运算对象:关系; 运算结果:关系;
运算符:关系代数用到的四类运算符,包括集合运算符、专门的关系运算符、算术比较符和逻辑运算符。如下表所示: 2018年11月22日星期四

77 表2.4关系代数运算符(一): 集 集 ∪ ∪ 并 并 比 比 > > 大于 大于 合 合 - - 较 较 差 差 ≥ ≥ 大于等于
含义 运算符 含义 大于 大于 - - 大于等于 大于等于 小于 小于 小于等于 小于等于 等于 等于 不等于 不等于 返回P75 表2 P77 2018年11月22日星期四

78 表2.4关系代数运算符(二): 运算符 含义 运算符 含义 ¬ ÷ 返回P75 返回P78 × σ π ∧ ∨ 广义笛卡尔积 专门的 专门的
选择 逻辑运 逻辑运 关系 关系 π 投影 投影 算符 算符 运算符 运算符 连接 连接 ÷ 返回P75 返回P78 2018年11月22日星期四

79 其中 传统的集合运算是 将关系看成元组的集合, 运算是从关系的“ 水平” 方向也即是行的角度来进行的;
专门的关系运算符不仅涉及到行而且涉及到列;算术比较符和逻辑运算符是用来辅助专门的关系运算符进行操作的。 2018年11月22日星期四

80 2.4.1 传统的集合运算 关系代数运算的分类 传统的集合运算是二目运算,有并、差、交、广义笛卡尔积四种运算。
专门的关系运算有选择、投影、连接、除运算。 设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,则可以定义并、差、交运算如下: 2018年11月22日星期四

81 1. 并(Union) 1. 并(Union) R∪S = { t | t  R ∨ t  S }
图示见下页P81 继续课程P82 2018年11月22日星期四

82 1. 并(Union)图示: A A B B C C a1 a1 b1 b1 c1 c1 a1 a1 b2 b2 c2 c2 A A B B
R A A B B C C R S a1 a1 b1 b1 c1 c1 a1 a1 b2 b2 c2 c2 A A B B C C a2 a2 b2 b2 c1 c1 a1 a1 b1 b1 c1 c1 a1 a1 b2 b2 c2 c2 S A A B B C C a1 a1 b3 b3 c2 c2 a1 a1 b2 b2 c2 c2 a2 a2 b2 b2 c1 c1 a1 a1 b3 b3 c2 c2 a2 a2 b2 b2 c1 c1 返回P80 2018年11月22日星期四

83 2. 差(Difference) R和S的差:R - S R - S = { t | t  R ∧t  S }
   其结果关系仍为n 目关系,由属于R 而不属于S 的所有元组组成。 图示见下页P83 继续课程P84 2018年11月22日星期四

84 2. 差(Difference)图示: A A B B C C a1 a1 b1 b1 c1 c1 R - S 返回P82
2018年11月22日星期四

85 3. 交(Intersection) R和S的交:R∩S R∩S = { t | t  R ∧ t  S }
   其结果关系仍为n 目关系,由既属于R 又属于S 的元组组成。关系的交可以用差来表示, 即 R∩S = R – ( R – S )。 继续课程P86 图示见下页P85 2018年11月22日星期四

86 返回P84 继续P86 2018年11月22日星期四

87 4. 广义笛卡尔积(Extended Cartesian Product)
   两个分别为n目关系R和m 目关系S的广义笛卡尔积R×S: R×S = {t r t s | t r  R ∧ t s  S }   R×S的结果是一个(n + m)列的元组的集合。元组的前n 列是关系R 的一个元组,后m 列是关系S 的一个元组。若R有 k1个元组,S有k2 个元组,则R×S有:k1×k2 个元组。 2018年11月22日星期四

88 返回P86 继续P88 2018年11月22日星期四

89 2.4.2 专门的关系运算 专门的关系运算包括选择、投影、连接、除等。为了叙述上的方便,先引入几个记号。
   专门的关系运算包括选择、投影、连接、除等。为了叙述上的方便,先引入几个记号。     ⑴ 设关系模式为R(A1,A2,…,An)。它的一个关系设为R。t ∈ R表示t是R的一个元组。t [A i ] 则表示元组t中相应于属性 A i上的一个分量。 2018年11月22日星期四

90 ⑵ 若A={A i1,A i2, …,A i k}, 其中 A i1, A i2, …,A i k是A1,A2,…,An中的一部分,则A称为属性列或域列。 t [A]=( t[A i1] , t[A i2],…,t[A i k])表示元组t在属性列A上诸分量的集合。Ā则表示{A1,A2, …,An}中去掉{ A i1,A i2, …,A i k }后剩余的属性组。 2018年11月22日星期四

91 ⑶ R为 n 目关系,S为m目关系。t r∈ R,t s ∈S ,   称为元组的连接。 它是一个 (n+m)列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。
tr ts 2018年11月22日星期四

92 它表示R中属性组X上值为x的诸元组在Z上分量的集合。象集概念字面不好理解,以实际例子说明象集的概念。
⑷ 给定一个关系R(X,Z),X和Z为属性组。定义当t [ X ] = x 时, x 在R中的象集为:Zx = {t [ Z ] | t ∈ R,t [ X ] = x} 它表示R中属性组X上值为x的诸元组在Z上分量的集合。象集概念字面不好理解,以实际例子说明象集的概念。 2018年11月22日星期四

93 关系运算的定义: 下面给出关系运算的定义: 1. 选择(Selection) 1) 选择又称为限制(Restriction)
2) 选择运算符的含义 σF ( R ) = { t | t  R ∧ F( t ) = ‘ 真 ’ } 选择运算实际上是在关系R中选择满足给定条件的那些元组,即是说:从关系R中选取使逻辑表达式F为真的元组。这是从行的角度进行的运算。 2018年11月22日星期四

94 F:选择条件,是一个逻辑表达式,取逻辑值“真”或 “假”。逻辑表达式F由逻辑运算符  ,∧,∨连接各算术表达式组成;算术表达式的基本形式为X 1θY 1,其中θ:比较运算符(>,≥,<,≤,=或≠),其中X 1、Y 1等:属性名、常量或为简单函数;属性名也可以用它的序号来代替; 返回P107 2018年11月22日星期四

95 举例 结合教材例子的讲解。表达式不仅可以用列名构造也可以用列序号构造。 3) 举例(P.58~)
设有一个学生- 课程数据库,包括学生关系Student、 课程关系Course 和选修关系SC。 2018年11月22日星期四

96 学 号 Sno 姓 名 Sname 性 别 Ssex 年 龄 Sage 95001 李勇 男 20 CS 95002 刘晨 女 19 IS
95003 王敏 18 MA 95004 张立 所在系 Sdept Student 2018年11月22日星期四

97 Course 课程号 课程名 先行课 学分 Cno Cname Cpno Ccredit 1 数据库 5 4 2 数学 3 信息系统
操作系统 6 数据结构 7 数据处理 PASCAL 语言 2018年11月22日星期四

98 SC Sno Cno Grade 95001 1 92 2 85 3 88 95002 90 80 2018年11月22日星期四

99 例1(P.59) 例1 查询信息系(IS系)全体学生 σS d e p t = ' I S ' ( Student )
结果: 2018年11月22日星期四

100 例2(P.60) 例2 查询年龄小于20 岁的学生 σS a g e < 20 ( Student )
例2 查询年龄小于20 岁的学生 σS a g e < 20 ( Student ) 或 σ 4 < 20 ( Student ) 结果: 2018年11月22日星期四

101 2.投影(Projection) 1)投影运算符的含义 从R 中选择出若干属性列组成新的关系,记做:
πA (R ) = { t [ A ] | t  R } A:R 中的属性列 。 2 )投影操作主要是从列的角度进行的运算。 2018年11月22日星期四

102    投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免出现重复的行)。因为取消了某些属性列后,就可能出现重复行,应取消这些完全相同的行。
   结合教材例子的讲解投影运算。 2018年11月22日星期四

103 例3(P60) 3) 举例 例3 查询学生的姓名和所在系, 即求Student 关系在学生姓名和所在系两个属性上的投影。
πS name,S dept ( Student ) 或 π2,5 ( Student ) 结果: 2018年11月22日星期四

104 继续课程P104 2018年11月22日星期四

105 例4 (P.60) 例4 查询学生关系Student 中都有哪些系,即查询学生关系Student在所在系属性上的投影。
πS dept( Student ) 结果: Student关系原来有四个元组,而投影结果取消了重复的IS元组,因此只有三个元组。(见下表) 2018年11月22日星期四

106 继续课程P106 2018年11月22日星期四

107 3. 连接(Join) 1)连接也称为θ连接。它是从两个关系的笛卡儿积中选取属性间满足一定条件的元组。记作: AθB tr ts
R      S ={ | t r  R ∧ t s∈ S ∧ t r [ A ]θt s[ B ] } tr ts 2018年11月22日星期四

108 连接运算的含义 2)连接运算的含义 A 和B: 分别为R 和S 上度数相等且可比的属性组 。 θ: 比较运算符(如前所述6种)。
   θ: 比较运算符(如前所述6种)。   连接运算从R 和S 的广义笛卡尔积R×S 中选取(R 关系)在A 属性组上的值与(S 关系)在B 属性组上值满足比较关系(θ)的元组。 2018年11月22日星期四

109 等值连接 连接运算中由两种最为重要也是常用的连接,一种是等值连接,一种是自然连接。
 等值连接    连接运算中由两种最为重要也是常用的连接,一种是等值连接,一种是自然连接。    θ为“=”的连接运算称为等值连接。它是从关系R与S的广义笛卡儿积中选取A,B属性值相等的那些元组,即等值连接为: R     S = { | t r  R ∧ t s ∈ S ∧ t r [ A] =t s[ B ] } tr ts A=B [ 注:等值连接中相同属性均被连接 ] 2018年11月22日星期四

110 自然连接     自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。即若R和S具有相同的属性组B,则自然连接可记作: R     S = { | t r  R ∧ t s ∈ S ∧ t r [ B] =t s [ B ] } tr ts 2018年11月22日星期四

111 一般的连接操作是从行的角度进行运算,但自然连接还需要取消重复列,所以它是同时从行和列的角度进行运算。
   一般的连接操作是从行的角度进行运算,但自然连接还需要取消重复列,所以它是同时从行和列的角度进行运算。    结合教材上的例子,详细讲述连接、等值连接、自然连接的运算过程。 关系R、S: 继续课程P115除运算 2018年11月22日星期四

112 S R 2018年11月22日星期四

113 例5(P61-62)设上图关系分别为R和S,则连接示例如下:
C < E 返回P110 2018年11月22日星期四

114 R.B=S.B R S 返回P110 2018年11月22日星期四

115 R S 返回P110 2018年11月22日星期四

116 4.除(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上投影的集合。记做: 2018年11月22日星期四

117 R÷S = {t r [ X ] | t r  R ∧πY (S )  Yx }
 其中Y x :x在R中的象集,x = t r [ X ] 。    除操作是同时从行和列的角度进行运算。以教材上具体的例子讲述除运算的运算过程。 2018年11月22日星期四

118 例6(P.66) 设关系R,S分别为下图所示,R÷S的结 果为下图所示。在关系R中,A可以取四个值:
  { a 1 ,a 2 ,a 3 , a 4 }。   其中: a 1 的象集为: { ( b 1 , c 2 ) ,( b 2 , c 3 ) ,( b 2 , c 1 ) };  a 2的象集为 { ( b 3 , c 7 ) ,( b 2 , c 3 ) };  a 3的象集为 {( b 4 , c 6 ) };  a 4的象集为 { ( b 6 , c 6 ) } 。 转至P91 2018年11月22日星期四

119 { ( b 1 , c 2 ) ,(b 2 , c 1 ) ,( b 2 , c 3 )},
   S在(B,C)上的投影为:  { ( b 1 , c 2 ) ,(b 2 , c 1 ) ,( b 2 , c 3 )},  显然,只有a 1 的象集(B,C)a 1 包含了S在(B,C)属性组上的投影,所以  R÷S = {a 1 }。 2018年11月22日星期四

120 S A A B C a b c A A B B B C C C B C D b c d B B B C C C D D D a a a b
1 b c 2 3 7 4 6 A A B B B C C C B C D b 1 c 2 d 3 B B B C C C D D D a 1 a a b 1 b b c 2 c c b 1 c 2 d 1 R 1 1 1 1 2 2 b b c c d d 1 1 2 2 1 1 a 1 S a 2 a a b 3 b b c 7 c c b 2 c 1 2 2 3 3 7 7 b b c c d 1 d d 2 2 1 1 1 1 a 3 a a b 4 b b c 6 c c 3 3 4 4 6 6 b 2 b b c 3 c c d 2 d d 2 2 3 3 2 2 a 1 a a b 2 b b c 3 c c 1 1 2 2 3 3 R ÷ S a 4 a a b 6 b b c 6 c c 4 4 6 6 6 6 a 2 a a b 2 b b c 3 c c A A A 2 2 2 2 3 3 a 1 a 1 a a b 2 b b c 1 c c 1 1 2 2 1 1 返回P116 2018年11月22日星期四

121 5.综合举例 (P.63) 以学生-课程数据库为例,给出几个综合应用多种关系代数运算进行查询的例子。
   以学生-课程数据库为例,给出几个综合应用多种关系代数运算进行查询的例子。   例7 查询至少选修1号课程和3号课程的学生号码 。   首先建立一个临时关系K: 2018年11月22日星期四

122 于是:π S n o,C n o ( S C )÷K={95001}
95001象集{1,2,3} 95002象集{2,3} πCno(K)={1,3} 于是:π S n o,C n o ( S C )÷K={95001} 继续课程P123 2018年11月22日星期四

123 π S n o. C n o ( S C ) π S n o. C n o ( S C )÷K={95001} K 返回P121
π S n o. C n o ( S C ) 返回P121 K π S n o. C n o ( S C )÷K={95001} 2018年11月22日星期四

124 例8:查询选修了2号课程的学生的学号。 此查询只是对SC表进行选择和投影运算。
πS n o(σC n o=' 2 '(S C))={ 95001,95002 }  2018年11月22日星期四

125 例9:查询至少选修了一门其直接先行课为5号课程的学生姓名。 πS name (σC p no = ' 5 ' ( Course) SC
π S no,S name (Student))  或 πS name (πS no (σCpno='5' (Course ) SC ) π S no,S name ( Student ) )  2018年11月22日星期四

126 例10 (P.63) 例10 查询选修了全部课程的学生号码和姓名。 πS no, Cno(SC)÷πC no(Course)
πS no, Cno(SC)÷πC no(Course) πS no,S name(Student) 2018年11月22日星期四

127 2.5 关系演算 关系演算 种类:按谓词变元不同分类 以数理逻辑中的谓词演算为基础 1.元组关系演算: 以元组变量作为谓词变元的基本对象
2.5 关系演算 关系演算 以数理逻辑中的谓词演算为基础 种类:按谓词变元不同分类 1.元组关系演算: 以元组变量作为谓词变元的基本对象 元组关系演算语言ALPHA 2.域关系演算: 以域变量作为谓词变元的基本对象 域关系演算语言QBE 2018年11月22日星期四


Download ppt "数据库技术 第二章 关系数据库 中国科学技术大学网络学院 阚卫华."

Similar presentations


Ads by Google