数据库系统教程-3 人民邮电出版社_第1页
数据库系统教程-3 人民邮电出版社_第2页
数据库系统教程-3 人民邮电出版社_第3页
数据库系统教程-3 人民邮电出版社_第4页
数据库系统教程-3 人民邮电出版社_第5页
已阅读5页,还剩151页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章关系数据库2.1关系数据模型2.2关系模型的基本术语与形式化定义3.3完整性约束3.4关系代数3.5关系演算1/12/202413.1关系数据模型关系数据模型源于数学。1970年IBM研究员E.F.Codd博士在美国计算机学会会刊(《CommunicationoftheACM》)上发表了题为“ARelationalModelofDataforSharedDataBanks”的论文,开创了数据库系统的新纪元。1970之后,提出了关系代数和关系演算的概念1972年提出了关系的第一、第二、第三范式1974年提出了关系的BC范式1/12/202423.1关系数据模型关系数据模型的数据结构:二维表关系数据模型用二维表来组织数据。这个二维表在关系数据库中就称为关系。关系数据库就是表或者说是关系的集合。关系数据模型的数据操作:传统的关系运算:并、交、差、广义笛卡尔乘积;专门的关系运算:选择、投影、连接、除;数据更新操作:插入、删除、更改。查询的表达能力是其中最主要的部分查询1/12/202433.1关系数据模型选择、投影、并、差、笛卡尔积是5种基本操作关系操作的特点集合操作方式(一次一集合的方式):操作的对象和结果都是集合,这些集合可以只包含一行数据,也可以是不包含任何数据的空集合。集合处理能力是关系数据库系统区别于其他系统的重要特征。1/12/202443.1关系数据模型关系模型与非关系模型区别:操作方式不同(非关系模型数据库中典型的操作是一次一行或一次一条记录)表达联系的方式不同在非关系模型中,各个数据记录之间是通过指针等方式连接的,当要定位到某条记录时,需要用户自己按指针的链接方向逐层查找——导航。在关系模型中,用户只需指定数据的定位条件,数据库管理系统就可以自动定位到该数据记录——非导航。1/12/20245层次模型查找示例61/12/20246关系模型查找示例7学

号姓

名年

龄性

别所

系0811101李勇21男计算机系0811102刘晨20男计算机系0811103王敏20女计算机系0821101张立20男信息管理系0821102吴宾19女信息管理系0821101张立20男信息管理系1/12/202473.1关系数据模型注:关系数据库在物理层也使用指针,但这些物理层的存储细节对用户来说都是不可见的,用户所看到的物理层实际上就是存放数据的数据库文件:文件名存放位置1/12/202483.1关系数据模型关系操作是通过关系语言实现的,关系语言的特点是高度非过程化:用户不必关心数据的存取路径和存取过程,只需要提出数据请求,DBMS会自动完成用户请求的操作;用户没有必要编写程序代码来实现对数据的重复操作。1/12/202493.1关系数据模型关系数据模型的数据完整性约束:数据的完整性是指保证数据正确性的特征。数据完整性是一种语义概念,包括:与现实世界中应用需求的数据的相容性和正确性;数据库内数据之间的相容性、有效性和正确性1/12/2024103.1关系数据模型数据完整性由一组完整性规则定义,关系模型的完整性规则是对关系的某种约束条件。在关系数据模型中将数据完整性分为三类:实体完整性参照完整性(引用完整性)用户定义的完整性关系的两个不变性1/12/2024113.2关系模型的基本术语与形式化定义关系模型的基本术语及形式化定义域:域是一组具有相同数据类型的值的集合,又称为值域。(用D表示)例如整数、实数、字符串的集合。域中所包含的值的个数称为域的基数(用m表示)。关系中用域表示属性的取值范围。例如:D1={李力,王平,刘伟} m1=3 D2={男,女} m2=2 D3={47,28,30} m3=3 其中,D1,D2,D3为域名,分别表示某一关系中姓名、性别、年龄的集合。域无排列次序,如D2={男,女}={女,男}1/12/202412笛卡尔积(CartesianProduct)给定一组域D1,D2,…,Dn(它们可以包含相同的元素,即可以完全不同,也可以部分或全部相同)。D1,D2,…,Dn的笛卡尔积为D1×D2×……×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}3.2关系模型的基本术语与形式化定义1/12/2024133.2关系模型的基本术语与形式化定义

