第03章关系运算和完整性约束优秀课件.ppt
第03章关系运算和完整性约束第1页,本讲稿共58页第三章概述1在用户看来,一个关系就是一张二维表2关系模型可以理解为二维表格的定义3关关系系模模型型的的数数据据操操作作:主要有选择(Select)、投影(Project)、连接(Join)、除(Division)、并(Union)、交(Intersection)、差(Difference),查询(Query),增加(Insert)、删除(Delete)、修改(Update)等更新操作。3关关系系操操作作的的表表示示方方式式:代数方式、逻辑方式以及结合两者特点的方式。第2页,本讲稿共58页第三章概述4、关系语言可以分三类关系代数语言例如ISBL元组关系演算语言例如ALPHA,QUEL关系数据语言关系演算语言域关系演算语言例如QBE具有关系代数和关系演算双重特点的语言 例如SQL5、完整性约束:、完整性约束:关系模型允许定义三类完整性约束,实体完整性;参照完整性;用户定义的完整性。返回第3页,本讲稿共58页3.1 关系的定义 定定义义3.1给定一组集合D1,D2,Dn,且这些集合可以相同,定义D1,D2,Dn的笛卡尔积(CartesianProduct)为:D1D2Dn=(d1,d2,dn)|diDi,i=l,2,n其中的每一个元素(d1,d2,dn)叫做一个n元组(n-tuple),元素中第i个值di叫做第i个分量。第4页,本讲稿共58页3.1 关系的定义 注意:关系和笛卡尔(数学中)的区别:关系是笛卡尔积的有限子集。无限关系在数据库系统中是无意义的。由于笛卡尔积不满足交换律,即(d1,d2,dn)(d1,d2,dn)但关系满足交换律,即(d1,d2,dn)=(d1,d2,dn)第5页,本讲稿共58页3.1 关系的定义 定义定义3.2笛卡尔积D1D2Dn的任一子集称为D1,D2,Dn上的一个关系。集合D1,D2,Dn是关系中元组的取值范围,称为关系的域(Domain),n称为关系的度(Degree)。度为n的关系称为n元关系。例如n=1(n=2)的关系称为一元(二元)关系。返回第6页,本讲稿共58页关系的性质1.每一列中的值是同类型的数据,都来自同一个域。不同的列可以有相同的域,每一列称为一个属性,用属性名标识。2.元组中的每个分量是不可分的数据项3.关系中的各个元组是不同的,即不允许有重复的元组。见下页例子说明。4.元组的次序是无关紧要的,列的次序也是无关的。3.2 关系的性质 第7页,本讲稿共58页表3-2职工信息表姓名职业兼职李宏行政辅导员张敏教师辅导员刘丽工人行政表3-3教师关系表(a)表3-4教师关系表(b)表3-5教师关系表(c)姓名性别姓名性别性别姓名王平男李丽女男王平李丽女王平男女李丽返回第8页,本讲稿共58页3.3 关系的码1.关系的码码是关系的一个重要概念,关系数据库要求关系中的每一个元组具有唯一性唯一性。2.关键码关键码:在关系模式中,必定存在一个属性(属性组)可以唯一确定关系中别的属性的值。这个属性(属性组)就是关系模式的关键码。3.关键码根据细节不同通常分为如下几类:超码(超码(SuperKey)在关系中能唯一标识元组的属性集称为关系的超码。候选码(候选码(CandidateKey)不包含多余属性的超码称为候选码。对于某个关系,可能存在多个候选码。第9页,本讲稿共58页3.3 关系的码4主码主码(PrimaryKey)从候选码中任选一个作为现行关键码,则该关键码称为主码。一个关系的主码只能有一个,主码一旦确定通常不变。5外码(ForeignKey)不是当前关系的候选码,却是另一个关系的候选码。关系之间的连接通常利用外码实现。返回第10页,本讲稿共58页表1学生表格学号姓名姓名兼职返回表2课程表课程号课程名学分表3选课表格学号课程号成绩第11页,本讲稿共58页3.4 数据的完整性关系模式关系模式:对一类实体特征的结构性描述,即对关系的结构性描述,该描述一般包括关系名、属性名、属性域的类型和长度,属性之间固有的依赖联系等。若U=A1,A2,An为关系R的属性集,则关系模式简记为R(U)或R(A1,A2,An)关系模式和关系的区别和联系:关系模式和关系的区别和联系:关系模式是表格的定义,关系是一个具体的表格。关系数据库也有型和值之分第12页,本讲稿共58页3.4 完整性规则在数据库系统中,为了维护数据库中数据与现实世界的一致性,计算机和现实世界的数据之间必须遵循一定的约束规则,关系模型定义三类完整性:实体完整性,参照完整性和用户定义完整性。实体完整性规则(EntityIntegrity):关系中每一个元组的主码(主键)属性不能重复,并且不能取空值。空值:当前“不知道”的值,它既不是0也不是空字符,用NULL表示。第13页,本讲稿共58页1.参照完整性规则参照完整性规则(ReferenceIntegrity):设属性组A是关系R的外键且A又是关系S的主键,则对于R中的每一个元组在属性A上的值必须为:空值或者等于S中某一个元组的主键值。2.谓参照,就是关系R与另一关系S之间的联系,这种联系是通过其相同属性来建立的。参照完整性规则给出了关系之间建立联系的约束条件。3.实体完整性和参照完整性都是关系模型必须满足的完整性约束条件,这些约束条件由RDBMS自动支持。4.在实践中,能否取空值取决于生活的理解3.4 完整性规则第14页,本讲稿共58页3、用户定义的完整性规则用户定义的完整性规则(User-defined Integrity):用户根据具体应用而对数据附加的约束条件。说明:现在的商品化RDBMS提供了定义和检查这类完整性约束的机制。3.4 完整性规则第15页,本讲稿共58页3.4 完整性约束类型1.完整性控制是围绕完整性约束条件进行的,根据完整性约束条件的作用对象和状态,可将完整性约束分为以下类型:2.静态属性约束:对属性取值的说明。主要包括:数据类型、格式、取值范围、空值的约束3.静态元组约束:规定组成一个元组的各列的值之间的约束关系。4.静态关系约束:关系的各元组之间或者若干关系之间常常存在各种联系或者约束。实体完整性、参照完整性、函数依赖和统计约束。第16页,本讲稿共58页3.4 完整性约束类型5.动态属性约束:修改定义或者修改属性时应满足的约束条件。6.动态元组约束:修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。7.动态关系约束:关系变化前后状态上的限制条件。例如:事务一致性约束条件。第17页,本讲稿共58页3.4 完整性控制机制 一个完善的完整性控制机制应该具有以下三个方面的功能:定义功能:定义功能:为用户提供定义完整性约束条件的命令或工具。检查功能:检查功能:能够自动检查用户发出的操作请求是否违背了完整性约束条件。违约处理:违约处理:当发现用户的操作请求违背了完整性约束条件时,能够自动采取一定的措施确保数据的完整性不遭破坏。第18页,本讲稿共58页3.4 完整性控制机制由于实体完整性的定义和控制比较容易实现,因此,下面主要讨论实现参照完整性需要考虑的几个问题。1.外码空值问题2.被参照关系中删除元组问题3.在参照关系中插入元组问题4.元组中主码的修改问题综上所述,DBMS的参照完整性机制,在提供定义主码和外码机制的同时,还需要提供不同的删除、插入和修改策略供用户选择。至于选择哪种策略,一般根据实际需求确定。返回第19页,本讲稿共58页3.5 关系代数3.5.1 传统的集合运算3.5.2 专门的关系运算 返回第20页,本讲稿共58页集合运算符-并差交广义笛卡尔积比较运算符 大于大于等于小于小于等于等于不等于运算符含义运算符含义关系代数运算符关系代数运算符第21页,本讲稿共58页1 1、并运算:、并运算:关系R和S的并并是一个新的关系,记为RS=t|tRtS,它由属于R或属于S的所有元组构成。2 2、差运算、差运算:关系R和S的差差是一个新的关系,记为R-S=t|tRtS,它由属于R但不属于S的元组构成。3 3、交运算、交运算:关系R和S的交交是一个新的关系,记为RS=t|tRtS,它由属于R同时也属于S的元组构成。3.5.1 传统的集合运算第22页,本讲稿共58页并ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1a1b2c2a1b3c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSRS第23页,本讲稿共58页差ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1ABCa1b2c2a1b3c2a2b2c1RSR-S第24页,本讲稿共58页交 ABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR S第25页,本讲稿共58页5、广义笛卡尔积、广义笛卡尔积:设R为m元关系,S为n元关系,则R与S的广义笛卡尔积RS是一个(m+n)元关系,其中的每个元组的前m个分量是R中的一个元组,后n个分量是S中的一个元组 RS=(a1,a2,am,b1,b2,bn)|(a1,a2,am)R(b1,b2,bn)S RS=trts|trRtsS说明:(1)若R有k1个元组,S为k2元关系,则RS有(k1k2)个元组,即广义笛卡尔积 (2)并、差、笛卡儿积、投影和选择常称为关系代数的五个基本元组(操作),其余则成为关系代数的组合运算。返回3.5.1 传统的集合运算第26页,本讲稿共58页广义笛卡尔积 ABCa1 b1 c1a1 b2 c2a2 b2 c1ABCa1b1c1a1b1c1a1b1c1a1b2c2a1b2c2a1b2c2a2b2c1a2b2c1a2b2c1ABCa1 b2 c2a1 b3 c2a2 b2 c1RSR SABCa1b2c2a1b3c2a2b2c1a1b2c2a1b3c2a2b2c1a1b2c2a1b3c2a2b2c1第27页,本讲稿共58页3.5.2 专门的关系运算选择运算选择运算(Select):从关系R中选取满足给定条件的元组构成一个新的关系。选择运算记作:F(R)=t|tRF(t)其中是选择运算符,F是限定条件的布尔表达式。由逻辑运算符、和等连接各个算术表达式组成。算术表达式的基本形式为XY,其中X,Y可以是属性名,常量或简单函数,算术比较运算符,,。第28页,本讲稿共58页选择o选择运算是从行的角度进行的运算 o举例设有一个学生-课程数据库,包括学生关系Student、课程关系Course和选修关系SC。第29页,本讲稿共58页学学号号Sno姓姓名名Sname性性别别Ssex年年龄龄Sage所所在在系系Sdept11001李勇李勇男男20CS11002刘晨刘晨女女19IS11003王敏王敏女女18MA11004张立张立男男19IS(a)Student第30页,本讲稿共58页(b)Course课程号课程号课程名课程名先行课先行课学分学分CnoCnameCpnoCcredit1数据库数据库542数学数学23信息系统信息系统144操作系统操作系统635数据结构数据结构746数据处理数据处理27PASCAL语言语言64第31页,本讲稿共58页(c)SC学学号号课课程程号号成成绩绩SnoCnoGrade1100119211001285110013881100229011002380第32页,本讲稿共58页选择例 查询信息系(IS系)全体学生 Sdept=IS(Student)或 5=IS(Student)结果:SnoSnameSsexSageSdept11002刘晨刘晨女女19IS11004张立张立男男19IS第33页,本讲稿共58页选择例 查询年龄小于20岁的学生 Sage 20(Student)或 4 20(Student)结果:SnoSnameSsexSageSdept11002刘晨刘晨女女19IS11003王敏王敏女女18MA11004张立张立男男19IS第34页,本讲稿共58页投影运算投影运算(Projection):从一个关系R中选取所需要的列组成一个新关系,投影运算记为:A(R)=(R)=tA|tR 其中是投影运算符,A为关系R属性的子集,tA为R中元组相应于属性集A的分量,i1,i2,ik表示A中属性在关系R中的顺序号。3.5.2 专门的关系运算第35页,本讲稿共58页投影运算(Projection):投影操作主要是从列的角度进行运算但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)第36页,本讲稿共58页例3 查询学生的姓名和所在系即求Student关系上学生姓名和所在系两个属性上的投影 Sname,Sdept(Student)或 2,5(Student)结果:SnameSdept李勇李勇CS刘晨刘晨IS王敏王敏MA张立张立IS第37页,本讲稿共58页投影例 查询学生关系Student中都有哪些系 Sdept(Student)结果:SdeptCSISMA第38页,本讲稿共58页3.5.2 专门的关系运算连接运算连接运算(Join):从二个关系的广义笛卡尔积中选取满足一定连接条件的元组,记为:RS=R.AS.B(RS)R.AS.B 其中是连接运算符,A、B分别为R、S上度数相等且可比较的属性集,是算术比较符,R.AS.B是连接条件。等值连接等值连接:为=时的情况,而其余的连接统称为非等值连接非等值连接。第39页,本讲稿共58页自然连接自然连接(Natural join):两个关系进行连接比较的属性列完全相同的等值连接,且结果关系中没有重复的属性。即若R和S具有相同的属性组A,则自然连接可记作:其中集合B是关系R和S属性的并集。自然连接是同时从行和列的角度进行运算,是最有用的等值连接。以后若无特殊说明,其连接均指自然连接。RS=B(R.A=S.A(RS)3.5.2 专门的关系运算第40页,本讲稿共58页连接一般的连接操作是从行的角度进行运算。自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。ABRS第41页,本讲稿共58页连接o举例 例 ABCa1b15a1b26a2b38a2b412BEb13b27b310b32b52RS第42页,本讲稿共58页连接 R S AR.BCS.BEa1b15b27a1b15b310a1b26b27a1b26b310a2b38b310 CE第43页,本讲稿共58页连接 等值连接 R S R.B=S.B AR.BCS.BEa1b15b13a1b26b27a2b38b310a2b38b32第44页,本讲稿共58页连接 自然连接 R S ABCEa1b153a1b267a2b3810a2b382第45页,本讲稿共58页外连接o两个表格做自然连接的时候,如果不存在等值的公共属性,那么元祖被丢弃了o如果把舍弃的元祖也包括在表格内,而把其他属性上填写空值,成为外连接。o只保留左边表格的元祖-左外连接o只保留右边表格的元祖-右外连接第46页,本讲稿共58页3.5.2 专门的关系运算除法运算除法运算(Division):设关系R和S的度数分别为n和m(nm0),那么RS是一个度数为(nm)的关系,它满足下列条件:RS中的每个元组t与S中每个元组u所组成的元组(t,u)必在关系R中。为叙述方便起见,我们假设S的属性为R中的后m个属性,则RS的具体计算过程如下:1、T1,2,n-m(R)2、W(TS)R(即计算TS中但不在R中的元组)3、V1,2,n-m(W)4、RSTV第47页,本讲稿共58页4)象集Z 给定一个关系R(X,Z),X和Z为属性组。当tX=x时,x在R中的象集(Images Set)为:Zx=tZ|t R,tX=x 它表示R中属性组X上值为x的诸元组在Z上分量的集合。第48页,本讲稿共58页象集ZABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1R在在关关系系R中中,A可可以以取取四四个个值值a1,a2,a3,a4a1的象集为的象集为(b1,c2),(b2,c3),(b2,c1)a2的象集为的象集为(b3,c7),(b2,c3)a3的象集为的象集为(b4,c6)a4的象集为的象集为(b6,c6)第49页,本讲稿共58页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=tr X|tr RY(S)Yx Yx:x在R中的象集,x=trX第50页,本讲稿共58页除o2)除操作是同时从行和列角度进行运算o3)举例RS第51页,本讲稿共58页除ABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1BCDb1c2d1b2c1d1b2c3d2RSAa1RS第52页,本讲稿共58页分析:在关系在关系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)属性组上的投影属性组上的投影所以 RS=a1 第53页,本讲稿共58页以学生以学生-课程数据库为例课程数据库为例 例7 查询至少选修1号课程和3号课程的学生号码首先建立一个临时关系K:然后求:Sno.Cno(SC)K Cno 1 3第54页,本讲稿共58页o Sno.Cno(SC)11001象集1,2,3 11002象集2,3 Cno(K)=1,3 于是:Sno.Cno(SC)K=11001SnoCno110011110012110013110022110023第55页,本讲稿共58页3.5.2 专门的关系运算等价运算等价运算在关系代数运算中,两个关系代数表达式等价是指用同样的关系实例代入这两个表达式的相应关系时所得到的结果相同。换言之,若两个表达式E1、E2的运算结果都有相同的属性集和相同的元组集,就称这两个关系代数表达式等价。记为E1E2返回第56页,本讲稿共58页综合举例例 查询选修了一门其直接先行课为5号课程的课程的学生姓名。Sname(Cpno=5(Course SC Student)Sname(Cpno=5(Course)SC Sno,Sname(Student)Sname(Sno(Cpno=5(Course)SC)Sno,Sname(Student)第57页,本讲稿共58页综合举例例 查询选修了全部课程的学生号码和姓名。Sno,Cno(SC)Cno(Course)Sno,Sname(Student)第58页,本讲稿共58页