关系模型和关系运算.PPT

上传人:天*** 文档编号:360146 上传时间:2018-09-26 格式:PPT 页数:155 大小:751KB
下载 相关 举报
关系模型和关系运算.PPT_第1页
第1页 / 共155页
关系模型和关系运算.PPT_第2页
第2页 / 共155页
关系模型和关系运算.PPT_第3页
第3页 / 共155页
关系模型和关系运算.PPT_第4页
第4页 / 共155页
关系模型和关系运算.PPT_第5页
第5页 / 共155页
点击查看更多>>
资源描述

1、第3章 关系模型和关系运算,定西广播电视大学 肖武德起点中文阅读 http:/,本章要点,理解关系模型的基本概念。将用对象定义语言或实体-联系模型为数据库所建模型转换成需要的关系模型。熟练掌握关系代数语言的使用,并掌握关系演算语言和关系逻辑语言的使用。,教学要求,理解:关系模型的基本概念。熟练掌握:ODL设计转换为关系设计。熟练掌握:E/R图设计转换为关系设计。熟练掌握:用关系代数表达式表达查询要求。基本掌握:用关系演算表达式表达查询要求。基本掌握:用关系逻辑表达式(数据逻辑规则)表达查询要求。,3.1 关系模型的基本概念,关系模型用一种称为“关系”的二维表来表示数据。,3.1.1 属 性 :

2、 属性是关系的标题栏中各列的名字。 属性描述了该列各数据项的含义。3.1.2 模 式 : 关系的名称和关系的属性集称为关系的“模式”。Student ( StudentNo, StudentName, Age, Dept ),在关系模型中,数据库设计包含一个或多个关系模式,我们将所设计的关系模式的集合称为“关系数据库模式”,或者简称为“数据库模式”。,3.1.3 元组,除了关系的标题栏以外,其他各行统称“元组”。元组的各分量分别对应于关系的各个属性。(990011,李明,19,计算机系)。通常一个元组就表示一个对象,而元组所属的关系就表示对象所属的类。,图3.1,3.1.5 关系的等价表示法,

3、关系的模式和元组都是集合,而不是列表,因此它们的顺序是无关紧要的,我们可以重新排列关系的行和列,而关系并不改变。通常都为关系选择一个“标准”的属性顺序。 我们把给定关系中元组的集合称为该关系的“实例”。,P习题1 如果某关系的实例满足下列条件之一 ,要表示该实例,有多少种不同的方法(考虑元组的顺序和属性的顺序)。解:(1)(2)(3)m个属性可有m!种不同的排列顺序,n个元组可有n!种不同的排列顺序,因此共有m! * n!种不同的排列顺序。,3.2 从ODL设计到关系设计,3.2.1 从ODL属性到关系属性 假设类的所有特性都是属性,而不是联系或者方法;并且属性都是原子类型,而不是结构、集合、

4、数组等类型。 类的每个属性对应于该关系的一个属性。,下面的关系就是一个满足条件的例子,3.2.2 类中的非原子属性,假设ODL中的属性可能是复杂的数据类型,比如结构、集合等,而关系模型要求关系的属性必须是原子类型。结构的每个域对应于关系的一个属性。 如果属性是多个值的集合,可以针对每个值建立一个元组。,Interface Student attribute integer StudentNo; attribute struct Name Type string First, string Last Student Name; attribute integer Age; attribute s

5、tring Dpat; ,3.2.3 单值联系的表示,interface Movie attribute string Title; attribute integer Year; relationship Set actors inverse Actor:movies; relationship Studio ownedby inverse Studio:owns;,单值联系的表示(续),interface Studio attribute string Name; attribute string Address; relationship Set ownsinverse Movie:ow

6、nedby;,只要建立相关类中构成键码的属性集就可以表示相关类的对象了。假设公司名Name是类Studio的键码,那么我们在关系Movie的模式中设计一个表示所属制片公司名的属性StudioName,关系Movie如下所示。,3.2.4 多值联系的表示,为了表示多值联系,要结合如下两种方法:首先,和单值联系一样,要找出表示每个相关对象的键码;其次,和表示集合类型的属性一样,为相关对象集合的每个元素建立一个元组。,Movie类到Actor类的联系actors是多值联系,Actor类的ODL描述如下:interface Actor attribute string Name; attribute