元组(Tuple)笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组(Tuple)分量(Component)笛卡尔积元素(d1,d2,…,dn)中的每一个值di叫作一个分量元组不是di的集合,元组的每个分量(di)是按序排列的。如:(1,2,3)≠(2,3,1)≠(1,3,2);而集合中的元素是没有排列次序的,如:{1,2,3}={2,3,1}={1,3,2}

1/12/2024143.2关系模型的基本术语与形式化定义笛卡尔积基数(Cardinalnumber)若Di(i=1,2,…,n)为有限集,其基数为mi(i=1,2,…,n),则D1×D2×…×Dn的基数M为:笛卡尔积的表示方法笛卡尔积可表示为一个二维表表中的每行对应一个元组,表中的每列对应一个域1/12/202415笛卡尔积可用二维表的形式表示:

姓名性别李力男李力女王平男王平女刘伟男刘伟女元组同一域3.2关系模型的基本术语与形式化定义1/12/202416关系(Relation) 笛卡尔积D1×D2×…×Dn的任一子集称为定义在域D1,D2,…,Dn上的n元关系(Relation)

R(D1,D2…,Dn)关系的名字n是关系的目或度姓名性别李力男王平女刘伟男如,上例D1×D2笛卡尔积的某个子集可以构成教师关系T1,如表2.2所示D1×D2笛卡尔积的子集(关系T1)3.2关系模型的基本术语与形式化定义1/12/202417在关系R中,当n=1时,称为单元关系。当n=2时,称为二元关系,以此类推。关系中的每个元素是关系中的元组,通常用t表示,关系中元组个数是关系的基数由于关系是笛卡尔积的子集,因此,也可以把关系看成一个二维表。具有相同关系框架的关系称为同类关系。姓名性别李力男王平女刘伟男元组域属性属性的名字惟一

1/12/202418姓名性别李力男李力女不符合实际意义的关系在关系模型中,关系可进一步定义为:

关系头(Heading)+关系体(Body)

由属性名的集合组成关系结构中的内容或者数据不变可变1/12/202419属性关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性(Attribute)n目关系必有n个属性候选码(Candidatekey)若关系中的某一属性或属性组的值能唯一地标识一个元组,则称该属性或属性组为候选码简单的情况:候选码只包含一个属性全码(All-key)最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)3.2关系模型的基本术语与形式化定义1/12/2024203.2关系模型的基本术语与形式化定义主码若一个关系有多个候选码,则选定其中一个为主码(Primarykey)主属性包含在任何候选码中的诸属性称为主属性(Primeattribute)非主属性不包含在任何侯选码中的属性称为非主属性(Non-Primeattribute)或非码属性(Non-keyattribute)1/12/2024213.2关系模型的基本术语与形式化定义三类关系基本关系(基本表或基表)实际存在的表,是实际存储数据的逻辑表示查询表查询结果对应的表视图表由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据1/12/202422关系模式一个关系的属性名的集合R(A1,A2,……An)叫做关系模式。其中:

R为关系名,A1,A2,…,An为属性名(i=1,2,……n)。由定义可以看出,关系模式是关系的框架,或者称为表框架,指出了关系由哪些属性构成,是对关系结构的描述。一组关系模式的集合叫做关系数据库模式。3.2关系模型的基本术语与形式化定义1/12/2024233.2关系模型的基本术语与形式化定义关系模式可以形式化地表示为:

R(U,D,DOM,F)

R关系名

U

组成该关系的属性名集合

D

属性组U中属性所来自的域

DOM属性向域的映象集合

F

属性间的数据依赖关系集合关系模式通常可以简记为

