第2讲关系模型精选PPT.ppt
第2讲关系模型2022/10/72022/10/71 1第1页,此课件共107页哦上一章介绍了上一章介绍了三种三种主要的数据模型:主要的数据模型:层次模型网状模型关系模型其中关系模型简单灵活,并有着坚实的理论基础,已成为当前最流行的数据模型。本章主要讲述:关系模型的数据结构关系的定义和性质关系数据库的基本概念关系运算第2页,此课件共107页哦2.1关系模型关系模型就是用二维表格结构来表示实体及实体之间联系的模型。关系模型是各个关系的框架的集合,即关系模型是一些表格的格式,其中包括关系名、属性名、关键字等。教师关系课程关系C授课关系SC教师课程数据库的关系模型TNO教师号TN姓名SEX性别AGE年龄PROF职称SAL工资COMM岗位津贴DEPT系别CNO课程号CN课程名CT课时TNO教师号CNO课程号第3页,此课件共107页哦从各个关系的框架中,我们可以很容易看出哪两个关系之间有联系。例如:教师关系和授课关系有公共的属性“教师号”,则表明这两个关系有联系。而课程关系和授课关系有公共的属性“课程号”,则表明这两个关系也有联系。至于元组之间的联系,则与具体的数据有关。只有在公共属性上具有相同属性值的元组之间才有联系。第4页,此课件共107页哦由上例可以看出,在一个关系中可以存放两类信息:一类是描述实体本身的信息一类是描述实体(关系)之间的联系的信息在层次模型和网状模型中,把有联系的实体(元组)用指针链接起来,实体之间的联系是通过指针来实现的。而关系模型则采用不同的思想,即用二维表来表示实体与实体之间的联系,这就是关系模型的本质所在。所以,在建立关系模型时,只要把的所有的实体及其属性用关系框架来表示,同时把实体之间的关系也用关系框架来表示,就可以得到一个关系模型。如上例中的教师课程数据库的关系模型就是这样建立的。第5页,此课件共107页哦2.2关系的定义在关系模型中,数据是以二维表的形式存在的,这个二维表就叫做关系。关系理论是以集合代数理论为基础的,因此,我们可以用集合代数给出二维表的“关系”定义。为了从集合论的角度给出关系的定义,我们先引入域和笛卡尔积的概念。第6页,此课件共107页哦2.2.1域(Domain)域是一组具有相同数据类型的值的集合,又称为值域。(用D表示)例如整数、实数、字符串的集合。域中所包含的值的个数称为域的基数(用m表示)。关系中用域表示属性的取值范围。例如:D1=李力,王平,刘伟m1=3D2=男,女m2=2D3=47,28,30m3=3其中,D1,D2,D3为域名,分别表示教师关系中姓名、性别、年龄的集合。域名无排列次序,如D2=男,女=女,男第7页,此课件共107页哦笛卡尔积(CartesianProduct)给定一组域D1,D2,Dn(它们可以包含相同的元素,即可以完全不同,也可以部分或全部相同)。D1,D2,Dn的笛卡尔积为D1D2Dn=(d1,d2,dn)|diDi,i=1,2,n。由定义可以看出,笛卡尔积也是一个由定义可以看出,笛卡尔积也是一个集合集合。例如:上述表示教师关系中姓名、性别两个域的笛卡尔积为:D1=李力,王平,刘伟D2=男,女D1D2=(李力,男),(李力,女),(王平,男),(王平,女),(刘伟,男),(刘伟,女)第8页,此课件共107页哦笛卡尔积(CartesianProduct)给定一组域D1,D2,Dn(它们可以包含相同的元素,即可以完全不同,也可以部分或全部相同)。D1,D2,Dn的笛卡尔积为D1D2Dn=(d1,d2,dn)|diDi,i=1,2,n。其中:1.元素中的每一个di叫做一个分量(Component),来自相应的域(diDi)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)。其中:李力、王平、刘伟、男、女都是分量(李力,男),(李力,女)等是元组第9页,此课件共107页哦3.若Di(i=1,2,n)为有限集,Di中的集合元素个数称为Di的基数,用mi(i=1,2,n)表示,则笛卡尔积D1D2Dn的基数M(即元素(d1,d2,dn)的个数)为所有域的基数的累积,即M=例如:上述表示教师关系中姓名、性别两个域的笛卡尔积为:D1D2=(李力,男),(李力,女),(王平,男),(王平,女),(刘伟,男),(刘伟,女)其中:其基数M=m1m2=3*2=6元组的个数为6第10页,此课件共107页哦4.笛卡尔积可用二维表的形式表示。例如,上述的6个元组可表示成表2.1。D1和D2的笛卡尔积由上例可以看出,笛卡尔积实际是一个二维表,表的框架由域构成,表的任意一行就是一个元组,表中的每一列来自同一域,如第一个分量来自D1,第二个分量来自D2。姓名性别李力男李力女王平男王平女刘伟男刘伟女第11页,此课件共107页哦2.2.3关系(Relation)笛卡尔积D1D2Dn的任一子集称为定义在域D1,D2,Dn上的n元关系(Relation),可用R(D1,D2Dn)表示如上例D1D2笛卡尔积的子集可以构成教师关系T1,姓名性别李力男王平女刘伟男几点说明:几点说明:1.R为关系名,为关系名,n称为关系的目或度称为关系的目或度(Degree)。)。当n=1时,称为单元关系。当n=2时,称为二元关系。当n=n时,称为n元关系。如上例为二元关系,关系名为如上例为二元关系,关系名为T。第12页,此课件共107页哦2.关系中元组个数是关系的基数。如(李力,男),(王平,女),(刘伟,男)为三个元组,关系的基数为3。如果一个关系的元组个数是无限的,则称为无限关系;如果一个关系的元组个数是有限的,则称为有限关系。由于计算机存储系统的限制,我们一般不去处理无限关系,而只考虑有限关系。3.同样可以把关系看成一个二维表。其中,(1)表的框架由域Di(i=1,2,n)构成;(2)表的任意一行对应一个元组;(3)表的每一列来自同一域;(4)域可以相同,为了加以区别,每列起一个名字,称为属性,n目关系有n个属性,属性的名字唯一,属性的取值范围Di(i=1,2,n)称为值域(5)具有相同关系框架的关系成为同类关系,例如,有另一个关系T2,如表2.3所示:T1和T2是同类关系。姓名性别张雪女张兰女第13页,此课件共107页哦4.数学上关系是笛卡尔积的任意子集,但在实际应用中关系是笛卡尔积中所取的有意义的子集。例如在表2.1中选取一个子集构成如下关系,显然不符合实际情况姓名性别李力男李力女第14页,此课件共107页哦2.3关系的性质尽管关系与二维表格、传统的数据文件是非常类似的,但它们之间又有重要的区别。严格地说,关系是种规范化了的二维表中行的集合,为了使相应的数据操作简化,在关系模型中,对关系作了种种限制,关系具有如下特性:1.关系中不允许出现相同的元组关系中不允许出现相同的元组。2.关系中元组的顺序(即行序)是无关紧要关系中元组的顺序(即行序)是无关紧要的的,在一个关系中可以任意交换两行的次序。根据关系的这个性质,可以改变元组的顺序使其具有某种排序,然后按照顺序查询数据,可以提高查询速度。第15页,此课件共107页哦3.关系中属性的顺序是无关紧要的关系中属性的顺序是无关紧要的:即列的顺序可以任意交换。交换时,应连同属性名一起交换,否则将得到不同的关系。例如:关系T1作如下交换时,无任何影响性别姓名男李力女王平男刘伟第16页,此课件共107页哦而作如下交换时,不交换属性名,只交换属性列中的值,则得到不同的关系,如下表:姓名性别男李力女王平男刘伟第17页,此课件共107页哦4.同同一一属属性性名名下下的的各各个个属属性性值值必必须须来来自自同同一一个域个域:是同一类型的数据。5.关关系系中中各各个个属属性性必必须须有有不不同同的的名名字字:不同的属性可来自同一个域,即它们的分量可以取自同一个域。例如,有如下表中关系,职业与兼职是两个不同的属性,但它们取自同一个域职业教师,工人,辅导员。姓名职业兼职张强教师辅导员王丽工人教师刘宁教师辅导员第18页,此课件共107页哦6.关关系系中中每每一一分分量量必必须须是是不不可可分分的的数数据据项项,或者说所有属性值都是原子的,即是一个确定的值,而不是值的集合。属性值可以为空值,表示“未知”或“不可使用”,即不可“表中有表”。满足此条件的关系称为规范化关系,否则称为非规范化关系。例如,在表1中,籍贯含有省、市县两项,出现了“表中有表”的现象,则为非规范化关系,而把籍贯分成省、市县两列,将其规范化,如表2所示。表1表2姓名籍贯姓名省市县省市县张强吉林长春张强吉林长春王丽山西大同王丽山西大同第19页,此课件共107页哦2.4关系的码2.4.1候选码与主码能唯一标识关系中元组的属性或属性集,则称该属性或属性集为候选码(CandidateKey),也称候选键。如“学生关系”中的学号能唯一标识每一个学生,则属性学号是学生关系的候选码。在“选课关系”中,只有属性的组合“学号+课程号”才能唯一地区分每一条选课记录,则属性集“学号+课程号”是选课关系的候选键。第20页,此课件共107页哦下面给出候选码的形式化定义:设关系R有属性A1,A2,An,其属性集K=(Ai,Aj,Ak),当且仅当满足下列条件时,K被称为候选码:1.唯唯一一性性(Uniqueness):关系R的任意两个不同元组,其属性集K的值是不同的。2.最最小小性性(Minimally):组成关系键的属性集(Ai,Aj,Ak)中,任一属性都不能从属性集K中删掉,否则将破坏唯一性的性质例如:“学生关系”中的每个学生的学号是唯一的,“选课关系”中“学号+课程号”的组合也是唯一的。对于属性集“学号+课程号”去掉任一属性,都无法唯一标识选课记录。第21页,此课件共107页哦如果一个关系中有多个候选码,可以从中选择一个作为查询、插入或删除元组的操作 变 量,被 选 用 的 候 选 键 称 为 主 码(PrimaryKey),或称为主键、关键字。例如,假设在学生关系中没有重名的学生,则“学号”和“姓名”都可作为学生关系的候选键。如果选定“学号”作为数据操作的依据,则“学号”为主关系键。主码是关系模型中的一个重要概念。每个关系必需选择一个主码,选定以后,不能随意改变。每个关系必定有且仅有一个主码,因为关系的元组无重复,至少关系的所有属性的组合可作为主码。第22页,此课件共107页哦2.4.2主属性与非主属性主属性(PrimeAttribute):包含在主码中的的各属性称为主属性。非主属性(Non-PrimeAttribute):不包含在任何候选码中的属性称为非码属性。在最简单的情况下,一个候选码只包含一个属性,如学生关系中的“学号”,教师关系中的“教师号”。在最极终端的情况下,所有属性的组合是关系的候选码,这时称为全码(all-key)。第23页,此课件共107页哦下面是一个全码的例子:假设图书馆有借书关系TCS,分别有三个属性读者编号(T)、图书编号(C)和借阅时间(S)。在这种情况下,T,C,S三者之间是多对多关系,(T,C,S)三个属性的组合是关系TCS的候选码,称为全码,T,C,S都是主属性。TCST1C12005-4-1第24页,此课件共107页哦2.4.3外码(Foreignkey)如果关系R2的一个或一组属性X不是R2的主码,而是另一关系R1的主码,则该属性或属性组X称为关系R2的外码或外部关系键。并 称 关 系 R2为 参 照 关 系(referencingrelation),关 系 R1为 被 参 照 关 系(referencedrelation)。因此,因此,“学号学号”属性是选课关系的属性是选课关系的外码外码。学生关系为。学生关系为被参照关系被参照关系,选课关系为选课关系为参照关系参照关系。第25页,此课件共107页哦由外部关系键的定义可知,被参照关系的主码和参照关系的外码必须定义在同一个域上。如选课关系中的“学号”与学生关系的主码“学号”定义在同一个域上。第26页,此课件共107页哦关系模型及其定义5)关系模式(RelationSchema):关系的描述称作关系模式,包括关系名、关系中的属性名、属性向域的映象、属性间的数据依赖关系等,其形式化描述为R(U,D,dom,F),简记作R(U)或R(A1,A2,An)。R(U,D,DOM,F)关系名关系名属性名集合属性名集合域的集合域的集合属性向域属性向域的映象的映象属性间数据属性间数据的依赖关系的依赖关系第27页,此课件共107页哦属性向域的映象一般直接说明为属性的类型、长度等。某一时刻对应某个关系模式的内容(元组的集合)称作关系。关系模式是型,是稳定的,静态的。关系是某一时刻的值,是随时间不断变化的,是动态的。R(U,D,DOM,F)关系名关系名属性名集合属性名集合域的集合域的集合属性向域属性向域的映象的映象属性间数据属性间数据的依赖关系的依赖关系第28页,此课件共107页哦关系数据库(RelationDatabase)其型是关系模式的集合,即数据库描述其值是某一时刻关系的集合例如教学数据库中,共有五个关系,其关系模式分别学生(学号,姓名,性别,年龄,系别)教师(教师号,姓名,性别,年龄,系别)课程(课程号,课程名,课时)选课(学号,课程号,成绩)授课(教师号,课程号)第29页,此课件共107页哦在每个关系中,又有其相应的数据库的实例例如:与学生关系模式对应的数据库中的实例有如下6个元组:S1赵亦女17计算机S2钱尔男18信息S3孙珊女20信息S4李思男21自动化S5周武男19计算机S6吴丽女20自动化第30页,此课件共107页哦2.4.4关系模型的完整性为了维护数据库中数据与现实世界的一致性,对关系数据库的插入、删除和修改操作必须有一定的约束条件,这就是关系模型的三类完整性:实体完整性参照完整性用户定义的完整性1.实体完整性(EntityIntegrity)实体完整性是指主码的值不能为空或部分为空。关系模型中的一个元组对应一个实体,一个关系则对应一个实体集。例如,一条学生记录对应着一个学生,学生关系对应着学生的集合。第31页,此课件共107页哦现实世界中的实体是可区分的,即它们具有某种唯一性标识。与此相对应,关系模型中以主码来唯一标识元组。例如,学生关系中的属性“学号”可以唯一标识一个元组,也可以唯一标识学生实体。如果主码的值为空或部分为空,即主属性为空,则不符合主码的定义条件,不能唯一标识元组及与其相对应的实体。这就说明存在不可区分的实体,从而与现实世界中的实体是可以区分的事实相矛盾。因此主关系键的值不能为空或部分为空。例如,学生关系中的主关系键“学号”不能为空;选课关系中的主关系键“学号+课程号”不能部分为空,即“学号”和“课程号”两个属性都不能为空。第32页,此课件共107页哦2.参照完整性(Referentialintegrity)如果关系R2的外码X与关系R1的主码相符,则X的每个值或者等于R1中主码的某一个值,或者取空值。SNO学号SN姓名SEX性别AGE年龄DEPT所在系S1赵亦女17计算机S2钱尔男18信息S11王威男19DEPT所在系ADDR地址计算机1号楼信息1号楼自动化2号楼S(学生关系)(学生关系)D(系别关系)(系别关系)第33页,此课件共107页哦在下例中,如果按照参照完整性规则,选课关系中的外码“学号”可以取空值或者取被参照关系中已经存在的值。但由于“学号”是选课关系中主属性,根据实体完整性规则,两个属性都不能为空。所以选课关系中的外码“学号”中只能取被参照关系中已经存在的值。第34页,此课件共107页哦实体完整性和参照完整性是关系模型必须满足的完整性约束条件,系统都应该支持这两类完整性。除此之外,不同的关系数据库系统由于应用环境的不同,往往还需要一些特殊的约束条件,这就是用户定义完整性。第35页,此课件共107页哦3.用 户 定 义 完 整 性(User-definedIntegrity)用户定义完整性是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。例如,属性值根据实际需要,要具备一些约束条件,如选课关系中成绩不能为负数;某些数据的输入格式要有一些限制等。关系模型应该提供定义和检验这类完整性的机制,以便用统一的、系统的方法处理它们,而不要由应用程序承担这一功能。第36页,此课件共107页哦关系模型及其定义关系操作关系操作是集合操作,操作的对象及结果都是集合,是一次一集合(Set-at-a-time)的方式。而非关系型的数据操作方式是一次一记录(Record-at-a-time)。关系操作语言的种类关系数关系数据语言据语言关系代关系代数语言数语言关系演关系演算语言算语言具有关系代数和关系具有关系代数和关系演算双重特点的语言演算双重特点的语言元组关系演算语言元组关系演算语言域关系演算语言域关系演算语言ISBL(InformationSystemBaseLanguage)APLHAQBESQL第37页,此课件共107页哦关系模型与其他模型相比,最有特色的是它的数据库语言。这种语言灵活方便、表达能力和功能都很强。目前关系数据库所使用的语言一般都具有定义、查询、更新和控制一体化的特点,而查询是最主要的部分。所以说,关系数据库的核心部分是查询,故又称为查询语言,而查询的条件要使用关系运算表达式来表示。因此,关系运算是设计关系数据语言的基础。按表达查询的方法不同,关系运算可分为关系代数和关系演算两大类。2.6关系代数第38页,此课件共107页哦2.6.1关系代数的分类及其运算符关系代数是对关系进行集合代数运算,是基于关系代数的操作语言,称为关系代数语言,简称关系代数。它是由IBM在一个实验性的系统上实现的,称 为 ISBL(InformationSystemBaseLanguage)语言。ISBL的每个语句都类似于一个关系代数表达式。关系代数的运算对象是关系,运算结果也是关系,关系代数用到的运算符主要包括四类:集合运算符:(并),-(差),(交),X(广义笛卡尔积);专门的关系运算符:(选择),(投影),(连接),*(自然连接),(除);算术比较运算符:(大于),(大于等于),=,)和逻辑运算符()连接起来的逻辑表达式,结果为逻辑值“真”或“假”。选取运算实际上是从关系R中选取使逻辑表达式为真的元组,是从行的角度进行的运算。第50页,此课件共107页哦第51页,此课件共107页哦2.投影(Projection)投影运算也是单目运算,关系R上的投影是从R中选择出若干属性列,组成新的关系,即对关系在垂直方向进行的运算,从左到右按照指定的若干属性及顺序取出相应列,删去重复元组。记作:A(R)=tA|tR其中A为R中的属性列,为投影运算符。从其定义可看出,投影运算是从列的角度进行的运算,这正是选取运算和投影运算的区别所在。选取运算是从关系的水平方向上进行运算的,而投影运算则是从关系的垂直方向上进行的。第52页,此课件共107页哦投影运算可以改变关系的属性次序第53页,此课件共107页哦例4查询教师关系中有哪些系。SNO(SC)结果如右图所示由例4可以看出,投影后取消了某些属性列后,就可能出现重复行,应该取消这些完全相同的行。所以投影之后,不但减少了属性,元组也可能减少,新关系与原关系不相容。SNO950019500195001第54页,此课件共107页哦例2.8查询选项了1课程的学生号。SNO(CNO=1(SC)结果如右图所示。本例中选取运算和投影运算相结合,先在选课表中选取满足条件的元组,再于SNO属性上进行投影。SNO95001第55页,此课件共107页哦3.连接(Join)连接运算是二目运算,是从两个关系的笛卡尔积中选取满足连接条件的元组,组成新的关系。设关系R(A1,A2,An)及S(B1,B2,Bm),连接属性集X包含于A1,A2,An,及Y包含于B1,B2,Bm,X与Y中属性列数目相等,且相对应属性有共同的域。若Z=A1,A2An/X(/X:去掉X之外的属性)及W=B1,B2Bm/Y,则R及S可表示为R(Z,X),S(W,Y)关系R和S在连接属性X和Y上的连接,就是以RS笛卡尔积中,选取X属性列上的分量与Y属性列上的分量满足给定比较条件的那些元组,也就是在RS上选取在连接属性X,Y上满足条件的子集,组成新的关系。新关系的度为n+m。第56页,此课件共107页哦记作:RS=trts|trRtsStrXtsY为真XY其中,是连接运算符,为算术比较运算符,也称连接;XY为连接条件;为“=”时,称为等值连接;为“”时,称为大于连接。连接运算为非基本运算,可以用选取运算和广义笛卡尔积运算来表示:RS=xy(RS)第57页,此课件共107页哦在连接运算中,一种最常用的连接是自然连接。所谓自然连接就是在等值连接的情况下,当连接属性X与Y具有相同属性组时,把在连接结果中重复的属性列去掉。即如果R与S具有相同的属性组Y,则自然连接可记作:R*S=trts|trRtsStrY=tsY自然连接是在广义笛卡尔积RS中选出同名属性上符合相等条件元组,再进行投影,去掉重复的同名属性,组成新的关系。第58页,此课件共107页哦例2.9如图2.9(a)、(b)所示的两个关系R与S,(c)为R和S的大于连接(CD),(d)为R和S的等值连接(C=D),(e)为R和S的等值连接(R.B=S.B),(f)为R和S的自然连接。RS(a)(b)ABCBDa1b12b15a1b24b26a2b36b37a2b48b38第59页,此课件共107页哦大于连接(CD)等值连接(C=D)(c)(d)AR.BCS.BDAR.BCS.BDa2b36b15a2b36b26a2b48b15a2b48b38a2b48b26a2b48b37第60页,此课件共107页哦等值连接(R.B=S.B)自然连接(e)(f)图2.9连接运算举例AR.BCS.BDABCDa1b12b15a1b125a1b24b26a1b246a2b36b37a2b367a2b36b38a2b368第61页,此课件共107页哦结合上例,我们可以看出等值连接与自然连接的区别:1.等值连接中不要求相等属性值的属性名相同,而自然连接要求相等属性值的属性名必须相同,即两关系只有在同名属性才能进行自然连接。如上例R中的C列和S中的D列可进行等值连接,但因为属性名不同,不能进行自然连接。2.等值连接不将重复属性去掉,而自然连接去掉重复属性,也可以说,自然连接是去掉重复列的等值连接。如上例R中的B列和S中的B列进行等值连接时,结果有两个重复的属性列B,而进行自然连接时,结果只有一个属性列B。第62页,此课件共107页哦例2.10查询讲授数据库课程的教师姓名。TN(CN=数据库(C)*TNO,CNO(TC)*TNO,TN(T)或TN(TNO(CN=数据库(C)*TC)*TNO,TN(T)结果如右图所示。TN王平刘伟张兰第63页,此课件共107页哦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上投影的集合。记作:RS=trX|trRy(S)Yx其中,Yx为x在R中的象集,x=trX。除法运算为非基本运算,可以表示为:RS=x(R)x(x(R)SR)第64页,此课件共107页哦关系代数除(Division)象集:给定一个关系R(X,Y),X和Y为属性组。当tX=x时,x在R中的象集为:Yx=tY|tR,tX=x除:给定关系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上投影的集合。记作:RS=trX|trRy(S)Yx第65页,此课件共107页哦象集ABCDEa1b15d13a1b15d27a1b25d310a2b35d32a4b56d27a4b56d310a4b56d32a6b66d52(a1,b1)的象的象CDE5d135d27(a1,b2)的象的象CDE5d310(a4,b5)的象的象CDE6d276d3106d32XY第66页,此课件共107页哦除ABCDEa1b15d13a1b15d27a1b25d310a2b35d32a2b15d52a3b26d13a4b56d27a4b56d310a4b56d32a6b66d52XY(a4,b5)=CDEF6d27 fa6d310fb6d32 fcYR上分量值上分量值X 的象集的象集Yx包含包含S在在Y上的投影上的投影第67页,此课件共107页哦4.2关系代数关系除法运算的步骤:1)将被除关系属性分为象集属性和结果属性2)对象集属性进行投影目标数据集3)将被除关系分组:结果属性值一样的元组分为一组4)找出结果集第68页,此课件共107页哦除运算实例学号课号成绩S1C1AS1C2BS1C3BS2C1AS2C3BS3C1BS3C3BS4C1AS4C2AS5C2BS5C3BS5C1A课号课名C1数据结构C3操作系统S1C1AS1C2BS1C3BS2C1AS2C3BS3C1BS3C3BS4C1AS4C2AS5C2BS5C3BS5C1AC1数据结构C3操作系统S1C1AS1C2BS1C3BS2C1AS2C3BS3C1BS3C3BS4C1AS4C2AS5C2BS5C3BS5C1A=S3B选课选课必修课必修课选择了所有必修课表选择了所有必修课表中的课程的中的课程的学生的学号和成绩学生的学号和成绩第69页,此课件共107页哦小结关系数据库系统是目前使用最广泛的数据库系统,本书的重点也是讨论关系数据库系统。本章系统地介绍了关系数据库的一些基本概念,其中包括关系模型的数据结构、关系的完整性及其关系操作。第70页,此课件共107页哦关系演算是以数理逻辑中的谓词演算为基础的,通过谓词形式来表示查询表达式。根据谓词变元的不同,可将关系演算分为元组关系演算和域关系演算。2.7.1元组关系演算语言元组关系演算是以元组变量作为谓词变元的基本对象。元组关系演算语言的典型代表是E.F.Codd提出的ALPHA语言,这种语言虽然没有实际实现,但较有名气,INGRES关系数据库上使用的QUEL语言,就是在ALPHA语言的基础上研制的。这里主要介绍ALPHA语言和QUEL语言2.7关系演算第71页,此课件共107页哦2.7.1.1ALPHA语言ALPHA语言是以谓词公式来定义查询要求的。在谓词公式中存在客体变元,这里称为元组变量。元组变量是一个变量,其变化范围为某一个命名的关系。ALPHA语言的基本格式是:():操作符有GET,PUT,HOLD,UPDATE,DELETE,DROP等到种。工作空间是指内存空间,可以用一个字母表示,通常用W表示,也可以用别的字母表示。工作空间是用户与系统的通信区。目标表用于指定操作(如查询、更新等)出来的结果,它可以是关系名或属性名,一答操作语句可以同时对多个关系或多个属性进行操作。第72页,此课件共107页哦操作条件是用谓词公式表示的逻辑表达式,只有满足此条件的元组才能进行操作,这是一个可选项,缺省时表示无条件执行操作符规定的操作。除此之外,还可以在基本格式上加上排序要求,定额要求等。下面以教学数据库(图1.12)为例,说明ALPHA语言的使用。1.数据查询(1)简单查询例查询所有学生的数据。GETW(S)GET语句的作用是把数据库中的数据读入内存空间W,目标表为学生关系S,代表查询出来的结果,即所有的学生。冒号后面的操作条件缺省,表示无条件查询。第73页,此课件共107页哦例2.13查询所有被选修的课程号码。GETW(SC.CNO)目标表为选课关系SC中的属性CNO,代表所有被选修的课程号码,查询结果自动消去重复行。(2)条件查询由冒号后面的逻辑表达式给出查询条件,在表达式中可以使用如下三类运算符:比较运算符:,1000目标表为教师关系T中的两个属性SN和SAL组成的属性列表。(3)排序查询例2.15查询S3同学所选课程号及成绩,并按成绩降序排列。GETW(SC.CNO,SC.SCORE):SC.SNO=S3DOWNSC.SCOREDOWN表示降序,后面紧跟排序的属性名。升序排列时使用UP。第75页,此课件共107页哦(4)定额查询例2.15查询一名男教师的教师号和姓名。GETW(1)(T.TNO,T.TN):T.SEX=男所谓的定额查询就是通过在W后面的括号中加上定额数量,限定查询出元组的个数。这里(1)表示查询结果中男教师的个数,取出教师表中第一个男教师的教师号和姓名。排序和定额查询可以一起使用。例2.16查询一名男教师的教师号和姓名,并使他的年龄最小。GETW(1)(T.TNO,T.TN):T.SEX=男UPT.AGE此语句的执行过程为:先查询所有男教师的教师号和姓名,再按照年龄由小到大排序,然后找出第一位,也就是年龄最小的男教师。第76页,此课件共107页哦(5)带元组变量的查询所谓的元组关系演算就是以元组变量作为谓词变元的基本对象,在关系演算的查询操作时,可以在相应的关系上定义元组变量。元组变量代表关系中的元组,其取值是在所定义的关系范围内变化,所以也称作范围变量RangeVariable,一个关系可以设多个元组变量。例2.17查询S3同学所选课程号。RANGESCXGETW(X.CNO):X.SNO=S3使用RANGE来说明元组变量,X为关系SC上的元组变量。如果关系的名字很长,使用起来不方便,这时可以设一个名字较短的元组变量来代替关系名,简化关系名,使操作更加方便。第77页,此课件共107页哦(6)带存在量词的查询例2.18查询S3同学所选课程名。RANGESCXGETW(C.CN):X(C.CNO=X.CNOX.SNO=S3)注意:操作条件中使用量词时必须用元组变量。例2.19查询至少选修一门其课时数为80的课程的学生的姓名。RANGECCXSCSCXGETW(S.SN):SCX(SCX.SNO=S.SNOCX(CX.CNO=SCX.CNOCX.CT=80)第78页,此课件共107页哦此查询涉及三个关系,需要对两个关系(C和SC)作用存在量词,所以用了两个元组变量。此语句的执行过程为:先查询课时数为80的课程号,再根据找到的课程号在关系SC中查询其对应的学号,然后根据为些学号在关系S中找到对应的学生姓名。例2.20查询选修全部课程的学生姓名。RANGECCXSCSCXGETW(S.SN):CXSCX(XSC.SNO=S.SNOCX.CNO=SCX.CNO)第79页,此课件共107页哦(7)库函数查询库函数也称集函数。用户在使用查询语言时,经常要作一些简单的运算。例如要统计某个关系中符合某一条件的元组数,或某些元组在某个属性上分量的和、平均值等等。在关系数据库语言中提供了有关这类运算的标准函数,增强了基本检索能力。常用的库函数下表所示函数名称功能AVG按列计算平均值TOTAL按列计算值的总和MAX求一列中的最大值MIN求一列中的最小值COUNT按列值计算元组个数第80页,此课件共107页哦例2.21求学号为S1学生的平均分。GETW(AVG(SC.SCORE):S.SNO=S1例2.22求学校共有多少个系GETW(COUNT(S.DEPT)COUNT函数自动消去重复行,可计算字段“DEPT“不同值的数目。2.数据更新更新操作包括修改、插入和删除。(1)修改修改操作使用UPDATE语句实现,具体操作分为以下三步:第81页,此课件共107页哦读数据:使用HOLD语句将要修改的元组从数据库中读到工作空间中;修改:利用宿主语言修改工作空间中元组的属性;送回:使用UPDATE语句将修改后的元组送回数据库中。这里HOLD语句是带上并发控制的GET语句。例2.23把刘伟教师转到信息系。HOLDW(T.DEPT):T.TN=刘伟MOVE信息TOW.DEPTUPDATEW在ALPHA语言中,不允许修改关系的主码,例如不能使用UPDATE语句修改教师表T中的教师号。如果要修改主码,应该先使用删除操作删除该元组,再插入一条具有新主码值的元组。第82页,此课件共107页哦(2)插入插入操作使用PUT语句实现,具体操作分为以下两步:建立新元组:利用宿主语言在工作空间中建立新元组;写数据:使用PUT语句将元组写入到指定的关系中。例2.24在SC表中插入一条选课记录(S6,C1,85)。MOVES6TOW.SNOMOVEC1TOW.CNOMOVE85TOW.SCOREPUTW(SC)第83页,此课件共107页哦PUT语句的作用是把工作空间W中的数据写到数据库中,此例即把已经在工作空间建立的一条选课记录写入到选课关系SC中。注意:PUT语句只能对一个关系进行操作,在插入操作时,拒绝接受主码相同的元组。(3)删除ALPHA语言中的删除操作不但可以删除关系中的一些元组,还可以删除一个关系。删除操作使用DELETE语句实现,具体操作分为以下两步:读数据:使用HOLD语句将要删除的元组从数据库中读到工作空间中;删除:使用DELETE语句删除该元组。第84页,此课件共107页哦例2.25删除学号为S6的学生的信息。HOLDW(S):S.SNO=S6DELETEW例2.26删除全部学生的信息。HOLDW(S)DELETEW2.7.1.2QUEL语言INGRES是加利福尼亚大学研制的关系数据库管理系统,QUEL语言是INGRES系统的查询语言,它以ALHPA语言为基础,具有较为完善的数据定义、数据查询、数据更新、数据控制等功能。QUEL语言既可以作为独立的语言进行交互式操作,也可以作为子语言嵌入到主语言中去。第85页,此课件共107页哦1数据定义QUEL语言可以使用CREATE语句定义一个新关系,CREATE语句的一般格式为:CREATE(,)例2.27定义学生关系SCREATES(SNO=C8,SN=C20,AGE=I3,SEX=C2,DEPT=C20)关系定义后可以由定义者撤消,撤消关系使用语句DESTROY例 如,撤 消 学 生 关 系 S可 以 写 成:DESTROYS。第86页,此课件共107页哦2数据查询查询语句的一般格式为:RANGEOFt1ISR1RANGEOFt2ISR2RANGEOFtkISRkRETRIEVE(目标表)WHERE第87页,此课件共107页哦其中t1、t2、tk分别是定义在关系R1、R2、Rk上的元组变量。目标表为查询的目标属性。查询条件是一个逻辑表达式,在表达式中可以使用如下三类运算符:比较运算符:(大于),(大于等于),1000例2.29查询讲授C5课程的教师的姓名。RANGEOFTXISTRANGEOFTCXISTCRETRIEVE(TX.TN)WHERETX.TNO=TCX.TNOANDTCX.CNO=C5第89页,此课件共107页哦3数据更新(1)修改修改操作使用REPLACE语句实现。例2.30把刘伟教师转到信息系。RANGEOFTXISTREPLACE(TX.DEPT=信息)WHERETX.TN=刘伟(2)插入插入操作使用APPEND语句实现。例2.31在SC表中插入一条选课记录(S6,C2,80)。APPEND TO SC(SNO=S6,CNO=C2,SCORE=80)第90页,此课件共107页哦(3)删除删除操作使用DELETE语句实现。例2.32删除学号为S6的学生的信息。RANGEOFSXISSDELETESXWHERESX.SNO=S62.7.2域关系演算语言QBE域关系演算是关系演算的另一种形式。域关系演算是以元组变量的分量即域变量作为谓词变元的基本对象。域关系演算语言的典型代表是1975年由IBM公 司 约 克 城 高 级 研 究 试 验 室 的M.M.Zloof提出的QBE语言,该语言于1978