7、integer Year; relationship Set movies inverseMovie:actors;,3.2.5 联系与反向联系的表示,联系及其反向联系中的任何一个都包含了另一个的全部信息,所以我们完全可以保留其中一个,删除另一个。,3.2.6 ODL子类的表示,将ODL子类转换成关系模式:,每个子类都对应于一个关系 这个关系用相应子类的所有特性(包括从超类继承下来的全部特性)来表示,P37 习题5 设计一个适合大学选课的数据库。该数据库应包括学生、系、教师、课程,哪个学生选了哪门课,哪个教师教哪门课,学生的成绩,一个系提供哪些课程等信息。用ODL进行描述,注意为属性和联系选择

8、适当的类型,并指出每个类的键码。P67 习题3 将第二章习题5的ODL设计转换成关系数据库模式。,interface Student (key SNo)attribute integer SNo;attribute string SN;attribute integer Score ;Relationship Set courses1inverse Course:students1;relationship Depart depart1inverse Depart:students2;;,interface Teacher (key TNo)attribute integer TNo;attr

9、ibute string TN;relationship Set courses2inverse Course:teachers;,interface Depart (key DNo,DN)attribute integer DNo;attribute string DN;relationship Set students2inverse Student:depart1;relatianship Set courses3inverse Course:deprt2;,interface Course (key CNO )attribute integer CNo;attribute string

10、 CN;reletionship Set students 1 inverse student:courses1;relationship Set teachers inverse Teacher:courses2;relationship Depart depart2inverse Depart:courses3;;,E/R图与ODL主要有以下区别: 1联系 在E/R图中独立存在,在ODL中作为特性嵌套在类定义中。 2属性 在ODL中可能是任意的聚集类型;在E/R图中,允许使用结构化的数据,而不允许使用集合或者其他聚集类型的数据。 3在E/R图中,联系可以具有属性。,3.3 从E/R图到关系

11、设计,实体集Course对应的关系如下所示:,3.3.1 实体集到关系的转换,实体集Student对应的关系如下所示:,3.3.2 E/R联系到关系的转换,E/R图中的联系也可用关系表示:一、联系R所涉及到的每个实体集的键码属性(集)二、R本身的属性.,多向联系转换为关系也特别容易。在将R转换为关系的时候,只要让R的属性包括与其相关的所有实体集的键码属性(集)和它本身的属性即可。,不为 “isa”联系建立相应的关系,而是把“isa”联系隐含在这样的事实里,即与“isa”联系有关的实体集都具有相同的键码。此时,关系Movie的模式仍然为:Movie(Title,Year,StudioName,

12、ActorName )关系Murder的模式为:Murder ( Title, Year,Weapon ),3.3.3 “属于”联系到关系的转换,P37 习题6 用E/R模型表达习题5的学生选课数据库。,Student (SNo,SN ,Score ) Depart (DNo,DN) Teacher (TNo,TN) Course (CNo,CN) Belong (SNo,DNo) Teach (TNo,CNo) Choose (SNo,CNo) Supply (DNo,CNo),P67 习题4 图3.23表示的是一个航空公司的E/R图,试将其转换为关系数据库模式。,No,Date,Name,

13、Booking,Customer,flight,Seat,Kind,number,Address,Customer(No, Name ,Address ) Flight (Number,Date ,Kind) Booking(No, Number ,Date,Seat ),3.4 关系代数,关系代数是一种抽象的查询语言,通过对关系的运算来表达查询。关系代数的运算对象是关系,运算结果也是关系。,1 普通的集合运算并、交、差2 删除一部分关系的运算选择运算“”会删除某些行投影运算“”会删除某些列,关系代数运算可以分为四类:,3 合并两个关系的运算“笛卡儿积”运算把两个关系的元组以所有可能的方式组合

14、起来.“连接”运算有选择地从两个关系取出元组组合在一起4 改名运算不改变关系的元组,只改变关系的模式:改变属性的名字或者关系本身的名字,3.4.1 关系的集合运算,三种最普通的集合运算:并、交和差:(1) RS,R和S的并,它是R中的元素和S中的元素共同组成的集合。,R,S,R S,R,S,(2) RS,R和S的交,它是既出现在R中又出现在S中的元素组成的集合。,(3) RS,R和S的差,它是只在R中出现,不在S中出现的元素组成的集合。,R S,要想对两个关系R和S进行上述运算,R和S必须满足如下条件: lR和S的模式具有相同的属性集l在对R和S进行集合运算之前,要对R和S的属性列进行排序,保