R(U)或R(A1,A2,…,An)注:域名及属性向域的映象常常直接说明为属性的类型、长度1/12/202424关系模式是对关系结构的描述,是静态的、稳定的关系是关系模式在某一时刻的状态或内容,是动态的、随时间不断变化的关系模式和关系往往统称为关系,通过上下文加以区别。关系数据库在一个给定的应用领域中,所有关系的集合构成一个关系数据库3.2关系模型的基本术语与形式化定义1/12/202425基本关系的性质(对关系的限定)列是同质的(Homogeneous)不同的列可出自同一个域其中的每一列称为一个属性不同的属性要给予不同的属性名列的顺序无所谓,,列的次序可以任意交换任意两个元组的值不能完全相同行的顺序无所谓,行的次序可以任意交换分量必须取原子值(对关系最基本的限定)3.2关系模型的基本术语与形式化定义1/12/2024263.3完整性约束实体完整性和参照完整性:关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持用户定义的完整性:应用领域需要遵循的约束条件,体现了具体领域中的语义约束1/12/2024273.3完整性约束实体完整性规则(EntityIntegrity)若属性A是基本关系R的主属性,则属性A不能取空值例:学生(学号,姓名,年龄,性别,专业)主码:学号不能取空值1/12/2024283.3完整性约束实体完整性规则的说明实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。现实世界中的实体是可区分的,即它们具有某种唯一性标识。关系模型中以主码作为唯一性标识。码中的属性即主属性不能取空值。主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与实体的定义相矛盾,因此这个规则称为实体完整性1/12/2024293.3完整性约束关系间的引用在关系模型中实体及实体间的联系都是用关系来描述的,因此可能存在着关系与关系间的引用。例1学生实体、专业实体学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名)主码主码学生关系引用了专业关系的主码“专业号”。学生关系中的“专业号”值必须是确实存在的专业的专业号,即专业关系中有该专业的记录。1/12/2024303.3完整性约束例2:学生、课程、学生与课程之间的多对多联系学生(学号,姓名,性别,专业号,年龄)课程(课程号,课程名,学分)选修(学号,课程号,成绩)1/12/2024313.3完整性约束例3学生实体及其内部的一对多联系学生(学号,姓名,性别,专业号,年龄,班长)“学号”是主码,“班长”是外码,它引用了本关系的“学号”“班长”必须是确实存在的学生的学号1/12/2024323.3完整性约束外码设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码基本关系R称为参照关系(ReferencingRelation)基本关系S称为被参照关系(ReferencedRelation)或目标关系(TargetRelation)1/12/202433[例1]:学生关系的“专业号与专业关系的主码“专业号”相对应“专业号”属性是学生关系的外码专业关系是被参照关系,学生关系为参照关系3.3完整性约束1/12/202434[例2]:选修关系的“学号”与学生关系的主码“学号”相对应选修关系的“课程号”与课程关系的主码“课程号”相对应“学号”和“课程号”是选修关系的外码学生关系和课程关系均为被参照关系选修关系为参照关系3.3完整性约束1/12/202435[例3]:“班长”与本身的主码“学号”相对应“班长”是外码学生关系既是参照关系也是被参照关系3.3完整性约束1/12/202436几点说明:关系R和S不一定是不同的关系目标关系S的主码Ks和参照关系的外码F必须定义在同一个(或一组)域上外码并不一定要与相应的主码同名当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别3.3完整性约束1/12/202437参照完整性规则若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值3.3完整性约束1/12/202438[例1]:学生关系中每个元组的“专业号”属性只取两类值:(1)空值,表示尚未给该学生分配专业(2)非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配一个不存在的专业3.3完整性约束1/12/202439〔例2〕:选修(学号,课程号,成绩)“学号”和“课程号”可能的取值:(1)选修关系中的主属性,不能取空值(2)只能取相应被参照关系中已经存在的主码值3.3完整性约束1/12/202440例3〕:学生(学号,姓名,性别,专业号,年龄,班长)“班长”属性值可以取两类值:(1)空值,表示该学生所在班级尚未选出班长(2)非空值,该值必须是本关系中某个元组的学号值3.3完整性约束1/12/202441用户自定义的完整性约束针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。例:

课程(课程号,课程名,学分)“课程号”属性必须取唯一值非主属性“课程名”也不能取空值“学分”属性只能取值{1,2,3,4}3.3完整性约束1/12/2024423.4关系代数

关系代数语言用对关系的运算来表达查询要求代表:ISBL关系演算语言:用谓词来表达查询要求元组关系演算语言谓词变元的基本对象是元组变量代表:ALPHA,QUEL域关系演算语言谓词变元的基本对象是域变量代表:QBE具有关系代数和关系演算双重特点的语言代表:SQL(StructuredQueryLanguage)1/12/2024433.4关系代数关系代数是关系操作语言的一种传统表示方式,是一种抽象的查询语言。是一种纯理论语言,它定义了一些操作,运用这些操作可以从一个或多个关系中得到另一个关系,而不改变源关系。关系代数的操作数和操作结果都是关系,而且一个操作的输出可以是另一个操作的输入。1/12/20248:41AM441/12/202444关系代数的运算对象是关系,运算结果也是关系。与一般的运算一样,运算对象、运算符和运算结果是关系代数的三大要素。关系代数的运算按运算符的不同主要分为两类:传统的集合运算专门的关系运算1/12/20248:41AM453.4关系代数1/12/202445传统的集合运算:把关系看成元组的集合,以元组作为集合中元素来进行运算,其运算是从关系的“水平”方向即行的角度进行的。包括并、差、交和笛卡尔积等运算。专门的关系运算:不仅涉及行运算,也涉及列运算,这种运算是为数据库的应用而引进的特殊运算。包括选取、投影、连接和除法等运算。3.4关系代数1/12/2024461/12/20248:41AM473.4关系代数选择投影选择投影选择投影1/12/2024471/12/20248:41AM483.4关系代数1/12/2024481.传统的集合运算设给定两个关系R、S,若满足:(1)

