资源描述
2.1关系数据库的基本概念关系数据库的基本概念2.2关系模型及其描述关系模型及其描述2.3关系代数关系代数2.4关系演算关系演算第二章 关系数据关系数据库库本章小结本章小结2.1关系数据库的基本概念关系数据库的基本概念 1、关系、关系及其性质及其性质 (1)域域 定义定义2.1:域是一组具有相同数据类型的值的集合。域是一组具有相同数据类型的值的集合。例:例:在关系中用域来表示属性的取值范围在关系中用域来表示属性的取值范围在关系中用域来表示属性的取值范围在关系中用域来表示属性的取值范围 域中所包含的值的个数称域中所包含的值的个数称域中所包含的值的个数称域中所包含的值的个数称域的基数域的基数域的基数域的基数(用用用用mm表示表示表示表示)例:例:例:例:D D1 1=A,2,3,Q,K M M1 1=13=13D D2 2=数据库原理,面向对象数据库技术数据库原理,面向对象数据库技术MM2 2=2=22.1关系数据库的基本概念关系数据库的基本概念 (2)笛卡尔积笛卡尔积 定义定义2.2:给定一组域给定一组域 D1,Dn (可有相同的域可有相同的域)。其笛卡尔积为:。其笛卡尔积为:D1D2Dn=(d1,d2,dn)|di Di,i=1,2,nn元组元组di为分量为分量例:例:笛卡儿积也是一个集合笛卡儿积也是一个集合笛卡儿积也是一个集合笛卡儿积也是一个集合 其中每一个元素其中每一个元素其中每一个元素其中每一个元素(d1(d1(d1(d1,d2d2d2d2,dn)dn)dn)dn)叫作一个叫作一个叫作一个叫作一个n n n n元组元组元组元组(n-Tuple),(n-Tuple),(n-Tuple),(n-Tuple),或简称为元组。元素中的每一个值或简称为元组。元素中的每一个值或简称为元组。元素中的每一个值或简称为元组。元素中的每一个值didididi叫作一个分量(叫作一个分量(叫作一个分量(叫作一个分量(ComponentComponentComponentComponent)。)。)。)。若若Di(i1,2,n)为有限集,其基数()为有限集,其基数(Cardinalnumber)为为mi(i1,2,n),则),则D1D2Dn的基数为:的基数为:m=mii=1n定义定义2.3 D D1 1DD2 2DDn n的有意义的子集称为在域的有意义的子集称为在域D D1 1,D D2 2,D,Dn n上的关系,上的关系,记为记为 R(DR(D1 1,D,D2 2,D,Dn n)。其中:其中:R R为关系的名;为关系的名;n n为关系的为关系的度度(目);(目);r rR R 表示表示 r r是是 RR中的元组。中的元组。子集元素是关系中的元组;子集元素是关系中的元组;关系中的元组个数是关系的关系中的元组个数是关系的基数基数;同样可以把关系看作是一个二维表:同样可以把关系看作是一个二维表:每一行对应一个元组;每一行对应一个元组;表的每一列对应一个域,每个域起一个名字表的每一列对应一个域,每个域起一个名字称为属性称为属性;2.1关系数据库的基本概念关系数据库的基本概念 (3)关系关系例例例:设例:设 D1=男人集合男人集合(MAN)=王强、李东、张兵王强、李东、张兵 D2=女人集合女人集合(WOMAN)=赵赵红、吴芳红、吴芳 D3=儿童集合儿童集合(CHILD)=王一、李一、李二王一、李一、李二(1)求上面三个集合的笛卡儿积)求上面三个集合的笛卡儿积MWC王强王强赵赵红红王一王一王强王强赵赵红红李一李一王强王强赵赵红红李二李二王强王强吴芳吴芳王一王一王强王强吴芳吴芳李一李一王强王强吴芳吴芳李二李二李东李东赵赵红红王一王一李东李东赵赵红红李一李一李东李东赵赵红红李二李二李东李东吴芳吴芳王一王一李东李东吴芳吴芳李一李一李东李东吴芳吴芳李二李二张兵张兵赵赵红红王一王一张兵张兵赵赵红红李一李一张兵张兵赵赵红红李二李二张兵张兵吴芳吴芳王一王一张兵张兵吴芳吴芳李一李一张兵张兵吴芳吴芳李二李二李二李二李二李二吴吴吴吴芳芳芳芳李东李东李东李东李一李一李一李一吴吴吴吴芳芳芳芳李东李东李东李东王一王一王一王一赵赵赵赵红红红红王王王王强强强强CHILDCHILDWOMANWOMANMANMANFamilyFamily(2)构造一个家庭关系,可表示为:)构造一个家庭关系,可表示为:FAMILY(MAN,WOMAN,CHILD)2.1关系数据库的基本概念关系数据库的基本概念若关系若关系R整个属性的集合是整个属性的集合是R的候选码,则该候选码为全码。的候选码,则该候选码为全码。一个关系有多个候选码时,一个关系有多个候选码时,选定其中的一个作为主码。选定其中的一个作为主码。关系关系R的某一属性组的某一属性组X不是不是R的码,但是是的码,但是是是其它某一关系的码,称是其它某一关系的码,称X为为R的外码。的外码。主码主码(primary key)(primary key)外码外码(foreign key)(foreign key)全码全码(all key)(all key)值能唯一标识一个元组的属性组,且不含多余属性,值能唯一标识一个元组的属性组,且不含多余属性,称该属性组为候选码。称该属性组为候选码。候选码候选码(candidate key)(candidate key)(4)关系中常用术语关系中常用术语候选码候选码主码主码外码外码全码全码2.1关系数据库的基本概念关系数据库的基本概念2.1关系数据库的基本概念关系数据库的基本概念nS(Sno,Cardno,Dno,Sname,Sage,)nD(Dno,Dname,Location)候选码候选码主码主码主码主码外码外码9801 0101959801 0202809802 0101889802 0303 9298030202Sno Cno Grade80PUR(Cno,Pno,Sno)全码全码参照关系参照关系被参照关系被参照关系2.1关系数据库的基本概念关系数据库的基本概念 (5)关系的性质关系的性质 每列的值为同一类型。每列的值为同一类型。每列具有不同的属性名每列具有不同的属性名(可同域可同域)任意两元组不能完全相同。任意两元组不能完全相同。行的次序可以互换。行的次序可以互换。列的次序可以互换。列的次序可以互换。分量值是原子的。分量值是原子的。+5学号学号姓名姓名年龄年龄、网虫、网虫不允许不允许元组元组分量值分量值属性名属性名n关系的类型关系的类型:基本关系(基表)基本关系(基表)查询表查询表 视图表视图表2.1关系数据库的基本概念关系数据库的基本概念 2 2、关系模式与关系数据库关系模式与关系数据库 定义定义2.4:关系的描述称关系模式,其表示为关系的描述称关系模式,其表示为:R(U,D,Dom,F)n关系模式关系模式可简记为关系的属性名表。简记为关系的属性名表。R(U)=R(A1,A2,A3,.An)例:学生(学号,姓名,总成绩)例:学生(学号,姓名,总成绩)域名集域名集属性名集属性名集属性间的依属性间的依赖关系集赖关系集属性向域的映像集属性向域的映像集关系模式就是关系的框架(表框架)关系模式就是关系的框架(表框架)它是对关系结构的描述它是对关系结构的描述n在关系模型中,实体以及实体间的联系都是用关系来表示。在在关系模型中,实体以及实体间的联系都是用关系来表示。在一个给定的现实世界领域中,相应于所有实体及实体之间的联一个给定的现实世界领域中,相应于所有实体及实体之间的联系的系的关系的集合关系的集合构成一个关系数据库。构成一个关系数据库。n关系数据库也有型和值之分。关系数据库的型也称为关系数据库也有型和值之分。关系数据库的型也称为关系数据关系数据库模式库模式,是对关系数据库的描述,是关系模式的集合。关系数,是对关系数据库的描述,是关系模式的集合。关系数据库的值也称为据库的值也称为关系数据库关系数据库,是关系的集合。关系数据库模式,是关系的集合。关系数据库模式与关系数据库通常统称为关系数据库。与关系数据库通常统称为关系数据库。n关系数据库关系数据库 2.1 关系数据库的基本概念关系数据库的基本概念2.2 关系模型及其描述关系模型及其描述1.1.关系模型的特点及组成关系模型的特点及组成 关系模型的特点:关系模型的特点:n结构简单,表达力强结构简单,表达力强 n语言的一体化语言的一体化 n非过程化的操作非过程化的操作 n坚实的数学基础坚实的数学基础 n操作效率较低操作效率较低 关系模型的组成:关系模型的组成:n关系数据关系数据结结构构n关系数据操作关系数据操作n关系完整性约束关系完整性约束 2.关系模型的数据操作关系模型的数据操作(1)数据查询数据查询(2)数据插入数据插入(3)数据删除数据删除(4)数据修改数据修改 3.3.关系的完整性关系的完整性n三类完整性约束:三类完整性约束:n实体完整性实体完整性参照完整性参照完整性用户定义的完整性用户定义的完整性n说明:说明:实体完整性规则是对基本关实体完整性规则是对基本关系的约束和限定。系的约束和限定。实体具有唯一性标识实体具有唯一性标识主码。主码。主码属性不能取空值。主码属性不能取空值。2.2 关系模型及其描述关系模型及其描述 (1)(1)实体完整性实体完整性n规则规则2.1 实体完整性规则实体完整性规则:n若属性若属性A是基本关系是基本关系R的主码的主码属性,则属性属性,则属性A不能取空值。不能取空值。不变性不变性由关系系统自动支持由关系系统自动支持是应用领域需要遵循的约束条件是应用领域需要遵循的约束条件数据完整性控制数据完整性控制过程?过程?2.2 关系模型及其描述关系模型及其描述(2)(2)参照完整性参照完整性n引用关系:引用关系:v关系中的某属性的值需要参照另一关系的属性来取值。关系中的某属性的值需要参照另一关系的属性来取值。例例1:学生:学生(学号学号,姓名,性别,专业号,年龄,姓名,性别,专业号,年龄)专业专业(专业号专业号,专业名,专业名)例例2:学生学生(学号学号,姓名,性别,专业号,年龄,班长,姓名,性别,专业号,年龄,班长)引用引用引用引用 2.2 关系模型及其描述关系模型及其描述 定义定义2.5:设:基本关系设:基本关系R、S(可为同一关系可为同一关系)。若若F是是R的一个的一个(组组)属性,但不是属性,但不是R的码。的码。如果如果F与与S的主码的主码 K相对应相对应,则称,则称F是是R的外码。的外码。并称并称R为参照关系,为参照关系,S为被参照关系(目标关系)。为被参照关系(目标关系)。说明:说明:S的主码的主码K和和R的外码的外码F必须定义在同一个必须定义在同一个(或一组或一组)域上。域上。例例1:学生:学生(学号学号,姓名,性别,姓名,性别,专业号专业号,年龄,年龄)专业专业(专业号专业号,专业名,专业名)引用引用被参照关系被参照关系参照关系参照关系外码外码 参照完整性规则参照完整性规则定义了外码与主码之间的引用规则。定义了外码与主码之间的引用规则。2.2 关系模型及其描述关系模型及其描述 规则规则2.2 参照完整性规则参照完整性规则若属性若属性(组组)F是是R的外码它与的外码它与S的主码的主码K相对应,则对于相对应,则对于R中每个中每个元组在元组在F上的值必须为:上的值必须为:或者取空值或者取空值(F的每个属性值均为空值的每个属性值均为空值);或者等于或者等于S中某个元组的主码值。中某个元组的主码值。例例1:学生学生(学号学号,姓名,性别,姓名,性别,专业号专业号,年龄,年龄)关系中每个元组的专业号取值:关系中每个元组的专业号取值:空值空值(未给该学生分配专业未给该学生分配专业);非空值非空值(是专业关系中某个元组的专业号值是专业关系中某个元组的专业号值)。2.2 关系模型及其描述关系模型及其描述 例例2:职工职工EMP(EMP#,ENAME,JOB,DEPT#)EMP(EMP#,ENAME,JOB,DEPT#)部门部门DEPT(DEPT#,DNAME,LOC)DEPT(DEPT#,DNAME,LOC)则:则:EMPEMP中的中的DEPT#DEPT#为空或为为空或为DEPTDEPT中的中的DEPT#DEPT#的值的值(3)(3)用户定义的完整性用户定义的完整性用户自定义完整性是针对某一具体数据的约束条件,反映某用户自定义完整性是针对某一具体数据的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用环境一具体应用所涉及的数据必须满足的语义要求,由应用环境决定。决定。例:例:属性的取值范围属性的取值范围属性的非空限制属性的非空限制2.3关系代数关系代数n关系数据语言的分类关系数据语言的分类(1 1)关系代数语言)关系代数语言 用对关系的运算来表达查询要求方式的语言。用对关系的运算来表达查询要求方式的语言。(2 2)关系演算语言)关系演算语言 用谓词来表达查询要求方式的语言。用谓词来表达查询要求方式的语言。元组关系演算语言元组关系演算语言 域关系演算语言域关系演算语言 (3 3)结构化查询语言)结构化查询语言 (SQL)SQL)2.3 关系代数关系代数关系代数关系代数具有关系代数和关系演算双重特点具有关系代数和关系演算双重特点关系演算:元组演算、域演算关系演算:元组演算、域演算域演算域演算关系数据库标关系数据库标准语言准语言SQL用关系运算来表达查询,以用关系运算来表达查询,以ISBL为代表为代表用谓词公式来表达查询元组演算用谓词公式来表达查询元组演算(以行为变量以行为变量),以,以ALPHA为代表为代表域演算域演算(以列为变量以列为变量),以,以QBE为代表为代表元组演算元组演算关系查询语言关系查询语言关系查询语言关系查询语言关系代数语言:查询操作是以集合操作作为基础的语言关系代数语言:查询操作是以集合操作作为基础的语言关系演算语言:查询操作是以谓词演算作为基础的语言关系演算语言:查询操作是以谓词演算作为基础的语言n关系查询语言是一种比关系查询语言是一种比Pascal、C等程序设计等程序设计语言更高级的语言。语言更高级的语言。nPascal、C、关系代数语言属于过程性语言,、关系代数语言属于过程性语言,在编程时必须给出获得结果的操作步骤。在编程时必须给出获得结果的操作步骤。n而关系演算语言属于非过程性语言,编程时只而关系演算语言属于非过程性语言,编程时只需要指出需要什么信息,不必给出具体的操作需要指出需要什么信息,不必给出具体的操作步骤。步骤。干什么?干什么?怎么干?怎么干?干什么?干什么?2.3关系代数关系代数2.3关系代数关系代数 1.集合运算集合运算 关系代数关系代数是一种抽象的查询语言。它以关系为运算对象,是一种抽象的查询语言。它以关系为运算对象,通过对关系进行通过对关系进行“组合组合”或或“分割分割”,得到所需的数据集合,得到所需的数据集合关系关系。n分类分类:集合运算(并、交、差;广义笛卡尔积)集合运算(并、交、差;广义笛卡尔积)关系运算关系运算 (投影、选择、连接和除运算)(投影、选择、连接和除运算)设:设:t 为元组变量;为元组变量;R、S为为同类关系同类关系(同元、相应属性同域);同元、相应属性同域);n下列运算结果为同类关系:下列运算结果为同类关系:(1)(1)并运算并运算:RUS=t|(tR)(tS)(2)(2)差运算差运算:R-S=t|(tR)(tS)(3)(3)交运算交运算:RS=t|(tR)(tS)RS2.3关系代数关系代数 R1-R2A1A2A3 b3b d3b R2A1A2A3a3cb2dc2de5fg6fR1A1A2A3b2db3bc2d d3bn关系运算示例关系运算示例 R1R2A1A2A3b2dc2dR1R2A1A2A3b2d b3b c2d d3b a3c e5f g6f 2.3关系代数关系代数(4)(4)广义笛卡尔积广义笛卡尔积:R、S可为不同类关系,则结果为不同类关系:可为不同类关系,则结果为不同类关系:RS=trts|(trR)(tsS)连接为连接为 m+n目关系目关系 m目关系目关系 n目关系目关系 S A2A3 2d3bR A1A2A3b2d b3b c2d d3b 2.3关系代数关系代数n元组的前n列是关系R的一个元组n后m列是关系S的一个元组RSR .A1R.A2R.A3S.A2S.A3b2d2db2d3b b3b2d b3b3b c2d2dc2d3b d3b2d d3b3b2.3关系代数关系代数n记号记号n设设t t为为R R的元组变量,设:的元组变量,设:R R(A1A1,A2A2,An)=R(U)An)=R(U)tAi(AitAi(Ai为属性为属性):R R在属性集在属性集AiAi上上的所有值。的所有值。tA (AtA (A为属性集为属性集),R R在属性集在属性集A A上上的所有值。的所有值。例:例:tt学号学号 -R-R中学号上的值中学号上的值 t t 学号,姓名学号,姓名 学号姓名年龄t2.3关系代数关系代数 2.2.专门的关系运算专门的关系运算 (1)选择)选择n是行上的选择,产生同类关系。是行上的选择,产生同类关系。F(R)=t|(tR)F(t(R)=t|(tR)F(t)=true)=truen含义:由含义:由R中满足中满足F条件的元组组成。条件的元组组成。n其中:其中:F由属性名(值)、比较符、逻辑由属性名(值)、比较符、逻辑运算符组成。运算符组成。例例:A25 A3 A3“f”(R)或或:n选择运算是从行的角度进行的运算选择运算是从行的角度进行的运算R A1A2A3a3fb2dc2de6fg6f253“f”(R)A1A2A3b2dc2de6fg6f253“f”(R)2.3关系代数关系代数(2 2)投影运算)投影运算 是列上的选择,产生不同类关系。是列上的选择,产生不同类关系。A(R)=tA|(tR)n含义:含义:R中取属性名表中取属性名表A中指定中指定 的列,消除重复元组。的列,消除重复元组。例:A3,A2(R)A3A2 f3d2f63,2AA(R)RA1A2A3a3fb2dc2de6fg6f2.3关系代数关系代数n投影操作主要是从列的角度进行运算投影操作主要是从列的角度进行运算n用关系代数表示查询:用关系代数表示查询:例:查选例:查选2号课程的学生记录。号课程的学生记录。例例:成绩在成绩在90分以上的学生号。分以上的学生号。9801 1 1959801 2 2909802 1 1889802 2 3 9298032 2Sno Cno Grade80SC表表解:解:Cno=2(SC)解解:Sno(Grade90(SC)2.3关系代数关系代数(3)连接运算:)连接运算:一般连接一般连接它从两个关系的笛卡尔积中选取属性间满足一定条件的元组。它从两个关系的笛卡尔积中选取属性间满足一定条件的元组。R S=trts|(tr R)(ts S)trAtsBA B比较运算符比较运算符含义:含义:从从RXS中选取中选取R关系在关系在A属性组上的值与属性组上的值与S关系在关系在B属性组上值满属性组上值满足足关系的元组。关系的元组。2.3关系代数关系代数 等值连接:等值连接:为为“=”的连接的连接。n什么是等值连接什么是等值连接n为为“”的连接运算称为等值连接的连接运算称为等值连接 n等值连接的含义等值连接的含义n从从关关系系R与与S的的广广义义笛笛卡卡尔尔积积中中选选取取A、B属属性性值值相相等等的的那些元组,即等值连接为:那些元组,即等值连接为:R S=|tr R ts S trA=tsB A=Btrts ABRSp73例例2.3关系代数关系代数 自然连接自然连接设设R R、S S有同名属性有同名属性 Bi(i=1,2Bi(i=1,2.k).k)R S=trts|(tr R)(ts S)trB=tsBp74例例n其中其中B是是R和和S的的公共属性公共属性,并且在形成的新关系中,并且在形成的新关系中要去掉重复的属性。要去掉重复的属性。2.3关系代数关系代数连接举例连接举例ABCa1b15a1b26a2b38a2b412BEb13b27b310b32b52RS2.3关系代数关系代数连接举例连接举例R SAR.BCS.BEa1b15b27a1b15b310a1b26b27a1b26b310a2b38b310 CE2.3关系代数关系代数连接举例连接举例等值连接R SR.B=S.B AR.BCS.BEa1b15b13a1b26b27a2b38b310a2b38b322.3关系代数关系代数连接举例连接举例自然连接R S ABCEa1b153a1b267a2b3810a2b3822.3关系代数关系代数连接举例连接举例n等值连接与自然连接的区别:等值连接与自然连接的区别:(1)自然连接一定是等值连接,但等值连接不一定是)自然连接一定是等值连接,但等值连接不一定是自然连接。因为自然连接要求相等的分量必须是公共自然连接。因为自然连接要求相等的分量必须是公共属性,而等值连接相等的分量不一定是公共属性。属性,而等值连接相等的分量不一定是公共属性。(2)等值连接不把重复的属性去掉,而自然连接要把)等值连接不把重复的属性去掉,而自然连接要把重复属性去掉。重复属性去掉。注意注意若若R R、S S无公共属性,无公共属性,R S=R S=?2.3关系代数关系代数n象集(ImageSet)n关系R(X,Z),X,Z是属性组,x是X上的取值,定义x在R中的象集为Z Z Z Zx x x x=tZ|t=tZ|t=tZ|t=tZ|t R R R R t t t tX=xX=xX=xX=x 从R中选出在X上取值为x的元组,去掉X上的分量,只留Z上的分量XZ张军同学所选修张军同学所选修的全部课程的全部课程x=张军张军Z Zx x姓名课程张军物理王红数学张军数学课程数学物理(4 4)除运算)除运算 2.3关系代数关系代数 做法:逐个考虑选课关系SC中的元组r,求r在姓名SN上的分量x,再求x在选课关系中的象集课程Cx,若Cx包含了所有的课程C,则x是满足条件的一个元组x|x=rSNrSCCxC选修全部课选修全部课程的学生程的学生全部课程全部课程x同学所选修同学所选修的全部课程的全部课程除定义R(X,Y)S(Y)=trx|trRY(S)Yx其中Yx为x在R中的象集,x=trx除运算除运算如何得到选修了全部课程的学生?如何得到选修了全部课程的学生?2.3关系代数关系代数物理数学课程物理王红数学张军数学王红物理张军课程姓名王红张军姓名没有选修全部没有选修全部课程的学生课程的学生所有学生选所有学生选修全部课程修全部课程数学张军数学王红物理张军课程姓名物理王红数学张军数学王红物理张军课程姓名姓名王红姓名王红张军姓名王红姓名张军选修了全部选修了全部课程的学生课程的学生 2.3关系代数关系代数n示例n求同时选修了001和002号课程的学生号方案1:S#,C#(SC)C#=001C#=002(C)方案2:S#(SCC#=001C#=002(C)哪一个正确?2.3关系代数关系代数ABCDabcdabefabdebcefedcdedefCDcdefABabedABabbcedABCDabcdabefbccdbcefedcdedefR AB(R)S AB(R)CD(S)AB(R)CD(S)-RABCDbccdRS=ABabbcedABbc-=2.3关系代数关系代数(综合举例)综合举例)学生学生-课程数据库课程数据库:S(sno,sname,sex,age,dept)C(cno,cname,credit,pcno)SC(sno,cno,grade)目标目标 A条件条件 F 来源来源 R2.3关系代数关系代数(综合举例)综合举例)学学号号Sno姓姓名名Sname性性别别sex年年龄龄age所所在在系系dept95001李勇李勇男男20CS95002刘晨刘晨女女19IS95003王敏王敏女女18MA95004张立张立男男19ISStudent2.3关系代数关系代数(综合举例)综合举例)Course课程号课程号课程名课程名先行课先行课学分学分CnoCnamepcnocredit1数据库数据库542数学数学23信息系统信息系统144操作系统操作系统635数据结构数据结构746数据处理数据处理27PASCAL语言语言642.3关系代数关系代数(综合举例)综合举例)SC学学号号课课程程号号成成绩绩SnoCnoGrade95001192950012859500138895002290950023802.3关系代数关系代数(综合举例)综合举例)n例例1:查不选:查不选002号课程的学生姓名与年龄。号课程的学生姓名与年龄。Cno002?sname,age(S)-sname,age(S)-sname,age(S sname,age(S cno=cno=002002 (SC)(SC)n 例例2:查询至少选修了两门课程的学生学号。查询至少选修了两门课程的学生学号。sno(sno(1=41=4 2255(SC(SCSC)SC)2.3关系代数关系代数(综合举例)综合举例)目标目标A1、A2例例3:查所选课程包含了学生:查所选课程包含了学生210101所选全部课程的学生号和姓所选全部课程的学生号和姓名。名。(sno,cno(SC)cno(sno=210101(SC)sno,sname(S)例例4:查询选修了全部课程的学生学号与姓名。:查询选修了全部课程的学生学号与姓名。sno,sname(S)(sno,cno(SC)cno(C)2.3关系代数关系代数(综合举例)综合举例)例例5查询信息系(IS系)全体学生dept=IS(Student)或5=IS(Student)结果:SnoSnamesexagedept95002刘晨刘晨女女19IS95004张立张立男男19IS2.3关系代数关系代数(综合举例)综合举例)例例6查询年龄小于20岁的学生age20(Student)或420(Student)结果:SnoSnamesexagedept95002刘晨刘晨女女19IS95003王敏王敏女女18MA95004张立张立男男19IS2.3关系代数关系代数(综合举例)综合举例)例例7查询学生的姓名和所在系即求Student关系上学生姓名和所在系两个属性上的投影Sname,dept(Student)或2,5(Student)结果:Snamedept李勇李勇CS刘晨刘晨IS王敏王敏MA张立张立IS2.3关系代数关系代数(综合举例)综合举例)以学生以学生-课程数据库为例课程数据库为例(P.59)例例8查询至少选修1号课程和3号课程的学生号码首先建立一个临时关系K:然后求:Sno.Cno(SC)KCno132.3关系代数关系代数(综合举例)综合举例)n例8续Sno.Cno(SC)95001象集象集1,2,395002象集象集2,3 Cno(K)=1,3于是:Sno.Cno(SC)K=95001SnoCno9500119500129500139500229500232.3关系代数关系代数(综合举例)综合举例)n例例 9查询选修了2号课程的学生的学号。Sno(Cno=2(SC)95001,95002例10查询选修了全部课程的学生号码和姓名。Sno,Cno(SC)Cno(Course)Sno,Sname(Student)2.3关系代数关系代数(综合举例)综合举例)例例11查询至少选修了一门其直接先行课为5号课程的课程的学生姓名。Sname(Cpno=5(CourseSCStudent)或Sname(Cpno=5(Course)SCSno,Sname(Student)或Sname(Sno(Cpno=5(Course)SC)Sno,Sname(Student)2.3关系代数关系代数(小结)小结)n关系代数五种基本运算:关系代数五种基本运算:并、差、笛卡尔积、投影、选择并、差、笛卡尔积、投影、选择n非基本运算用基本运算的表示非基本运算用基本运算的表示 1.1.交交 RS=R-(R-S)RS=R-(R-S)2.2.连接连接 R R S=S=im+jim+j(RS)(RS)(设(设R R为为m m元、元、S S为为n n元关系元关系)ij R R S=S=i1,i2,i1,i2,imim(R.A1=S.A1R.A1=S.A1R.Ak=S.AkR.Ak=S.Ak(RS)(RS)其中:其中:A1A1,A2A2,AkAk为为R R、S S的公共属性。的公共属性。i1i1,i2i2,imim为从为从R R与与S S的属性集中去掉的属性集中去掉 S.A1,S.A2S.A1,S.A2,S.AkS.Ak后剩余的属性。后剩余的属性。2.3关系代数关系代数3.3.除除 设关系设关系R(X,Y)R(X,Y),S(Y,Z)S(Y,Z),X X、Y Y、Z Z为属性集为属性集RSRS的计算过程如下:的计算过程如下:T=T=X X(R)(R)W=(T W=(T Y Y(S)-R(S)-R(计算计算TSTS中不在中不在R R的元组的元组)V=V=X X(W)(W)RS=T RS=T V V即即RS RS X X(R)-(R)-X X(X X(R)(R)Y Y(S)(S)R)R)P75 例例2.3 关系代数关系代数v 5种基本运算的作用种基本运算的作用 1 1关系的属性指定关系的属性指定 A1,A2,A1,A2,An,An(R)(R)2 2关系的元组选择关系的元组选择 F F(R)(R)3 3两个关系的归并两个关系的归并 R1R2R1R2 4 4关系中元组的插入关系中元组的插入 RR RR 5 5关系中元组的删除关系中元组的删除 R RRR2.3关系代数关系代数3.3.扩充的关系运算扩充的关系运算(1)广义投影 F1,Fn(R),其中,F1,Fn是涉及R中常量和属性的算术表达式。例:sno,sname,sex,age=20(sno=201901(Student)(2)赋值 R-S:将关系S赋予R。例:Course-Course099,电子商务,2,003(并)Student-Student-(sno=201908(Student)(删除)2.3关系代数关系代数(3)外连接n为避免自然连接时因失配而发生的信息丢失,可以假定往参与连接的一方表中附加一个取值全为空值的行,它和参与连接的另一方表中的任何一个未匹配上的元组都能匹配,称之为外连接外连接=自然连接+失配的元组n外连接的形式:左外连接、右外连接、全外连接左外连接=自然连接+左侧表中失配的元组右外连接=自然连接+右侧表中失配的元组全外连接=自然连接+两侧表中失配的元组2.3关系代数关系代数(4 4)半连接)半连接 R R和和S S的自然的自然连连接只在关系接只在关系R R或关系或关系S S的属性集上的投影,的属性集上的投影,称称为为半半连连接接。R R和和S S的右外的右外连连接接记为记为R R S S。R R和和S S的半的半连连接接记为记为S S R R。(5 5)聚集)聚集根据关系中的一组值经统计、计算得到一个值作为结果。根据关系中的一组值经统计、计算得到一个值作为结果。常用聚集函数:常用聚集函数:max、min、avg、sum、count。形式:形式:G 聚集函数名聚集函数名(属性属性)(关系关系)2.3关系代数关系代数例:例:求男同学的平均年龄求男同学的平均年龄。G avg(age)(sex=男男(Student)例:例:计算年龄不小于计算年龄不小于20岁的同学人数岁的同学人数。Gcount(sno)(age20(Student)例:例:数据库课程的平均分数数据库课程的平均分数。Gavg(grade)(cno(cname=数据库数据库(Course)SC)(6 6)外部并)外部并 由由R和和S中的所有属性组成中的所有属性组成(公共属性只取一次公共属性只取一次),其元组,其元组由属于由属于R或属于或属于S的元组组成,且元组在新增加的属性的元组组成,且元组在新增加的属性填上空值。填上空值。2.3关系代数关系代数(7 7)重命名)重命名 x(E)x(E):其其含含义义为为给给一一个个关关系系表表达达式式赋赋予予名名字字,返返回回表达式表达式E E的的结结果,并把名字果,并把名字x x赋给赋给E E。xx(A1A1,A2A2,An)(E):An)(E):其含义为返回表达式其含义为返回表达式E E的的结果,并把名字结果,并把名字x x赋给赋给E E,同时将各属性更名为,同时将各属性更名为A1A1,A2A2,AnAn。例:设关系例:设关系R(R(姓名,课程,成绩),求数学成绩比王红同姓名,课程,成绩),求数学成绩比王红同学高的学生。学高的学生。S S.姓名姓名(课课程程=数学数学 姓名姓名=王王红红(R)(R)(课课程程=数学数学 S S(R)(R)R.R.成绩成绩 21-2也是公式。也是公式。若若是公式,则是公式,则(t)()t)()、(t)()t)()也是公式。也是公式。有限次使用上述有限次使用上述3 3条规则得到的公式都是元组关系条规则得到的公式都是元组关系演算表达式。演算表达式。n公式中各种运算符的优先级:公式中各种运算符的优先级:算术运算符、量词算术运算符、量词()、逻辑运算符、逻辑运算符(-)高高低低括号优先括号优先关系演算表达式关系演算表达式关系代数表达式关系代数表达式用关系演算表达式表达五种基本运算:用关系演算表达式表达五种基本运算:RS=t|R(t)S(t)RS=t|R(t)S(t)RS=t(n+m)|(u(n)(v(m)(R(u)S(v)t1=u1tn=untn+1=v1tn+m=vm)F(R)=t|R(t)Fi1,i2,ik(R)=t(k)|(u)(R(u)t1=ui1tk=uik)2.4 关系演算关系演算关系代数关系代数关系演算表达式关系演算表达式关系代数表达式关系代数表达式例例1查询信息系(查询信息系(IS)全体学生)全体学生F(R)=t|R(t)FSIS=t|Student(t)t5=IS例例2查询年龄小于查询年龄小于20岁的学生岁的学生S20=t|Student(t)t4202.4 关系演算关系演算关系代数关系代数关系演算表达式关系演算表达式关系代数表达式关系代数表达式例例3查询学生的姓名和所在系查询学生的姓名和所在系S1=t(2)|(u)(Student(u)t1=u2t2=u5)i1,i2,ik(R)=t(k)|(u)(R(u)t1=ui1tk=uik)2.4 关系演算关系演算关系代数关系代数2.4 关系演算关系演算-元组演算元组演算n例例1:设有关系:设有关系R和和S,请写出下列元组演算表达式的结果。,请写出下列元组演算表达式的结果。A B C 1 2 3 4 5 6 7 8 9 A B C 1 2 3 3 4 6 5 6 9RSR1=t|S(t)R1=t|S(t)t12t12R2=t|R(t)R2=t|R(t)S(t)S(t)R3=t|(R3=t|(u)(S(t)u)(S(t)R(u)t3u2)R(u)t3u1)u)(R(t)S(u)t3u1)2.4 关系演算关系演算-元组演算元组演算R5=t|(R5=t|(u)(u)(v)(R(u)v)(R(u)S(v)u1v2t1=u2 S(v)u1v2t1=u2 t2=v3t3=u1)t2=v3t3=u1)例例2 2:设:设R R和和S S都是二元关系,将都是二元关系,将1,41,4(2=32=3(R(RS)S)转换转换成元组演算表达式。成元组演算表达式。t|(t|(u)(u)(v)(R(u)v)(R(u)S(v)u2=v1t1=uS(v)u2=v1t1=u1t2=v2)1t2=v2)2.4 关系演算关系演算-元组演算元组演算ABC346969ABC456789ABC123346ABC456789R1R2R3R42.4 关系演算关系演算-元组演算元组演算nR5:R5:t1=u2 t2=v3 t3=u1)t1=u2 t2=v3 t3=u1)u1 v21*24476u1u2u3v1v2v3456123789123789346789569nR5:R5:2.4 关系演算关系演算-域演算域演算2.2.域关系演算域关系演算以域变量作为谓词变元的基本对象。以域变量作为谓词变元的基本对象。n 用用t1,t2,t1,t2,tk|,tk|(t1,t2,(t1,t2,tk),tk)表示关系。表示关系。t1,t2,t1,t2,tk,tk是元组变量是元组变量t t的各个域分量。的各个域分量。(1 1)域演算中的原子公式)域演算中的原子公式 R R(t1,t2,t1,t2,tk),tk)表示:表示:由分量由分量t1,t2,t1,t2,tk,tk组成的元组属于组成的元组属于R R。tiujtiuj 表表示示:元元组组变变量量t t的的第第i i个个分分量量与与元元组组u u的的第第j j个个分分量量间间满满足足关系。关系。tiC tiC 或或 CtiCti 表示:表示:元组变量元组变量t t的第的第i i个分量与常量个分量与常量C C间满足间满足关系。关系。(2 2)公式的递归定义)公式的递归定义 与元组演算定义类似。与元组演算定义类似。2.4 关系演算关系演算-域演算域演算n例:设有关系例:设有关系R、S、W,试写出下列域演算表达式的,试写出下列域演算表达式的结果。结果。A B C 1 2 3 4 5 6 7 8 9 A B C 1 2 3 3 4 6 5 6 9 D E 7 5 4 8RWSR1=xyz|R(xyz)R1=xyz|R(xyz)x3x3R2=xyz|R(xyz)S(xyz)y=8R2=xyz|R(xyz)S(xyz)y=8R3=xyz|(R3=xyz|(u)(u)(v)(R(zxu)w(yv)uv)v)(R(zxu)w(yv)uv)2.4 关系演算关系演算-域演算域演算nR1:R2:ABC456 A B C 1 2 3 4 5 6 7 8 9u=R.c3*69v=W.E58nR3:xyzzxuyv4567578975789482.4 关系演算关系演算n安全运算安全运算 不产生无限关系和无穷验证的运算。不产生无限关系和无穷验证的运算。n安全表达式安全表达式 安全运算的表达式。安全运算的表达式。n安全限制安全限制 安全运算所采取的措施。安全运算所采取的措施。注注意意关系代数运算总是安全的。关系演算则可能出现关系代数运算总是安全的。关系演算则可能出现无限关系和无穷验证问题,无限关系和无穷验证问题,3.3.关系演算的安全性关系演算的安全性例:例:t|t|R(t)R(t)这是一个无限关系。这是一个无限关系。要使关系演算是安全的,只要定义一个安全约束有限集合,要使关系演算是安全的,只要定义一个安全约束有限集合,该有限集是表达式中涉及到的关系中的值的集合。经过安该有限集是表达式中涉及到的关系中的值的集合。经过安全限制后的表达式其运算是安全的。全限制后的表达式其运算是安全的。关系代数和关系演算所依据的基础理论是相同的,故可进关系代数和关系演算所依据的基础理论是相同的,故可进行相互转换。已证明,关系代数、安全的元组演算、安全行相互转换。已证明,关系代数、安全的元组演算、安全的域演算在关系的表达能力上是等价的。的域演算在关系的表达能力上是等价的。2.4 域关系演算语言域关系演算语言QBE n一种典型的域关系演算语言n由M.M.Zloof提出n1978年在IBM370上得以实现nQBE也指此关系数据库管理系统nQBE:QueryByExamplen基于屏幕表格的查询语言n查询要求:以填写表格的方式构造查询n用示例元素(域变量)来表示查询结果可能的情况n查询结果:以表格形式显示QBE操作框架操作框架关系名关系名属性名属性名操作命令操作命令元组属性值或查询条件或操作命令元组属性值或查询条件或操作命令QBE操作框架操作框架检索操作检索操作(1)用户提出要求;(2)屏幕显示空白表格;(3)用户在最左边一栏输入要查询的关系名,例如Student;StudentQBE操作框架操作框架检索操作检索操作(4)系统显示该关系的属性名(5)用户在上面构造查询要求StudentSnoSnameSsexSageSdeptP.TAO.CStudentSnoSnameSsexSageSdeptQBE操作框架操作框架检索操作检索操作(6)屏幕显示查询结果StudentSnoSnameSsexSageSdept李勇李勇张立张立CQBE操作框架操作框架构造查询的几个构造查询的几个要素要素n示例元素即域变量一定要加下划线示例元素是这个域中可能的一个值,它不必是查询结果中的元素n打印操作符P.指定查询结果所含属性列n查询条件不用加下划线可使用比较运算符,和其中可以省略n排序要求QBE简单查询简单查询例1查询全体学生的全部数据。StudentSnoSnameSsexSageSdeptP.95001P.李勇李勇P.男男P.20P.CSQBE简单查询简单查询显示全部数据也可以简单地把P.操作符作用在关系名上。StudentSnoSnameSsexSageSdeptP.QBE条件查询条件查询(1)简单条件例2求信息系全体学生的姓名。StudentSnoSnameSsexSageSdeptP.李勇李勇ISQBE条件查询(续)条件查询(续)例3求年龄大于19岁的学生的学号。StudentSnoSnameSsexSageSdeptP.9500119QBE条件查询(与条件)条件查询(与条件)例4求计算机科学系年龄大于19岁的学生的学号。方法(1):把两个条件写在同一行上StudentSnoSnameSsexSageSdeptP.9500119CSQBE条件查询(续)条件查询(续)方法(2):把两个条件写在不同行上,但使用相同的示例元素值StudentSnoSnameSsexSageSdeptP.95001P.9500119CSQBE条件查询(续)条件查询(续)例5查询既选修了1号课程又选修了2号课程的学生的学号。SCSnoCnoGradeP.95001P.9500112QBE条件查询(续)条件查询(续)例6查询计算机科学系或者年龄大于19岁的学生的学号。StudentSnoSnameSsexSageSdeptP.95001P.9500219CSQBE多表连接多表连接例7查询选修1号课程的学生姓名。SCSnoCnoGrade950011StudentSnoSnameSsexSageSdept95001P.李勇李勇注意:示例元素Sno是连接属性,其值在两个表中要相同。QBE条件查询(非条件)条件查询(非条件)例8查询未选修1号课程的学生姓名思路:显示学号为95001的学生名字,而该学生选修1号课程的情况为假SCSnoCnoGrade950011 StudentSnoSnameSsexSageSdept95001P.李勇李勇QBE条件查询(续)条件查询(续)例9查询有两个人以上选修的课程号思路:查询这样的课程1,它不仅被95001选修而且也被另一个学生(95001)选修了SCSnoCnoGrade95001.95001P.11QBE集函数集函数常用集函数:函函数数名名功功能能CNT对元组计数对元组计数SUM求求总总和和AVG求平均值求平均值MAX求最大值求最大值MIN求最小值求最小值QBE集函数集函数例10查询信息系学生的平均年龄。StudentSnoSnameSsexSageSdeptP.AVG.ALL.ISQBE查询结果排序查询结果排序(续)(续)例11查全体男生的姓名,要求查询结果按所在系升序排序,对相同系的学生按年龄降序排序。StudentSnoSnameSsexSageSdeptP.李勇李勇男男DO(2).AO(1).QBE修改操作修改操作例12把95001学生的年龄改为18岁。方法(1):将操作符“U.”放在值上StudentSnoSnameSsexSageSdept95001U.18QBE修改操作修改操作(续续)方法(2):将操作符“U.”放在关系上码95001标明要修改的元组。“U.”标明所在的行是修改后的新值。由于主码是不能修改的,所以系统不会混淆要修改的属性。StudentSnoSnameSsexSageSdeptU.9500118QBE修改操作修改操作(续续)例13将计算机系所有学生的年龄都改为18岁StudentSnoSnameSsexSageSdept95008U.18CSQBE修改操作修改操作(续续)例14把95001学生的年龄增加1岁分两行分别表示改前和改后的示例元素必须将操作符“U.”放在关系上StudentSnoSnameSsexSageSdeptU95001950011717+1QBE修改操作修改操作(续续)例15将计算机系所有学生的年龄都增加1岁StudentSnoSnameSsexSageSdeptU95008950081818+1CSQBE插入操作插入操作例16把信息系女生95701,姓名张三,年龄17岁存入数据库中。StudentSnoSnameSsexSageSdeptI.95701张三张三女女17ISQBE 删除操作删除操作例17删除学生95089为保证参照完整性,删除95089学生前,先删除95089学生选修的全部课程StudentSnoSnameSsexSageSdeptD.95089SCSnoCnoGradeD.95089
展开阅读全文