15、证两个关系的属性顺序相同,关系R,关系S,并集RS:,交集RS:,差集RS:,3.4.2 投影,投影运算符是,该运算作用于关系R将产生一个新关系S,S只具有R的某几个属性列。投影运算的一般表达式如下:S = A1, A2, , An(R)S是投影运算产生的新关系,它只具有R的属性A1, A2, , An所对应的列。,现在考虑一下学生关系Student,它的当前实例如下:,StudentNo, StudentName(Student):,3.4.3 选择,选择运算符是,该运算符作用于关系R也将产生一个新关系S,S的元组集合是R的一个满足某条件C的子集。选择运算的一般表达式为:S = C(R)S的

16、模式与R的模式完全相同。C是我们所熟悉的条件表达式。,仍然用上面的例子,那么作如下运算:Age 18(Student) 应该是:,查询计算机系年龄大于18的学生资料,可以用如下表达式: Age 18 AND Dept = “计算机系”(Student),3.4.4 笛卡尔积,两个关系R和S的笛卡尔积记作RS,它的关系模式是R和S的模式的并集。RS是把R和S的元组以所有可能的方式组合起来,因此,RS拥有的元组数量应该是R的元组数与S的元组数的乘积。,假设关系R有两个属性,分别是A和B;关系S有三个属性,分别是B、C和D。R的当前实例有两个元组,S的当前实例有三个元组:,关系R,关系S,在关系RS

17、中,关系模式应有五个属性:A、R.B、S.B、C和D,RS有六个元组:,3.4.5 自然连接,两个关系R和S的自然连接,记作R S,得到的关系模式是R和S模式的并集。R S的元组是:假设A1,A2 , , An是R和S的模式中的公共属性,那么如果R的元组r和S的元组s在这些属性上取值都相同,r和s组合而成的元组就归入R S中。,例如,对上例中的两个关系R和S,它们的自然连接应该是:,3.4.6 连接,两个关系R和S基于条件C的连接 用R c S表示,它是这样得到的:先作R和S的笛卡尔积,然后从RS的元组中选择满足条件C的元组集合。,R R.BS.B S,其结果应该是:,3.4.7 改名,运算S

18、 ( A1, A2, , An )(R)用来把关系R改名为关系S,同时把关系S的属性从左至右依次命名为A1, A2, , An。 假如我们只想改变关系名,不想改变关系模式中的属性名,那么用如下形式S(R),S ( X, C, D )(S)这样,改名后的笛卡尔积RS ( X, C, D )(S),其结果如下图所示:,3.4.8 复合运算假定我们现在想查询计算机系年龄大于18岁的学生的学号和姓名: StudentNo, StudentName (Age 18 AND Dept = “计算机系” (Student)),查询成绩超过80分的学生姓名(只要有一门课的成绩超过80分即可),可用如下表达式:

19、StudentName(Score80(Student SC)),3.4.9 基本运算和导出运算,交集可以用集合差的形式表达:RS = R( RS ),R ( R-S),R-S,除了交、连接、自然连接这三种可由其他运算导出的运算之外,另外六种运算并、差、选择、投影、笛卡尔积和改名都是基本运算,每一种都不能由另外五种运算导出。,P67 习题5 结合学生选课数据库,用关系代数进行一下查询:(1)学号为9900111的学生的系别和年龄;(2)有不及格(成绩60)学生的课程名;(3)计算机系有不及格课程的学生名单;(4)学生张林的“数据库原理”课成绩。,解:假设学生选课数据库关系模式如下: Stude

20、nt (SNo, SName, SAge ,SDept ) Course (CNo, CName) SC (SNo,CNo, Score)(1) SDept,Sage(SNO=9900111(Student )(2)Cname(score60 (SC) Course )(3) SName(score、= 等), 表示元组t的第i个分量与元组s的第j个分量满足 关系,3ti C或C ti,其中C表示一个常量,其他含义同上。ti C表示t的第i个分量与常量C满足 关系,例如t1u1),3.5.2 域关系演算域关系演算与元组演算非常相似,在域关系演算中,也有原子公式和公式等概念,不过顾名思义,元组关

21、系演算表达式用的是元组变量,而域关系演算表达式用的是元组分量的变量,域变量的变化范围是某个值域,而不是某个关系。,域关系演算的原子公式有两种:,R ( x1,x2, , xk ),其中R是一个关系,它具有k个属性,xi(i=1,2,k)是一个常量或者域变量。如果 ( x1, x2, , xk )是R的一个元组,那么R ( x1,x2, , xk )为真。 xy,其中x和y是常量或者域变量,是算术比较运算符(如、= 等等)。如果x和y满足关系,则 xy为真。,域关系演算表达式的一般形式是:,x1,x2, , xk |(x1, x2, , xk ) 其中x1, x2, , xk都是域变量,是公式。