具有相同的度n;(2)

R中第i个属性和S中第i个属性必须来自同一个域。则说关系R、S是相容的。除笛卡尔积外,其他的集合运算要求参加运算的关系必须满足上述的相容性定义。3.4关系代数1/12/202449R∪S

仍为n目关系,由属于R或属于S的元组组成

R∪S={t|t

R∨t

S}3.4关系代数1/12/202450R-S

仍为n目关系,由属于R而不属于S的所有元组组成

R-S={t|t

R∧t

S}3.4关系代数1/12/202451R∩S仍为n目关系,由既属于R又属于S的元组组成

R∩S={t|t

R∧t

S}

R∩S=R–(R-S)=S-(S-R)3.4关系代数1/12/202452广义的笛卡尔积(ExtendedCartesianProduct)R:n目关系,k1个元组S:m目关系,k2个元组R×S

列:(n+m)列元组的集合元组的前n列是关系R的一个元组后m列是关系S的一个元组行:k1×k2个元组R×S={tr

ts|tr

R∧ts

S}3.4关系代数1/12/2024533.4关系代数1/12/2024543.4关系代数专门的关系运算先引入几个记号(1)R,t

R,t[Ai]

设关系模式为R(A1,A2,…,An)

它的一个关系设为R

t

R表示t是R的一个元组

t[Ai]则表示元组t中相应于属性Ai的一个分量1/12/202455(2)A,t[A],A

若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,则A称为属性列或属性组。

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

A则表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的属性组。3.4关系代数1/12/202456(3)tr

tsR为n目关系,S为m目关系。

tr

R,ts

S,tr

ts称为元组的连接。

tr

ts是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。3.4关系代数1/12/202457(4)象集Zx

给定一个关系R(X,Z),X和Z为属性组。当t[X]=x时,x在R中的象集(ImagesSet)为:

Zx={t[Z]|t

R,t[X]=x}

它表示R中属性组X上值为x的诸元组在Z上分量的集合3.4关系代数1/12/202458x1在R中的象集

Zx1

={Z1,Z2,Z3},x2在R中的象集

Zx2

={Z2,Z3},x3在R中的象集

Zx3={Z1,Z3}象集举例

3.4关系代数1/12/202459专门的关系运算选择投影连接除3.4关系代数1/12/202460(a)

Student学生-课程数据库:

学生关系Student、课程关系Course和选修关系SC学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept200215121李勇男20CS200215122刘晨女19IS200215123王敏女18MA200215125张立男19IS3.4关系代数1/12/202461课程号Cno课程名Cname先行课Pcno学分Ccredit1数据库542数学23信息系统144操作系统635数据结构746数据处理27PASCAL语言64Course(b)3.4关系代数1/12/202462

(c)SC学号Sno课程号Cno成绩Grade2002151211922002151212852002151213882002151222902002151223803.4关系代数1/12/202463选择(Selection)选择又称为限制(Restriction)选择运算符的含义在关系R中选择满足给定条件的诸元组

σF(R)={t|t

R∧F(t)='真'}F:选择条件,是一个逻辑表达式,基本形式为:

X1θY13.4关系代数1/12/202464选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算σ3.4关系代数1/12/202465[例1]查询信息系(IS系)全体学生

σSdept

='IS'(Student)

或σ5='IS'(Student)结果:SnoSnameSsexSageSdept200215122刘晨女19IS200215125张立男19IS3.4关系代数1/12/202466[例2]查询年龄小于20岁的学生

σSage<20(Student)

或σ4<20(Student)

结果:

SnoSnameSsexSageSdept200215122刘晨女19IS200215123王敏女18MA200215125张立男19IS3.4关系代数1/12/202467投影(Projection)投影运算符的含义从R中选择出若干属性列组成新的关系

πA(R)={t[A]|t

R} A:R中的属性列投影操作主要是从列的角度进行运算但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)3.4关系代数π1/12/2024683.4关系代数[例3]查询学生的姓名和所在系即求Student关系上学生姓名和所在系两个属性上的投影

∏Sname,Sdept(Student)

或∏2,5(Student)结果:SnameSdept李勇CS刘晨IS王敏MA张立IS1/12/202469[例4]查询学生关系Student中都有哪些系

