【文档说明】第2章关系数据库-课件.ppt,共(73)页,1.631 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92319.html
以下为本文档部分文字说明:
LOGO第2章关系数据库的模型学习目标关系模型的基本概念关系代数的各种运算,包括传统的集合运算与专门的关系运算关系演算,包括元组关系演算与域关系演算LOGO2.1关系模型的基本概念返回目录2.1.1关系的数据定义“关系”就是关
系数据模型的数据结构,刻画关系数据结构就是要定义关系。从本质上来讲,关系是一个数学概念,具体说,是一个集合论中的概念,因此,从集合论的角度给出关系数据结构的形式化定义就是十分自然的事情。LOGO2.1关系
模型的基本概念1.域(Domain)具有相同数据类型的值的集合称为域(Domain)。关系模型要求每个元组的每个分量都是原子的,即必须属于某种基本类型,如整型或字符串型。不允许一个值为记录结构、结构、集合、列表、数组或者能合理地分解为更小分量的其他任何类型。例
如:自然数集合、整数集合、实数集合、长度小于24的集合等都是域。返回目录LOGO2.1关系模型的基本概念2.笛卡尔乘积(CartesianProduct)设有一组域,…,,这些域可以部分或者全部相同。域,…,的笛卡尔乘
积定义为如下集合:…={(,,…,)|,i=1,2,…,n}其中每一个元素(,,…,)称为一个n元组(n-Tuple),或简称为元组(Tuple)通常元素中的每一个值称为一个分量。1D2DnD1D2Dn
D1D2DnD1d2dndidiD1d2dndidLOGO2.1关系模型的基本概念两个集合R和S的笛卡尔积(或只是乘积)是元素对的集合,该元素对是通过选择R的任何元素作为第一个元素,S的元素作为第二个元素构成的。该
乘积用RS表示。当R和S是关系时,乘积本质上相同。笛卡尔积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应一个域。LOGO2.1关系模型的基本概念例如,我们给出三个域:=导师集合导师=张毅,刘德成=专业集
合专业=计算机专业,通信专业=研究生集合学生=吕景刚,王弶,李喆则,,的笛卡尔积为:××={(张毅,计算机专业,吕景刚),(张毅,计算机专业,王弶),(张毅,计算机专业,李喆),(张毅,通信专业,吕景刚),(张毅,通信专业,王弶),(张毅,通信专业,李喆),(刘德成,计算机专业,吕景
刚),(刘德成,计算机专业,王弶),(刘德成,计算机专业,李喆),(刘德成,通信专业,吕景刚),(刘德成,通信专业,王弶),(刘德成,通信专业,李喆)}1D2D3D1D2D3D1D2D3DLOGO2.1关系模型的基本概念其中(张毅,计算机专业,吕景刚),(张毅,计算机专业,王弶)
,(张毅,计算机科学专业,李喆)等都是元组。张毅、计算机专业、吕景刚、王弶、李喆等都是分量。该笛卡尔积的基数为2×2×3=12,这也就是说××共有2×2×3=12个元组。这12个元组的总体可列成一张二维表
(表2-1)。1D2D3DLOGO2.1关系模型的基本概念导师专业学生张毅计算机专业吕景刚张毅计算机专业王弶张毅计算机专业李喆张毅通信专业吕景刚张毅通信专业王弶张毅通信专业李喆刘德成计算机专业吕景刚刘德成计算机专业王弶刘德成计算机专业李喆刘德成通信专业吕景刚刘德成通
信专业王弶刘德成通信专业李喆表2-1,,的笛卡尔积1D2D3DLOGO2.1关系模型的基本概念3.关系(Relation)笛卡尔乘积…的任一个子集R称为在域…上的一个关系(Relation),通常将其表示为
R(,…,)其中,R表示该关系的名称,n称为关系R的元数或度数(Degree),而关系R中所含有的元组数称为R的基数(CardinalNumber)。关系中的每个元素是关系中的元组,通常用t表示当n=1时,称该关系为单元关系(unaryrelation)。当n=2时
,称该关系为二元关系(binaryrelation)。1D2DnD1D2DnD1D2DnDLOGO2.1关系模型的基本概念关系是笛卡尔积的子集,所以关系也是一个二维表,表的每行对应一个元组,表的每列对应
一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性(attribute)。N目关系必有n个属性。若关系中的某一属性组的值能唯一地标识一个元组,而其真子集不行,则称该属性组为候选码(candidatekey)。若一个关系有多个候选码,则选定其中一个为主码(
primarykey)。候选码的诸属性称为主属性(primeattribute)不包含在任何候选码中的属性为非码属性(non-keyat-tribute)。在最简单的情况下,候选码只包含一个属性。在最极端的情况下,关系模式的所有属性
组是这个关系模式的侯选码,称为全码(all-key)。LOGO2.1关系模型的基本概念例如,可以在表2-1的笛卡尔积中取出一个子集来构造一个关系。由于一个研究生只师从于一个导师,学习某一个专业,所以笛卡尔积中的许多元组是无实际意义的,从中取出有实际意义的元组来构造关系。该关系的名字为SAP
,属性名就取域名,即导师,专业和学生。则这个关系可以表示为:SAP(导师,专业,学生)假设导师与专业是一对一的,即一个导师只有一个专业;导师与研究生是一对多的,即一个导师可以带多名研究生,而一名研究生只有一个导师。这样SAP关系可以包含3个元组,如表2-2所示。LOGO2.1关系模型的基本概
念导师专业学生张毅通信专业吕景刚张毅通信专业王弶刘德成通信专业李喆表2-2SAP关系LOGO2.1关系模型的基本概念关系可以有三种类型:基本关系(通常又称为基本表或基表)、查询表和视图表。基本表是实际存在的表,它是实际存储数据的逻辑表示
。查询表是查询结果对应的表。视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。由上述定义可以知道,域,…,上的关系R,就是由域,…,确定的某些元组的集合。1D2DnD1D2DnDLOGO2.1关系
模型的基本概念4.关系中的一些术语(1)二维表格:在关系模型中,一张二维表格对应一个关系。(2)属性:关系的首行称为“属性”。表2-2中的属性是教师、专业、学生,表2-3中的属性是资产编号、借用人、出借人、批复人、出借日期、拟还日期、借用理由。关系的属性就是关系中
各列的名字。通常,属性描述了所在列的各项含义。例如,表2-2中属性为学生的列描述了各位学生的姓名信息,表2-3属性为拟还日期的列存放了产品归还日期信息。(3)元组:除了由属性组成的标题栏以外,关系的各行称为“元组”。LOGO2.1关系模型的基本概念在关系模型中,对关系作了下列规范性限制:(
1)关系中不允许出现相同的元组。(2)不考虑元组间的顺序,即没有行序。(3)关系中每一个属性值都是不可分解的。(4)关系中属性顺序可以任意交换。(5)同一属性下的各个属性值必须来自同一个域,是同一类型的数据。(6)关系中各个属性必须有不同的名字。LOGO2.1关系模型的基本概
念2.1.2关系模型数据库的数据模型先后经历了网状模型、层次模型、关系模型和面向对象模型等阶段。其中关系模型因为有完整的理论基础,取代了网状模型和层次模型,目前关系数据库在实际应用中居于主导地位。关系模型是1970年由美国IBM公司研究人员E.F.Codd提出的。关系模型利用二维表来表示实体以
及实体之间的关系,每一张二维表又被称为一个关系。二维表中的每一列代表实体或实体间关系的某种属性。二维表中的一行叫做一个元组,是记录类型的实例,代表了某个具体的实体或具体实体间的特定关系。关系模型不仅可以方便地表示两个实体类型间的1:1、1:n关系,而且可以直接
描述它们之间的m:n关系。LOGO2.1关系模型的基本概念关系模型的基本概念通过满足一定条件的二维表来表示数据及其数据间联系的一种模型称为关系模型。关系模型的形式定义三个组成部分:数据结构、数据操作和完整性规则。(1)关系模型的基本数据结
构就是关系。(2)关系运算分为关系代数和关系演算。(3)关系模型的三类完整性规则。关系模型的特点:(1)关系必须规范化:规范化指关系模型中的每一个关系模式都必须满足一定的要求。(2)模型概念单一。(3)集合操作:操作对象和结果都是元组的集合,即关系。LOGO2.1关系模型的基本概念2.1.3关系模
型、关系子模式、关系内模式美国国家标准学会(ANSI)所属标准计划和要求委员会在1975年公布的研究报告中,把数据库分为三级:模式、外模式和内模式。对用户而言可以对应分为概念级模式、一般用户级模式和物理级模式(其体系结构如图2-1)。关系模型中,
概念模式是关系模式的集合,外模式是关系子模式的集合,内模式是存储模式的集合。LOGO2.1关系模型的基本概念1.关系模式关系实质上是一张二维表,表的每一行为一个元组,每一列为一个属性。一个元组就是该关系所
涉及的属性集的笛卡尔积的一个元素。关系是元组的集合,也就是笛卡尔积的一个子集。因此关系模式必须指出这个元组集合的结构,即它由哪些属性构成,这些属性来自哪些域,以及属性与域之间的映象关系。一个关系通常是由赋予它的元组语议来确定的,元组语义实质上是一上n目谓词(n是属性集中属性的个数)
。凡使该n目谓词为真的笛卡尔积中的元素(或者说凡符合元组语义的元素)的全体就构成了该关系模式的关系。现实世界随着时间在不断地变化,因而在不同的时刻,关系模式的关系也会有所变化。LOGO2.1关系模型的基本概念一个关系模式应当是一个五元组。关系的描述称为
关系模式(relationschema)。它可以形式化地表示为R(U,D,DOM,F)其中R为关系名,U为组成该关系的属性名集合,D为属性组u中属性所来自的域,DOM为属性向域的映象集合,F为属性间数据的依赖关系集合。属性间的数据依赖将在后续章节讨论,本章中关系模式仅涉及关
系名、诸属性名、域名、属性向域的映象四部分。例如,在上面的例子中,由于导师和学生出自同一域,所以取了不同于域名的属性名,关系模式中必须给以映象,说明它们分别出自哪个域LOGO2.1关系模型的基本概念如:DOM(导师-PE
RSON)=DOM(学生-PERSON)=PERSON关系模式通常可以简记为:R(U)或R(,,…,)为属性名。而域名及属性向域的映象常常直接说明为属性的类型、长度。LOGO2.2EER模型到关系模式的
转换ER模型是最早出现的语义模型。ER模型包含了实体、属性以及实体间关系等基本概念。实体类型代表相同属性的实体构成的集合,在ER模型中被称为实体集;关系类型是由若干实体类型组成的有序列。一个具体的实体必定隶属于某一个实体集,即表现为相应的实体类型的
取值。由若干具体的实体构成的有序列则表现为某种关系类型的取值。虽然ER模型可以直接表示实体间的1:1、1:n及m:n关系,但早期的ER模型并不完全具备聚集和归纳/限定的概念。改进后的ER模型能够支持聚集和归纳/限定的抽象方法,有
了很强的抽象能力,称为EER(EnhancedER也有称为ExtendEntity-relationshipModel_ER)模型。EER模型保持了E-R模型简明清晰的特点,同时又弥补了E-R模型的一些不足,主要扩充于:(1)实体集的可嵌套性(2)实体之间的可继承性L
OGO2.2EER模型到关系模式的转换实体完整性规则:要求关系中元组在组成主键的属性上不能有空值。如果出现空值,那么主键值就起不了唯一标识元组的作用。(对关系主键的约束)参照完整性规则:要求外键值必须是另一个关系的主键的有效值,或者是空值。(对关系外键的约束)用户
定义的完整性规则:这是针对某一具体数据的约束条件,由应用环境决定。系统提供定义和检验这类完整性的机制。LOGO2.2EER模型到关系模式的转换2.2.1实体类型的转换一个实体型转换为一个关系模式。实体的属性就是关系的属性。实体的键就是关系的键。例如学生实体可以转换为如下
关系模式,其中学号为学生关系的键:学生(学号,姓名,出生日期,所在系,年级,平均成绩)同样,性别、宿舍、班级、档案材料、导师、课程、教室、教科书都分别转换为一个关系模式。LOGO2.2EER模型到关系模式的转换2.2.2二元关系的转换(1)若实体
间联系是1:1,可以在两个实体类型转换成的两个关系模式中任意一个关系模式的属性中加入另一个关系模式的键和联系类型的属性。(2)若实体间联系是1:N,则在N端实体类型转换成的关系模式中加入1端实体类型的键和联系类型的属性。(3)若实
体间联系是M:N,则将联系类型也转换成关系模式,其属性为两端实体类型的键加上联系类型的属性,而键为两端实体键的组合LOGO2.2EER模型到关系模式的转换2.2.3实体内部之间联系的转换在一般情况下联系可以用关系表示,但是在有些情况下联系可以归并到相关的实体
中。(1)1:1联系的转换在1:1联系中,可以在两个实体型的转换成的两个关系模式的任意一个关系模式属性中加入另一个关系模式的键(作为外键)和联系类型的属性。如图2-3所示这是,E1是全参与,此时E1与E2转换成关系模式R1和R2:R1(k,a,h,s);R
2(h,b)。其中h是外键,并且在此模式中,联系r被R1所吸收LOGO2.2EER模型到关系模式的转换ka11hb2Sr1工厂领导厂长11图2-41:1联系的处理(b)图2-31:1联系的处理(a)LOGO2.2E
ER模型到关系模式的转换(2)1:n联系转换在1:n联系中,在“n”端实体型转换成的关系模式中加入“1”端实体型的键(作为外键)和联系类型的属性。如图2.1所示,这里E2是全参与,此时可以将E1与E2转
换成关系模式R1、R2:R1(k,a)和R2(h,b,k,s)(k是外键)。在此模式中,联系r被R2吸收。所述转换如图2-5所示。例:有仓库和职工两个实体,并且有语义——一个仓库可以有多名职工,但是一个职工只能在一个仓库工作。那么
仓库和职工是一对多的联系,我们把这种联系命名为工作,相应的E-R图如图2-6所示。LOGO2.2EER模型到关系模式的转换ka11hb2Sr仓库工作职工图2-51:n联系的处理(a)图2-61:n联系的处理(a)LOGO2.2EER模型到关系模式的转换(3)n:m联系转换在n:m
的情况下,将联系类型也转换为关系模式,其属性为两端实体的键加上联系类型属性,而键则为两端实体键的组合。例:有仓库和器件两个实体,并且有语义——一个仓库可以存放多种器件,一种器件可以存放于多个仓库。那么仓库和器件间是多对多的联系,我们
把这种联系命名为库存,相应的E-R图如图2-7所示。LOGO2.2EER模型到关系模式的转换仓库库存器件nm图2-6n:m联系的处理(a)LOGO2.2EER模型到关系模式的转换2.2.4三元关系的转换总是将三元联系类型转换成关系模式,其属性为三端实体类型的键加上联系类型的属性,而键为三端实体键
的组合。例如导师的“讲授”联系是一个三元联系(导师,课程,课本三个实体)可以将它转换为如下关系模式,其中课程号、导师号和书号为关系的组合码:讲授(课程号,导师号,书号)LOGO2.2EER模型到关系模式的转换2.2.5子类型的转换为了减少系统中的关系个数,
如果两个关系模式具有相同的主码,可以考虑将他们合并为一个关系模式。合并方法是将其中一个关系模式(子类型)的全部属性加入到另一个关系模式中,然后去掉其中的同义属性(可能同名也可能不同名),并适当调整属性
的次序。LOGO2.3关系代数关系数据操作就是关系的运算,其操作过程可以通过代数方式或逻辑方式表式。因此,关系演算可以分为两个部分:关系代数和关系演算。在关系操作中,以集合代数为基础运算的数据操作语言(DML)称
为关系代数语言,相应的运算就称为关系代数运算。关系代数是以关系为运算对象的一组高级运算的组合。关系代数语言须央查询表达式中标明操作的先后顺序,故表示同一结果的关系代数表达式可以用多种不同的形式。下面按
照数据操作的两种类型分别研究相就的关系代数运算。LOGO2.3关系代数2.3.1传统的集合运算并、差、交和笛卡尔乘积是集合的传统运算形式,当我们对关系进行这些运算时,需要把某些条件加在R和S上:(1)R和S的模式必须具有相同的属性集。(2)在计算
元组集合的集合论并集、交集或差集之前,R和S的列需要排序,以使两个关系的属性顺序相同。有时我们希望对属性数相同但属性名不同的关系进行并、交或差运算。如果这样,就可以利用改名运算符来改变一个或两个关系的模式给它们以相同的属性集。LOGO2.3关系代数1.集合的并运算设有关系R需要插入若干元组,这些
元组组成关系R1,由传统集合论可以知道,此时需用集合的并运算,即插入的结果可以写为R∪R1。一般,关系的并(Union)的运算定义如下:设有同类关系R、S(即R、S具有相同的关系模式),则二者的并运算定义为:R∪S={t|tRtS}式中“∪”为并运算符,t为元组变量,结果R∪
S为一个新的与R、S同类的关系,该关系是由属于S的元组构成的集合。一个元素在并集中只出现一次即使它在R和S中都存在。LOGO2.3关系代数例:假定我们有两个关系R的S,如表2-5、2-6所示名字地址性别出生日期CarrieFisher1
23MapleSt.,HollywoodF9/9/99MarkHamill456OakRd.,BrentwoodM8/8/88名字地址性别出生日期CarrieFisher123MapleSt.,Holl
ywoodF9/9/99HarrisonFord789PalmDr.,BeverlyHillsM7/7/77名字地址性别出生日期CarrieFisher123MapleSt.,HollywoodF9/9
/99MarkHamill456OakRd.,BrentwoodM8/8/88HarrisonFord789PalmDr.,BeverlyHillsM7/7/77表2-5关系R表2-6关系S表2-7结果R∪SLOGO2.3关系代数2.集合的差运算设有关系R的需要删除一
些元组,这些元组组成关系R1,由传统集合论可以知道,此时用集合差运算表示,即可写为R-R1。一般,删除操作对就的关系差(Difference)运算定义如睛:设有同类关系R、S,则二者的差运算定义为:R-S={t|tRtS}式中“-”为差运算符,t为元
组变量,结果R-S为一个新的与R、S同类的关系,该关系是由属于R而且不属于S的元组构成的集合,即在R中减去与S中相同的那些元组。LOGO2.3关系代数根据表2-5、2-6所示R-S的结果如下所示名字地址性别出生日期MarkHamill456OakRd.,Brentwo
odM8/8/88表2-8R-S也就是说,Fisher和Hamill元组出现在R中,因此是R-S的候选元组。然而,Fisher元组也出现在S中,因此不在R-S中。LOGO2.3关系代数3.集合的交运算设有同类的关系
R、S,则二者的交(Intersection)运算定我为R∩S={t|tRtS}式中∩为交运算符,结果R∩S为一个新的与R、S同类的关系,该关系是由属于R而且属于S的元组构成的集合,即两者相同的那些元组的集合。由于R∩S=R-(R-S)
或R∩S=S-(S-R),所以交运算可以看作是组合运算,而不是基本运算。LOGO2.3关系代数根据表2-5、2-6所示R∩S的结果如下所示:名字地址性别出生日期CarrieFisher123MapleSt.,HollywoodF9/9/99表2
-9R∩SLOGO2.3关系代数4.笛卡尔乘积设有关系R、S,其中关系R有r个属性分量、m个元组,关系S有s个属性分量、n个元组,则二者的笛卡尔乘积运算定义为:RS={t|t=<,>RS}式中为乘积运算符:<,>表示新的关系是(r+s)元的关系
,其中每个元组变量的前r个分量为关系R的一个元组,后s个分量为关系S的一个元组。用R的第i个元组与S的全部元组结合成n个元组,当i从1变到m时,就得到了新的关系的全部mn个元组。strtrtrtstLOGO2.3关系代数由以上我们可描述为:因为R和S的成
员是元组,通常包含多个分量,由R的元组和S的元组构成的元组对是一个更长的元组,其中每个分量都对应于组成元组的一个分量。按现在顺序,R的分量在S的分量之前。结果关系的关系模式是R和S的并集。然而,如果R和S偶然有某些公共属
性,那么,我们需要为每个相同属性对的至少一个属性引入新名。为了区别既在R的模式中又在S的模式中的属性A,我们对来自R的属性用R.�A表示,对来自S的属性用S.�A表示。LOGO2.3关系代数例:为了简明扼要,让我们使用一个解释乘积运算的抽象例子。假设关系R和S具
有表2-3-1中给出的模式和元组。那么,乘积RS包括该表中给出的六个元组。注意,我们如何将两个R元组中的每一个和三个S元组中的每一个组成对。因为B是两个模式中的属性,我们已经在RS的模式中使用了R.t和S.B。其他属性不会混淆,于是,
它们的名字未加改变地出现在结果模式中。LOGO2.3关系代数AB1234BCD25647891011AR.BS.BCD1225612478129101134256344783491011表2-10(c)结果RS表2-1
0(a)关系R表2-10(b)关系SLOGO2.3关系代数1.投影运算为了完成对关系属性的指定,引入投影运算。投影(Projection)是一元关系运算(即只对一个关系操作,而不像前面的运算那样需要两个关系),用于选取某个关系
上我们感兴趣的某些列,并且将这些列组成一个新的关系。投影运算的形式定义为:设有k元关系R,其元组变量为=<,,„,>,那么关系R在其分量Ai1,Ai2,„,Ain(nk,i1,i2,„,in为1到k之间互不相同的整
数)上的投影={t|t=<,,„,><,,„,>R}上式中“”为投影运算符,表示按照i1,i2,„,in的顺序从关系R中取出这n列,并删除结果中的重复元组,组成一个新的以i1,i2,„,in为列顺序的n元关
系。例如关系R(A,B,C,D)在属性A、D、C上的投影可记为或简记为kt1t2tkti1,i2,...inR()i1ti2tint1t2tktA,D,C(R)143(R),,LOGO2.3关系代数例:有关系Mo
vie,在其上做投影运算title,year,length(movie)TitleYearLengthIncolorStudioNameproducerC#StarWars1977124TrueFox12345MightyDucks1991104TrueDisney67
890Wayne`sWorld199295TrueParamount999999表2-11关系Movie结果关系如下:表2-12title,year,length(movie)TitleYearLengthStarWars1977124MightyDucks
1991104Wayne`sWorld199295LOGO2.3关系代数2.选择运算为了完成关系元组的选择,引入选择运算。选择(Selection)也是一元关系运算,用于选取某个关系上我们感兴趣的某些行(满足一定
的条件的行),并且将它们组成一个新的关系。选择运算的形式定义为:设有k元关系R,条件用一命题公式F表示,则从关系R选择出满足条件F的行定义为:={t|tRF(t)=true}FR()LOGO2.3关系代数
上式中为选择运算符,表示按照给定的条件F从关系R中选择出满足这一条件F的元组,组成一个新的与R同类的k元关系。F是一个逻辑公式,其运算对象为常量或元组的分量(分量可为属性名或属性列的序号,如第i列属性分量可记为[i],在不致于引起二义性的情况下可简记为i),其中的运算符为算术比较运算符、逻辑运
算符等LOGO2.3关系代数例:对于上例Movie关系,表达式的结果如下TitleYearLengthIncolorStudioNameproducerC#StarWars1977124TrueFox12345M
ightyDucks1991104TrueDisney67890表2-13100length(Movie)LOGO2.3关系代数3.连接运算用笛卡尔乘积可以建立两个关系间的连接,但这样建立的关系是一个较为庞大的体系,而且不符
合实际操作的需要。在实际问题当中,两个关系相互联接一般是满足某些条件的,所得到结果往往比较简单。因此,对于笛卡尔乘积可以做适当的限制,以此适应实际应用需要。这样就引入了连接以及连接的概念连接运算又称为连接运算。设有关系R、S,同时ij
是一个比较式,其中I为R中的域,为算术比较符,此时关系R,S在域i,j上的连接就为:RS=(RS)θθiθjiθj式中为连接运算符。该式说明,R与S的连接是R与S的笛卡尔乘积再加上限制ij而成θLOGO2.3关系代数例:R和S如表2-10、2-11,求RSC>DAB
Ca1b13a1b26a2b25a3b311DE4e17e215e3ABCDEa1b264e1a2b254e1a3b3114e1a3b3117e2表2-15(a)关系R表2-15(b)关系S连接结果RS关系表2-15(c)RSC>DC>DLOGO2.3关系代数4.除法运算除法运算是一个非
传统的集合运算,若把广义笛卡尔乘积看作是正运算,这个运算可以看作是它的逆运算,因而称之为除法(Division)运算。我们用例子说明除法运算引入的实际背景。LOGO2.3关系代数例:设有关系T和关系R如下所示ABC
Da1b1c1d1a1b1c2d2a1b1c3d3a2b2c2d2a3b3c1d1a3b3c2d2CDC1d1C2d2表2-16关系T表2-17关系R关系T和关系R具有这样的特性:T中的属性级{C,D}与R中属性组{C,D}相互对应,即属性名一样;另外,我们再
要求T中的“C”属性与“D”属性和R中的“C”属性与“D”属性有相同的域。LOGO2.3关系代数实际问题常常是给出了这样的关系T和R之后,要求另一个关系P,使得PR是T的一个子集。从关系T可以看出,当取得关系P1、P2、P3分别如表2-19(a)/(b)/(c)所示时,对应的P1R
、P2R和P3R如表2-19(a)/(b)/(c)所示。ABa1b1ABa3b3ABa1b1a3b3表2-18(a)关系P1表2-18(b)关系P2表2-18(c)关系P3LOGO2.3关系代数A
BCDa1b1C1d1a1b1C2d2ABCDa3b3c1d1a3b3c2d2ABCDa1b1c1d1a1b1c2d2a3b3c1d1a3b3c2d2表2-19(a)关系P1R表2-19(b)关系P2R表2-19(c)关
系P3RLOGO2.3关系代数关系P1R、P2R、P3R都是关系T的子集,从而,关系P1、P2、P3均为问题的所求。在这里,P1R、P2R、P3R是T的组成部分,如果将T其余的相应部分记为r1、r2、r3,则有T=P1R∪r1
、T=P2R∪r2、T=P3R∪r3与整数的“带余除法”p=qa+r比较,自然可以将P1、P2、P3看作是“商”,将r1、r2、r3可以看作是“余数”,由此可以考虑两个关系进行“除法”运算的问题。当然,为了保证“商”的惟一性,在上述例子中,需要考察PiRT(i=1,2,3
)的“最大性”。正是从这样的考虑出发,人们引入下述除法的概念。LOGO2.3关系代数设有两个关系T和R,其元数分别为n和m(n>m>0),则T和R进行“除法”运算的结果记P=TR,其中P是一个元数为n-m的满足下
述性质的最大关系:P中的每个元组u与R中每个元组v所组成的元组(v,u)必在关系T中。由于除法定义采用的是逆运算定义,通常逆运算的进行需要有相关条件保证运算的可施行性和非平凡性。实际上,关系T能被关系R“除”的充分必要条件是:●T包含R的所有属性●T中
应有某些属性不出现在R中。LOGO2.3关系代数由于关系中属性的次序无关性,给定两个可以“相除”的关系T、R之后,我们能够将T中的属性按照R中属性构成的集合分成两部分:X和Y,进而将T和R分别记为T(X,Y)和R(Y),则有TR=-按照这个公式,P=TR的具体计算步骤为:P=(计算T在
X上的投影)W=(PR)-T(计算在PR中但不在T中的元组)V=(计算W在X上的投影)TR=P-V(计算在P中但不在V中的元组即得TR)。XT()XX((T)(T)R)XT()X(W)LOGO2.3关系代数根据前例,我们可有如下表2-18的算法与运算结果ABa1b1a
2b2a3b3ABCDa2b2c1d1ABa2b2ABa1b1a3B3表2-18(a)关系P表2-18(a)关系W表2-18(a)关系TR=P-V表2-18(a)关系VLOGO2.4关系演算关系代数是将整个关系看作变元,并以其作为基本运算单位,同时以集合方法为关系运算的理论基础。如果将组成关系的基
本成分例如元组或者属性域看作变量,以其作为基本运算单位,同时以数理逻辑中谓词演算为相应关系的理论基础,就得到了另外一种形式的关系数据语言——关系演算关系演算基于谓词演算。在谓词演算中,如果谓词中的变元是关系中的元组,则得到所谓元组关系演算;如果谓词中的变元是关系中的属性域,则得到
所谓域关系演算。这样关系演算就分为元组关系演算和域关系演算两类。LOGO2.4关系演算2.4.1元组关系演算如果在一阶谓词演算表达式中,变量是以元组为演算单位,就称其为元组关系演算,其中元组变量表示表示关系中的元组,变量了值范围是整个关系。L
OGO2.4关系演算1.关系的元组演算表示(1)关系与谓词的对应为了和得到关系操作的元组关系演算表达式,需要考虑关系与谓词的联系。●由关系R确定谓词P在数理逻辑中我们知道,关系可用谓词表示,n元关系可以由n元谓词表示。设有关系R,它有元组(r1,r2,
„,rm),定义关系R对应如下一个谓词P(x1,x2,…,xn)当t=(r1,r2,…rm)属于R时,t为P的成真的真值指派,而其他尖R中的任意元t则是P的成假指派。即是说,由关系R定义一个谓词P具有如下性质:P(t)=T(当t在R中)P(t)=F(当t不在R中)LOGO2.4关
系演算●由谓词P表示关系R由于关系代数中R是元组集合,一般而言,集合是可以用满足它的某种特殊性质来刻画与表示。如果谓词P表述了关系R中元组的本质特性,就可以将关系R写为:R={t|P(t)}这个公式就建立了关系(元
组集合)的谓词表示,称之为关系演算表达式。LOGO2.4关系演算(2)元组关系演算表达式元组关系演算表达式的严格数学描述是由“归纳定义”方式完成的。按照通常的思路,元组演算表达式是由“关系演算公式”组成;“关系演算公式”是由“
原子公式”组成。i.原子公式下述三类称为元组演算原子公式,简称原子公式:●谓词R(t)是原子公式●u(i)v(j)是原子公式●u(i)a是原子公式其中,t=(r1,r2,…,rm)是P的成真指派;u(i)表示元组u的第i个
分量,v(j)表示元组v的第j个分量;a是常量,u(i)a表示u的第i个分量与常量a有关系θθθLOGO2.4关系演算ii.关系演算公式利用原子公式可以递归定义关系演算公式:原子公式是公式如果,是公式,则,,和均是公式如果是公式,r是中自由变元,则r(),r()是公式所有公式由且仅由上述三
种方式经过有限次操作生成在公式中,各种运算的优先次序规定如下:●比较运算符:<、>、、、=、●量词:、●否定词:●合取、析取、蕴含运算符:、、121212121
LOGO2.4关系演算iii.关系演算表达式有了公式的概念,以公式作为特性就构成一个有若干元组组成的集合,即关系R,这种形式的元组集合就称为其为关系演算表达式。关系演算表达式的一般形式为:{t|(t)}其中,(t)为公式,t为中出现
自由变元。关系演算表达式也简称为关系表达式或者表达式。LOGO2.4关系演算2.关系操作的元组演算表示关系操作由5种基本操作,它们在关系代数中分别对应5种基本运算,这5种基本运算可以用一阶谓词演算中的公式表示。设有关系R、S,其谓词表示为R(t)和S(t),此时有●R
∪S={t|R(t)S(t)}●R-S={t|R(t)S(t)}●®={t|R(t)F},其中F是一个谓词公式●={|(u)R(u)t(1)=u(i1)t(2)=u(i2)„t(k)=u(ik)}其中t(k)所表示的元组有k个分量,而t(i)表示t的第i个分量,
u(j)表示u的第j个分量。RS={|uv(R(u)S(v)t(1)=u(i1)t(2)=u(i2)„t(r)=u(ir)t(r+1)=v(j1)t(r+2)=v(j2)„t(r+s)=v(js))}Fui1,ui2,...,uik(R)(k)t(r+s)t
LOGO2.4关系演算2.4.2域关系演算域关系演算简称为域演算,它是关系演算的另外一种形式。域关系和元级关系演算十分类似,这是因为它们建立在谓词演算之上;两者又有区别,这是因为有两点不同:
其一是谓词变元的不同,元组演算以元组为变元,域演算以元组的分量即属性域为变元,而在实际上,人们就将关系的属性名视为域变元;其二是元组变元的变化范围为整个关系,而域变元的变化范围是某个属性域。域演算表达式的一般形式为:{t1,t2,„,tk|P(t1,t2,„tk)}其中,t1,t2,…,tk是域
变量,P(t1,t2,…,tk)是域演算表达式。LOGO2.4关系演算(1)原子公式下述三类称为域演算原子公式,简称原子公式:●如果R(t1,t2,…,tk)表示命题“以t1,t2,…,tk为分量的元组在关系R之中”,则R(t1,t2,…
,tk)是原子公式,其中,R是k元关系,ti是t的第i个分量●tiC或者Cti是原子公式,其中ti是元组变量的第i个分量,C是常量,是算数比较符●tiuj是原子公式,其中,ti表示元组变量t的第i个分量,uj表示元组变量u的第j个分量,它们之间满足运算例如t1=>u4表示t的第一
分量大于等于u的第四个分量。θθθθθLOGO2.4关系演算(2)域演算公式域演算公式(简称为公式)可以递归定义如下:●原子公式是公式●如果,是公式,则,,和均是公式●如果是公式,ti(),ti()是公式●所有公式由且仅由上述三种方式经过有限次操作生成例如(x1,x2
,x3,x4,x5)=S(x1,x2,x3,x4,x5)(x5>21)x4=’M’是一个域演算公式域演算公式中变量的自由出现与约束出现、公式中自由变量x的型T(x,)以及域演算合法公式、域常量带入公式的规则和公式的解释规则等均与元组演算类似。1212121111
LOGO2.5小结关系运算理论是关系数据库查询语言的理论基础。只有掌握关系运算理论,才能深刻理解查询语言的本质和熟练使用查询语言。关系可以定义为元组的集合,因此,关系在应用中可以看作是加了某些特定要
求的二维“表格”。关系模型必须遵循实体完整性规则、参照完整性规则和用户定义的完整性规则。关系查询语言建立在关系运算基础之上。关系运算主要分关系代数运算和关系演算两类。关系代数以集合论中代数运算为基础;关系演
算以数理逻辑中谓词演算为基础。关系代数和关系演算都是简洁的形式化语言,适合于理论研究和实际应用。关系代数、安全的元组关系演算、安全的域关系演算在关系中表达和操作能力上是完全等价的。LOGO1D2DnD1d2didiDnd3Drtstkt1t2tkti1,i2,...inR(
)i1ti2tintA,D,C(R)143(R),,title,year,length(movie)FR()θiθjiθj12Fui1,ui2,...,uik(R)(k)t(r+s)t