22、该表达式的含义是:使为真的域变量x1, x2, , xk组成的元组的集合。,假设元组关系演算表达式为 t |( t ) ,转换成等价的域关系演算的方法如下:,1.如果t是有n个分量的元组变量,则为t的每个分量ti引进一个域变量ti,用ti来替换公式中所有的ti。相应的域关系演算表达式形式为 t1, t2, , tn |(t1, t2, , tn ) ,2.出现存在量词( u)或者全称量词( u)的时候,如果u是有m个分量的元组变量,则为u的每个变量ui引进一个域变量ui,将量词辖域内所有的u用u1u2um替换,所有的ui用ui来替换。,例:查询计算机系年龄为18岁的学生的元组演算表达式为:tS

23、tudent(t)t3=18t4=“计算机系”转换为关系演算表达式如下:t1t2t3t4 Student(t1t2t3t4)t3=18t4=“计算机系”,例:查询有一门课成绩超过80分的学生姓名,其元组演算表达式为:t(1)( u)( v)Student(u)SC(v)t1=u2 u1=v1 v380转换为关系演算表达式如下:t1 ( u1) ( u2) ( u3) ( u4) ( v1) ( v2) ( v3) Student(u1u2u3u4)SC(v1v2v3)t1=u2 u1=v1 v380,假设关系R、S如下图:,R,S, xy | R( xy )S ( xy ), xy | ( )

24、 ( ) (R( xy ) S ( uv ) x=u), xy | ( ) ( ) (R( xy ) S ( uv ) yu),以后,把存在量词( u1)( u3)( u4)简写成( u1u2u3),把( v2)( v3)简写成( v1v2),使表达式进一步简化。,P67 习题5 结合学生选课数据库,用关系代数进行一下查询:(1)学号为9900111的学生的系别和年龄;(2)有不及格(成绩60)学生的课程名;(3)计算机系有不及格课程的学生名单;(4)学生张林的“数据库原理”课成绩。P67 习题6 分别用元组关系演算和域关系演算表示习题5中的查询。,(1)学号为9900111的学生的系别和年龄