∏Sdept(Student)

结果:SdeptCSISMA3.4关系代数1/12/2024703.4关系代数连接(Join)连接也称为θ连接连接运算的含义从两个关系的笛卡尔积中选取属性间满足一定条件的元组

RS={|tr

R∧ts

S∧tr[A]θts[B]}A和B:分别为R和S上度数相等且可比的属性组θ:比较运算符

AθBtr

ts1/12/202471连接运算是从R和S的广义笛卡尔积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系θ的元组组成的新关系3.4关系代数1/12/202472两类常用连接运算等值连接(equijoin)什么是等值连接θ为“=”的连接运算称为等值连接等值连接的含义从关系R与S的广义笛卡尔积中选取A、B属性值相等的元组,即等值连接为:

RS={|tr

R∧ts

S∧tr[A]=ts[B]}A=Btr

ts3.4关系代数1/12/202473自然连接(Naturaljoin)

自然连接是一种特殊的等值连接两个关系中进行比较的分量必须是相同的属性组在结果中把重复的属性列去掉自然连接的含义

R和S具有相同的属性组B

R

S={|tr

R∧ts

S∧tr[B]=ts[B]}tr

ts3.4关系代数1/12/202474一般的连接操作是从行的角度进行运算。

自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。

AθBRS3.4关系代数1/12/202475[例5]关系R和关系S

如下所示:3.4关系代数1/12/202476一般连接RS的结果如下:

C<E3.4关系代数1/12/202477

等值连接R

S的结果如下:R.B=S.B

3.4关系代数1/12/202478

自然连接R

S的结果如下:

3.4关系代数1/12/202479等值连接与自然连接的区别:等值连接中不要求相等属性值的属性名相同,而自然连接要求相等属性值的属性名必须相同,即两关系只有在同名属性才能进行自然连接。等值连接不将重复属性去掉,而自然连接去掉重复属性,也可以说,自然连接是去掉重复列的等值连接。如上例R中的B列和S中的B列进行等值连接时,结果有两个重复的属性列B,而进行自然连接时,结果只有一个属性列B。3.4关系代数1/12/202480外连接如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接(OUTERJOIN)。左外连接(R*∞S)如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFTOUTERJOIN或LEFTJOIN)右外连接(R∞*S)如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHTOUTERJOIN或RIGHTJOIN)。全外连接(R*∞*S)3.4关系代数1/12/202481下图是例5中关系R和关系S的全外连接3.4关系代数1/12/202482图(b)是例5中关系R和关系S的左外连接,图(c)是右外连接3.4关系代数1/12/202483例6:查询选修“数据库”课程的学生姓名。

ΠSname(

Cname='数据库'(C∞SC∞S))或ΠSname

(

Cname='数据库'(C)∞SC∞ΠSNo,Sname(S))

或ΠSname(ΠSno(

Cname='数据库'(C)∞SC)∞

ΠSNo,Sname(S))3.4关系代数1/12/202484例7:查询全体学生的选课情况(含未选课的学生信息)

S*SC例8:(P50例4)Π商品号,商品名,进货价格(

销售价格>5000(商品销售))3.4关系代数

1/12/202485除(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]3.4关系代数1/12/202486除操作是同时从行和列角度进行运算

÷RS3.4关系代数1/12/2024873.4关系代数关系的除法分下面4步进行:1)将被除关系分为象集属性和结果属性两部分:与除关系相同的属性为象集属性,不同的属性为结果属性。2)在除关系中,对与被除关系相同的属性(象集属性)进行投影,得到除目标数据集。3)将被除关系分组,分组原则:结果属性值一样的元组分成一组。4)逐一考察每个组,若它的象集属性值中包括除目标数据集,则对应的结果属性值应属于该除法运算结果集。1/12/202488例:已知关系R和S,如图

(a),(b)所示,则R÷S如图(c)所示。与除法的定义相对应,本题中X={A,B}={(a1,b2),(a2,b4),(a3,b5)},Y={C,D}={(c3,d5),(c4,d6)},Z={F}={f3,f4}。其中,元组在X上各个分量值的象集分别为:(a1,b2)的象集为{(c3,d5),(c4,d6)}(a2,b4)的象集为{(c1,d3)}(a3,b5)的象集为{(c2,d8)}S在Y上的投影为{(c3,d5),(c4,d6)}显然只有(a1,b2)的象集包含S在Y上的投影,所以R÷S={(a1,b2)}1/12/202489

RSR÷S(a)(b)(c)