25、;用元组关系演算表示: 用域关系演算表示 :,(2)有不及格(成绩 18 AND Dept = “计算机系”(Student),S ( a, b, c, d ) Student ( a, b, c, d ) AND c18 AND d=“计算机系”,NOT(Age 18 AND Dept = “计算机系”)(Student)找出不是既大于18岁又属于计算机系的学生。 利用德.摩尔根定律的一种形式,即AND的反等于反的OR(“与”的反等于反的“或”),把NOT推到表达式的内层:(NOT(Age 18) OR (NOT(Dept = “计算机系”)(Student),在比较的内部取反:Age18

26、OR Dept“计算机系”(Student)最后,用两个规则分别对应OR两边的选择条件,得到的规则如下:S ( a, b, c, d ) Student ( a, b, c, d ) AND c18S ( a, b, c, d ) Student ( a, b, c, d ) AND d“计算机系”,5投影假定我们要把关系Student投影到两个属性StudentName和Dept上,那么可以用如下规则表示:P ( b, d ) Student ( a, b, c, d ),6笛卡尔积假设关系R具有两个属性,关系S具有三个属性,那么RS可以表示如下:M (a, b, x, y, z ) R (

27、 a, b ) AND S ( x, y, z ),7自然连接自然连接的表达与笛卡尔积有些相似,有两点要注意:R和S中的公共属性必须使用相同的变量,公共属性所对应的变量在头部只出现一次。关系R(A,B)和S(B,C,D)的自然连接可以表示如下:N (a, b, c, d ) R ( a, b ) AND S ( b, c, d ),8连接由于同样涉及到条件C,所以可以参考如何用数据逻辑规则来表示选择。,例:R(A,B)和S(B,C,D)的连接 R R.BS.BS应该用如下规则表示:J(a,rb,sb,c,d) R(a,rb)AND S(sb,c,d) AND rbsb,9. 复杂的关系代数表达

28、式 对于复杂的包含多种运算的关系代数,较为有条理的做法是为表达式建立一棵表达树,将表达式分解为几步只含有单一关系代数运算符的运算,随后将每步运算改写成一个规则,得到一个辅助用的中间关系,最后得到的关系就是我们需要的查询结果。,例如,以下关系代数表达式:StudentName(Score80 (Student StudentCouese))表达树为:,连接、选择和投影:(1)A(Sno,Sname,A,D,Cno,S) Student(Sno,Sname,A,D) AND StudentCourse(Sno,Cno,S)(2)B( Sno,Sname,A,D,Cno,S) A( Sno,Snam

29、e,A,D,Cno,S) AND S80(3)Result(Sname) B( Sno,Sname,A,D,Cno,S),对这些规则作适当简化,例如用(1)的规则体替代(2)中的子目标A,再用(2)的规则体替代(3)中的子目标B,最终得到:Result(Sname) Student(Sno,Sname,A,D) AND StudentCourse(Sno,Cno,S) AND S80,P67 习题5 结合学生选课数据库,用关系代数进行一下查询:(1)学号为9900111的学生的系别和年龄;(2)有不及格(成绩60)学生的课程名;(3)计算机系有不及格课程的学生名单;(4)学生张林的“数据库原理

30、”课成绩。P67 习题6 用数据逻辑规则表示习题5中的查询。,(1)学号为9900111的学生的系别和年龄;S(D,A)Student (SNO,SN,A,D) AND SNO=9900111(2)有不及格(成绩60)学生的课程名;C(CN)Coures (CNo,CN) AND SC(SNo,CNo,S) AND S60,(3)计算机系有不及格课程的学生名单; S(SN)Student (SNo,SN,A,D) AND SC(SNo,CNo,S) AND D=计算机系AND S60(4)学生张林的“数据库原理”课成绩。(4)U(S)Student (SNo,SN,A,D) AND SC(SN

31、o,CNo,S) AND Coures (CNo,CN) AND SN=张林 AND CN=数据库原理,P67 习题8 画出习题5中查询(4)的关系代数表达树。,ScoreSName=张林 CName=数据库原理 Student SC Course,本章总结,关系代数是一种抽象的查询语言,通过对关系的运算来表达查询。关系代数的运算对象是关系,运算结果也是关系。通过将六种基本的运算加以组合,可以构造出非常复杂的关系运算表达式,用户希望对数据库进行的大部分操作都能用这些运算的组合来完成。,本章总结,关系演算以数理逻辑中的谓词演算为基础。根据关系演算中变量的不同,可以将关系演算进一步分为元组关系演算

32、和域关系演算。本章还介绍了一种逻辑查询语言,称为数据逻辑(Datalog),它所包括的是一系列if-then规则。数据逻辑用一种称为“谓词”的符号来表示关系;用“规则”来描述关系代数中的各种运算。,本章总结,关系模型(Relational Model):用称为关系的二维表来表示数据,其数据模型就称为关系模型。模式(Schema)与实例(Instance):关系的名称和属性集总称为关系的模式。关系模式的集合称为关系数据库模式。一个关系或关系集合所对应的特定数据称为该关系模式或该数据库模式的实例。,本章总结,ODL类转换为关系:分为属性和联系两方面的转换。对于原子类型的属性,类的每个属性对应于关系

33、的一个属性。对于非原子属性,若为结构,则把结构中的每个元素作为关系的一个属性;若为集合,则按元素的个数把相关的一个元组扩展为多个元组;若为数组,则按元素的个数既可扩展为多个元组,也可扩展为多个属性。,本章总结,ODL中联系的转换:若为单值联系,则把相关类中构成键码的属性(集)作为关系的附加属性(集)即可。若为多值联系,如为集合类型,那么,首先,把相关类的键码属性(集)作为关系的附加属性(集);其次,为相关对象集合的每个元素建立一个关系元组。对于联系与反向联系,常用的方法是将其独立出来作为一个新的关系。,本章总结,实体集与联系转换为关系:实体集可直接转换为关系,实体集的每个属性都对应于关系中的一个属性。E/R图中的联系转换为关系时,其属性由两部分组成:与该联系有关的每个实体集的键码属性(集);该联系本身的属性。,本章总结,子类结构到关系的转换:一种方法是为每个子类建立一个关系,而关系中含有子类及其超类的所有特性;另一种方法是,把子类结构划分为基本类和派生类(子类或通过属于联系扩展的实体集),用基本关系对应于基本类,而为每个派生类建立特定的关系,其中只包含基本类的键码属性(集)和该派生类的特有属性。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。