图ABCD

CDF

ABa1b2c3d5

c3d5f3

a1b2a1b2c4d6

c4d6f4

a2b4c1d3

a3b5c2d8

象集属性结果属性除目标数据集1231/12/202490除(续)[例6]设关系R、S分别为下图的(a)和(b),R÷S的结果为图(c)1/12/202491分析在关系R中,A可以取四个值{a1,a2,a3,a4}a1的象集为{(b1,c2),(b2,c3),(b2,c1)}a2的象集为{(b3,c7),(b2,c3)}a3的象集为{(b4,c6)}a4的象集为{(b6,c6)}S在(B,C)上的投影为

{(b1,c2),(b2,c1),(b2,c3)}只有a1的象集包含了S在(B,C)属性组上的投影所以R÷S={a1}1/12/202492除法运算同时从行和列的角度进行运算,适合于包含“全部”之类的短语的查询。例:查询选修了全部课程的学生学号和姓名。ΠSNO,CNO(SC)÷ΠCNO(C)*ΠSNO,SN(S)1/12/202493综合举例设某教学管理数据库由以下关系模式构成:学生(学号,姓名,性别,年龄,所在系)课程(课程号,课程名,先行课程,学分)教师(教师号,教师名,职称)选修(学号,课程号,成绩)授课(教师号,课程号)1/12/202494综合举例(续)例1:查询学号为95001学生所选修的课程号、课程名。∏课程号,课程名(σ学号=“95001”(课程选修))或:∏课程号(σ学号=“95001”(选修))∏课程号,课程名(课程)

1/12/202495综合举例(续)例2:查询年龄大于19岁的男生的学号,姓名,所在系。∏学号,姓名,所在系(σ

年龄>19∧性别=“男”(学生))例3:查询刘晨同学所选修的课程名及成绩。∏课程名,成绩(σ姓名=“刘晨”(课程选修学生))或:∏课程名,成绩(∏学号(σ姓名=“刘晨”(学生))选修

∏课程号,课程名(课程))

1/12/202496综合举例(续)例4:查询刘晨同学未选修的课程号、课程名∏课程号,课程名(课程)-∏课程号,课程名(σ姓名=“刘晨”(课程选修学生))

1/12/202497综合举例

例5:查询至少(同时)选修1号课程和3号课程的学生的学号。

∏学号

(σ课程号=“1”(选修))∩∏学号

(σ课程号=“3”(选修)或:

∏学号,课程号

(选修)÷∏课程号

(σ课程号=“1”∨课程号=“3”

(课程))或:∏学号

(σ课程号=“1”(选修))∏学号

(σ课程号=“3”(选修))

1/12/202498综合举例(续)例6:查询至少选修了一门其直接先行课为5号课程的学生姓名

∏姓名(σ先行课程=‘5’(课程选修学生))或

∏姓名(σ先行课程=‘5’(课程)选修∏学号,姓名(学生))或∏姓名(∏学号(σ先行课程=‘5’(课程)选修)∏学号,姓名(学生))

1/12/202499综合举例例7:查询至少选修了刘伟老师所授全部课程的学生姓名。∏姓名,课程号(选修学生)÷∏课程号(σ教师名=“刘伟”(授课教师))或:∏姓名,课程号(∏姓名,学号(学生)∏课程号,学号(选修))÷∏课程号(∏教师号(σ教师名=“刘伟”(教师))授课)

1/12/2024100综合举例(续)例8:查询选修了全部课程的学生学号和姓名。

∏学号,课程号(选修)÷∏课程号(课程)∏学号,姓名(学生)或:

∏学号,姓名,课程号(选修学生)÷∏课程号(课程)

1/12/2024101综合举例(续)例9:查询哪些课程被所有的学生选修,列出这些课程的课程号,课程名。∏学号,课程号(选修)÷∏学号(学生)∏课程号,课程名(课程)或:

∏学号,课程号,课程名(选修课程)÷∏学号(学生)

1/12/2024102关系代数操作小结1/12/20248:41AM1031/12/2024103关系代数操作小结1/12/20248:41AM1041/12/20241043.5关系演算

关系演算以数理逻辑中的谓词演算为基础按谓词变元不同进行分类1.元组关系演算:以元组变量作为谓词变元的基本对象元组关系演算语言ALPHA2.域关系演算:以域变量作为谓词变元的基本对象域关系演算语言QBE1/12/20241053.5关系演算元组关系演算语言ALPHA语句检索语句GET更新语句PUT,HOLD,UPDATE,DELETE,DROP1/12/20241063.5关系演算

检索操作语句格式:

GET

工作空间名[(定额)](表达式1)

[:操作条件][DOWN/UP表达式2]

定额:规定检索的元组个数格式:数字表达式1:指定语句的操作对象格式:关系名|关系名.属性名|元组变量.属性名|集函数[,…]1/12/20241073.5关系演算操作条件:将操作结果限定在满足条件的元组中格式:逻辑表达式表达式2:指定排序方式格式:关系名.属性名|元组变量.属性名[,…]1/12/20241083.5关系演算

(1)简单检索

GET

工作空间名(表达式1)[例1]查询所有被选修的课程号码。

GETW(SC.Cno)

[例2]查询所有学生的数据。

GETW(Student)1/12/2024109(2)限定的检索格式:GET

工作空间名(表达式1):操作条件[例3]查询信息系(IS)中年龄小于20岁的学生的学号和年龄

GETW(Student.Sno,Student.Sage):

Student.Sdept='IS'∧Student.Sage<203.5关系演算1/12/2024110(3)带排序的检索格式

GET

工作空间名(表达式1)[:操作条件]DOWN/UP表达式2[例4]查询计算机科学系(CS)学生的学号、年龄,结果按年龄降序排序GETW(Student.Sno,Student.Sage):

Student.Sdept='CS‘

DOWNStudent.Sage3.5关系演算1/12/20241113.5关系演算(4)带定额的检索格式

GET

工作空间名(定额)(表达式1)

[:操作条件][DOWN/UP

表达式2][例5]取出一个信息系学生的学号。

GETW(1)(Student.Sno):

Student.Sdept='IS'

[例6]查询信息系年龄最大的三个学生的学号及其年龄,结果按年龄降序排序。

GETW(3)(Student.Sno,Student.Sage):

Student.Sdept='IS'DOWNStudent.Sage1/12/20241123.5关系演算(5)用元组变量的检索元组变量的含义表示可以在某一关系范围内变化(也称为范围变量RangeVariable)元组变量的用途①简化关系名:设一个较短名字的元组变量来代替较长的关系名。②操作条件中使用量词时必须用元组变量。定义元组变量格式:RANGE关系名变量名一个关系可以设多个元组变量1/12/20241133.5关系演算(6)用存在量词的检索操作条件中使用量词时必须用元组变量[例8]查询选修2号课程的学生名字。

RANGESCX

GETW(Student.Sname):

X(X.Sno=Student.Sno∧X.Cno='2')[例9]查询选修了这样课程的学生学号,其直接先行课是6号课程。

RANGECourseCXGETW(SC.Sno):

CX(CX.Cno=SC.Cno∧CX.Pcno='6')1/12/2024114

3.5关系演算[例10]查询至少选修一门其先行课为6号课程的学生名字

RANGECourseCXSCSCX GETW(Student.Sname):

SCX(SCX.Sno=Student.Sno∧

CX(CX.Cno=SCX.Cno∧CX.Pcno='6'))

前束范式形式:

GETW(Student.Sname):

SCX

CX(SCX.Sno=Student.Sno∧CX.Cno=SCX.Cno∧CX.Pcno='6')1/12/2024115

3.5关系演算(7)带有多个关系的表达式的检索[例11]查询成绩为90分以上的学生名字与课程名字。

RANGESCSCXGETW(Student.Sname,Course.Cname):

SCX(SCX.Grade≥90∧

SCX.Sno=Student.Sno∧

Course.Cno=SCX.Cno)1/12/2024116

3.5关系演算(8)用全称量词的检索

[例12]查询不选1号课程的学生名字

RANGESCSCXGETW(Student.Sname):SCX(SCX.Sno≠Student.Sno∨SCX.Cno≠'1')用存在量词表示:

RANGESCSCXGETW(Student.Sname):

SCX(SCX.Sno=Student.Sno∧SCX.Cno='1')1/12/2024117(9)用两种量词的检索[例13]查询选修了全部课程的学生姓名。

RANGECourseCXSCSCXGETW(Student.Sname):CX

SCX(SCX.Sno=Student.Sno∧

SCX.Cno=CX.Cno)

3.5关系演算1/12/20241183.5关系演算(10)用蕴函(Implication)的检索

[例14]查询最少选修了200215122学生所选课程的学生学号

RANGECouseCXSCSCXSCSCYGETW(Student.Sno):CX(

SCX(SCX.Sno=‘200215122'∧SCX.Cno=CX.Cno)

SCY(SCY.Sno=Student.Sno∧ SCY.Cno=CX.Cno))1/12/20241193.5关系演算(11)聚集函数常用聚集函数(Aggregationfunction)或内部函数(Build-infunction)关系演算中的聚集函数

函数名功能COUNT对元组计数TOTAL求总和MAX求最大值MIN求最小值AVG求平均值1/12/20241203.5关系演算[例15]查询学生所在系的数目。

GETW(COUNT(Student.Sdept))

COUNT函数在计数时会自动排除重复值。

[例16]查询信息系学生的平均年龄

GETW(AVG(Student.Sage):

Student.Sdept='IS’)1/12/20241213.5关系演算更新操作(1)修改操作(2)插入操作(3)删除操作1/12/20241223.5关系演算(1)修改操作步骤①用HOLD语句将要修改的元组从数据库中读到工作空间中HOLD

工作空间名(表达式1)[:操作条件]HOLD语句是带上并发控制的GET语句②用宿主语言修改工作空间中元组的属性③用UPDATE语句将修改后的元组送回数据库中

UPDATE

工作空间名1/12/20241233.5关系演算

[例17]把95007学生从计算机科学系转到信息系。

HOLDW(Student.Sno,Student.Sdetp):Student.Sno=‘95007'

(从Student关系中读出95007学生的数据)

MOVE'IS'TOW.Sdept

(用宿主语言进行修改)

UPDATEW

(把修改后的元组送回Student关系)1/12/20241243.5关系演算(2)插入操作步骤①用宿主语言在工作空间中建立新元组②用PUT语句把该元组存入指定关系中

PUT

工作空间名(关系名)

PUT语句只对一个关系操作,即关系表达式必须为单个关系名.1/12/20241253.5关系演算[例18]学校新开设了一门2学分的课程“计算机组织与结构”,其课程号为8,直接先行课为6号课程。插入该课程元组

MOVE'8'TOW.CnoMOVE'计算机组织与结构'TOW.CnameMOVE'6'TOW.CpnoMOVE'2'TOW.Ccredit

PUTW(Course)1/12/20241263.5关系演算(3)删除操作步骤①用HOLD语句把要删除的元组从数据库中读到工作空间中②用DELETE语句删除该元组

DELETE

工作空间名1/12/20241273.5关系演算[例19]95110学生因故退学,删除该学生元组

HOLDW(Student):student.Sno=‘95110'DELETEW

1/12/20241283.5关系演算[例20]将学号200715121改为200715126HOLDW(Student):Student.Sno=‘200715121'

DELETEWMOVE‘200715126'TOW.SnoMOVE'李勇'TOW.SnameMOVE'男'TOW.SsexMOVE'20‘TOW.SageMOVE'CS'TOW.Sdept

PUTW(Student)

修改主码的操作一般要分解为先删除、再插入的方法完成操作。1/12/20241293.5关系演算[例21]删除全部学生

HOLDW(Student)DELETEW

为保证参照完整性,删除Student中元组时相应地要删除SC中的元组

HOLDW(SC)DELETEW

1/12/20241303.5关系演算域关系演算语言QBE以元组变量的分量即域变量作为谓词变元的基本对象QBE:QueryByExample基于屏幕表格的查询语言查询要求:以填写表格的方式构造查询用示例元素(域变量)来表示查询结果可能的情况查询结果:以表格形式显示1/12/20241313.5关系演算QBE操作框架关系名属性名操作命令元组属性值或查询条件或操作命令1/12/20241323.5关系演算1.简单查询[例1]求信息系全体学生的姓名操作步骤为:(1)用户提出要求;(2)屏幕显示空白表格;1/12/20241333.5关系演算(3)用户在最左边一栏输入要查询的关系名Student;(4)系统显示该关系的属性名

StudentStudentSnoSnameSsexSageSdept1/12/20241343.5关系演算(5)用户在上面构造查询要求李勇是示例元素,即域变量(6)屏幕显示查询结果StudentSnoSnameSsexSageSdeptP.李勇ISStudentSnoSnameSsexSageSdept李勇张立IS1/12/20241353.5关系演算构造查询的几个要素:示例元素即域变量一定要加下划线示例元素是这个域中可能的一个值,它不必是查询结果中的元素打印操作符P.

实际上是显示查询条件可使用比较运算符>,≥,<,≤,=和≠其中=可以省略1/12/20241363.5关系演算[例2]查询全体学生的全部数据StudentSnoSnameSsexSageSdeptP.200215121P.李勇P.男P.20P.CS1/12/20241373.5关系演算显示全部数据也可以简单地把P.操作符作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论