《数据库原理关系数据库幻灯片.ppt》由会员分享,可在线阅读,更多相关《数据库原理关系数据库幻灯片.ppt(99页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库原理关系数据库第1页,共99页,编辑于2022年,星期六第二章 关系数据库2-5章为本课程重点与难点关系数据库的理论基础1970,E.F.Codd“A Relational Model of Data for Shared Data Banks”现代主流数据库几乎全部支持关系模型Oracle(甲骨文),Sybase,IBM DB2,MS SQL Server,Ingres第2页,共99页,编辑于2022年,星期六2.1 关系模型概述关系模型由关系数据库、关系操作集合和关系完整性约束三部分组成。一.单一的数据结构关系实体和实体之间的联系都用关系描述第3页,共99页,编辑于2022年,星期六
2、二.关系操作就关系模型而言,仅仅给出了关系操作的能力,并不给定(限定)RDBMS语言的语法要求。关系操作的特点:一次一集合的操作方式 Set-at-a-Time操作的对象和结果都是关系。第4页,共99页,编辑于2022年,星期六三种具有相同表达能力的抽象查询语言:关系代数 ISBL元组关系演算语言 ALPHA,QUEL域关系演算语言 QBE第5页,共99页,编辑于2022年,星期六SQL则是介于关系代数和关系演算之间的标准查询语言。由IBM提出,是应用得最广泛的关系数据库标准语言。第6页,共99页,编辑于2022年,星期六三.关系的三类完整性约束条件关系模型必须满足:实体完整性和参照完整性约束
3、。应用领域中的大量语义约束则由DBMS实现的用户定义完整性保证。注意:这是由DBMS来保证的,而非应用程序保证。第7页,共99页,编辑于2022年,星期六2.2 关系数据结构及其形式化定义从集合论的角度给出关系数据结构的形式化定义。(需要离散数学集合论的概念)2.2.1 关系(Relation)1.域定义2.1:域是具有相同数据类型的值的集合。如自然数,全班同学的名字等。第8页,共99页,编辑于2022年,星期六2.2 笛卡儿集(卡氏集)定义2.2 给定一组域D1,D2,Dn,这些域中可以有相同的,D1,D2,Dn的笛卡儿集为:D1D2Dn(d1,d2,dn)|diDi,i=1,2,n,其中每
4、一个元素称为一个n元组元组,元素中的每个值称为一个分量分量。第9页,共99页,编辑于2022年,星期六例:D1=大,中,小,D2=红,绿第10页,共99页,编辑于2022年,星期六例:D1=大,中,小,D2=红,绿D1D2=(大,红),(大,绿),(中,红),(中,绿),(小,红),(小,绿)共有326个2元组第11页,共99页,编辑于2022年,星期六注意:集合论中笛卡儿集不满足交换率,注意:集合论中笛卡儿集不满足交换率,即笛卡儿集的元组有序。即笛卡儿集的元组有序。基数的概念:若Di(i=1,2,n)为有限集,其基数为|Di|,则D1D2 Dn的基数为:|D1|D2|Dn|第12页,共99页
5、,编辑于2022年,星期六3.关系定义定义2.3 D1D2 Dn的任意子集叫做在域D1,D2,Dn上的关系,可记做:R(D1,D2,Dn),R为关系名,n是关系的目或度(degree)。第13页,共99页,编辑于2022年,星期六注意:1.这里的“子集”是“任意子集”,包括空集。2.笛卡儿集不满足交换率,而关系通过给关系的列附加属性名的方式取消元组的有序性。3.按2.3的定义,关系可以是无限集。通常我们在关系数据模型中限定关系为有限关系。第14页,共99页,编辑于2022年,星期六候选码若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为该关系的一个候选码(Candidate Key)
6、。一个关系可能有多个候选码,则选定其中一个作为主码(Primary Key)。包含在任何候选码中的属性称为主属性,不包含在任何候选码中的属性称为非主属性。全码(All-Key)关系模式的所有属性组构成此关系模式的唯一候选码。第15页,共99页,编辑于2022年,星期六基本关系六性质1.列是同质的;2.不同列可出自同一个域,每一列为一个属性,不同属性(列)给不同属性名;3.列的顺序可任意交换;4.任意两个元组不能完全相同;5.行的顺序可任意交换;6.每一分量是不可分的数据项。记忆方法:记忆方法:三列两行一分量三列两行一分量。第16页,共99页,编辑于2022年,星期六 注意:在许多实际关系数据库
7、产品中,基本表并不完全具有这六条性质,例如,有的数据库产品(如FoxPro)仍然区分了属性顺序和元组的顺序;许多关系数据库产品中,例如Oracle,FoxPro等,它们都允许关系表中存在两个完全相同的元组。第17页,共99页,编辑于2022年,星期六2.2.2 关系模式关系模式是对关系的描述。(是对型的描述)需描述元组集合的结构:由哪些属性构成,这些属性来自哪些域,以及属性与域之间的映象关系。此外,关系模式应刻划出完整性约束条件。第18页,共99页,编辑于2022年,星期六定义2.4 关系的描述称为关系模式,可表述为:R(U,D,dom,F)其中R为关系名,U为组成该关系地属性名集合,D为属性
8、组U中属性所来自的域,dom为属性向域的映象集合,F为属性间数据的依赖关系集。第19页,共99页,编辑于2022年,星期六关系模式通常可以简记为:R(U)或R(A1,A2,AN)其中R为关系名,A1,A2,AN为属性名。而域名及属性向域的映象常常直接说明为属性的类型、长度。关系模式是静态度、稳定的,而关系是动关系模式是静态度、稳定的,而关系是动态的、随时间变化的,两者是型与值的态的、随时间变化的,两者是型与值的关系。关系。第20页,共99页,编辑于2022年,星期六2.2.3 关系数据库 在给定应用领域中,用于描述所有实体和实体间的联系的关系的集合构成一个关系数据库。同样,关系数据库也有型和值
9、之分。型:关系数据库模式 是对关系数据库的描述。值:一般就称为关系数据库。第21页,共99页,编辑于2022年,星期六2.3 关系的完整性关系模型的完整性规则是对关系的某种约束条件。关系模型的三类完整性:1.实体完整性2.参照完整性3.用户定义的完整性第22页,共99页,编辑于2022年,星期六其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为是关系的两个不变性,应该由关系系统自动支持。一、实体完整性实体完整性规则实体完整性规则(规则2.1):每一关系必有一主码,构成主码的各属性值均不能取空值。实体完整性规则规定基本关系的所有主码的各属性都不能取空值,而不仅是主码整体不能取空
10、值。第23页,共99页,编辑于2022年,星期六例如学生选课关系“选修(学号,课程号,成绩)”中,“学号、课程号”为主码,则“学号”和“课程号”都不能取空值,而不是整体不为空。实体完整性可以引申一下,主码也不能取重复值。第24页,共99页,编辑于2022年,星期六有关实体完整性的说明:(1)实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。(名字怎么来的)(2)现实世界中的实体是可区分的,即它们具有某种唯一性标识。(3)相应地,关系模型中以主码作为唯一标识。(4)主码中的属性即主属性不能取空值。所谓空值就是“不知道”或“不确定”的值。第25页,共99页,编辑于2022
11、年,星期六二、参照完整性现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系与关系之间的引用。引用的时候,必须取基本表中已经存在的值。由此引出参照的引用规则。参照完整性规则就是定义外码与主码之间的引用规则。第26页,共99页,编辑于2022年,星期六定义定义2.5 设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码(Foreign key),并称基本关系R为参照关系(Referencing relation),基本关系S为被参照关系(Referenced relation)或目
12、标关系(Target relation)。关系R和S不一定是不同的关系。第27页,共99页,编辑于2022年,星期六参照完整性规则参照完整性规则(规则规则2.2):若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。第28页,共99页,编辑于2022年,星期六例如,学生选课系统,选课关系的学号按实体完整性要求,不能为空;按参照完整性要求,只能选学生关系中的学号,表示语义关系“只有注册的学生才能选课”。课程号也类似(请同学们自己考虑)。第
13、29页,共99页,编辑于2022年,星期六三、用户定义的完整性(User-defined integrity)实体完整性和参照性适用于任何关系数据库系统。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。第30页,共99页,编辑于2022年,星期六2.4 关系代数本节要求n给定关系和关系代数表达式,要会算。n给定关系模式和查询(语义)要求,要会写关系代数表达
14、式。第31页,共99页,编辑于2022年,星期六w关系代数是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。w关系代数的运算对象是关系,运算结果亦为关系。关系代数用到的运算符包括四类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符。第32页,共99页,编辑于2022年,星期六比较运算符和逻辑运算符是用来辅助专门的关系运算符进行操作的,所以关系代数的运算按运算符的不同,主要分为传统的集合运算和专门的关系运算两类。第33页,共99页,编辑于2022年,星期六2.4.1 传统的集合运算是四种二目运算:,把关系看作元组的集合,于是,这四种运算与传统集合运算类似。第3
15、4页,共99页,编辑于2022年,星期六其中,三种运算要求参与运算的两个关系R,S具有相同的目n,且相应属性取自同一个域。1.并 :RSt|tRtS2.交 :RSt|tRtS3.差 :RSt|tRtS第35页,共99页,编辑于2022年,星期六 广义笛卡尔积(Extended cartesian product)元组连接的记号:R为n目关系,S为m目关系。tr ts 称为元组的连接(Concatenation)。它是一个(n+m)列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。第36页,共99页,编辑于2022年,星期六两个分别为n目和m目的关系R和S的广义笛卡尔积是一个
16、(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。记作:RStr ts|trRtsS若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1k2个元组。第37页,共99页,编辑于2022年,星期六2.4.2 专门的关系运算一般包括选择、投影、连接和除。第38页,共99页,编辑于2022年,星期六1.选择选择又称为限制(Restriction)。它是在关系R中选择满足给定条件的诸元组,记作:F(R)=t|tR F(t)=真 其中F表示选择条件,它是一个逻辑表达式,取逻辑值真或假。第39页,共99页,编辑于2022年,星期六逻辑表达式F的基本形式为:
17、X1 Y1 X2 Y2 表示比较运算符,它可以是、或。X1、Y1等是属性名或常量或简单函数。属性名也可以用它的序号来代替。表示逻辑运算符,它可以是、或。因此选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。这是从行的角度进行的运算。第40页,共99页,编辑于2022年,星期六设有一个学生-课程关系数据库,包括学生关系Student、课程关系Course和选修关系SC。(下面的例子都针对这三个关系进行运算。)例1 查询信息系(IS系)全体学生 Sdept=IS(Student)或 4=IS(Student)例2 查询年龄小于20岁的元组 Sage20(Student)或420(Studen
18、t)。第41页,共99页,编辑于2022年,星期六补充例1:查询信息系的年龄小于20岁的学生第42页,共99页,编辑于2022年,星期六补充例1:查询信息系的年龄小于20岁的学生 Sdept=IS Sage20(Student)第43页,共99页,编辑于2022年,星期六补充例1:查询信息系的年龄小于20岁的学生 Sdept=IS Sage20(Student)当然也可以表示为Sdept=IS(Student)Sage20(Student)(注:双目运算符的优先级低于单目运算符)第44页,共99页,编辑于2022年,星期六2.投影(Projection)先介绍与投影有关的两个记号:一.(元组属
19、性分量记号)设关系模式为R(A1,A2,An)。它的一个关系设为R。tR表示t是R的一个元组。tAi则表示元组t中相应于属性Ai的一个分量。第45页,共99页,编辑于2022年,星期六二.(元组属性列分量记号)若A=Ai1,Ai2,Aik,其中Ai1,Ai2,Aik是A1,A2,An中的一部分,则A称为属性列或域列。A则表示A1,A2,An中去掉Ai1,Ai2,Aik后剩余的属性组。tA=(tAi1,tAi2,tAik)表示元组t在属性列A上诸分量的集合。第46页,共99页,编辑于2022年,星期六关系R上的投影是从R中选择出若干属性列组成新的关系。记作:A(R)=tA|tR 其中A为R中的属
20、性列。基本思想是从关系中消除某些属性,投影也可能消除掉某些行。因为取消了某些属性列后,就可能出现重复行,应取消这些完全相同的行。第47页,共99页,编辑于2022年,星期六例3 查询学生关系Student在学生姓名和所在系两个属性上的投影 Sname,Sdept(Student)或 2,5(Student)第48页,共99页,编辑于2022年,星期六例4 查询学生关系Student中都有哪些系,即查询学生关系Student在所在系属性上的投影:Sdept(Student)第49页,共99页,编辑于2022年,星期六补充例2:(投影与选择的混合运算)查询信息系学生的姓名和年龄。第50页,共99页
21、,编辑于2022年,星期六补充例2:(投影与选择的混合运算)查询信息系学生的姓名和年龄。Sname,Sage Sdept=IS(Student)(注:单目运算为右结合)第51页,共99页,编辑于2022年,星期六3.连接连接也称为连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。记作:R S=tr ts|tr R tsS trA tsB AB其中A和B分别为R和S上度数相等且可比的属性组。是比较运算符。连接运算从R和S的笛卡尔积RS中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系的元组。第52页,共99页,编辑于2022年,星期六连接运算中有两种最为重要也最为
22、常用的连接,一种是等值连接(equi-join),另一种是自然连接(Natural join)。为“”的连接运算称为等值连接(equi-join)。它是从关系R与S的笛卡尔积中选取A、B属性值相等的那些元组。自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉。一般的连接操作是从行的角度进行运算。但自然连接还需要取消了重复列,所以是同时从行和列的角度进行运算。第53页,共99页,编辑于2022年,星期六连接的计算n首先根据连接的类型(连接、自然连接),确定结果的属性。n计算过程类似二重循环。n如P50.图2.
23、6(c)(d)(e)第54页,共99页,编辑于2022年,星期六补充例3:求选了2号课程的学生的学号和姓名。第55页,共99页,编辑于2022年,星期六补充例3:求选了2号课程的学生的学号和姓名。Sno,SName(Student Cno=2 SC)第56页,共99页,编辑于2022年,星期六补充例4:求选修数据库原理的学生的学号和姓名。Sno,SName(Student SC Cname=数据库原理 Course)第57页,共99页,编辑于2022年,星期六注意:注意:自然连接在没有相同的属性组时自然连接在没有相同的属性组时退化为广义笛卡儿集运算。退化为广义笛卡儿集运算。第58页,共99页,
24、编辑于2022年,星期六4.除()先介绍与除有关的记号:(象集记号)给定一个关系R(X,Y),X和Y为属性组。我们定义,当tX=x时,x在R中的象集(Images Set)为:Yx=tY|tR,tX=x 它表示R中属性组X上值为x的诸元组在Y上分量的集合。第59页,共99页,编辑于2022年,星期六补充例5:象集的计算。设R(A,B)如下 A B-1 aa 1 ab 2 st 1 mm求 B1第60页,共99页,编辑于2022年,星期六计算过程n考察r的每一个元组tn如果tA=1,则把tB放入结果。n得如下:B -aa ab mm第61页,共99页,编辑于2022年,星期六除的定义:给定关系R
25、(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=tX|tR Y(S)Yx 其中Yx为x在R中的象集,x=tX。第62页,共99页,编辑于2022年,星期六书例6.(p62)分析:R的A相当于X,B和C相当于YS的B和C相当于Y,D相当于Z(与结果无关)。除的结果只有A一个属性。a1出现在R的第1,4,7行,所以象集为(b1,c2),(b2,c3),(b2,c1)而S在(B,C)上的投影
26、为(b1,c2),(b2,c1),(b2,c3)a1的象集包含量S在(B,C)上的投影,所以a1出现在结果中,类似的,a2,a3,a4的象集均不包含S在(B,C)上的投影。所以它们不出现在结果中。第63页,共99页,编辑于2022年,星期六例7.(不用临时关系,改用完整表达式)Sno,Cno(SC)CnoCno=1 Cno=3(SC)可以看出,除运算有“包含”的语义。对于同一个查询,关系代数表达式可能不对于同一个查询,关系代数表达式可能不唯一唯一。第64页,共99页,编辑于2022年,星期六关系运算的第二种划分方法:5种基本运算和3种附加运算。交()的基本运算表达:RS=R-(R-S)RS=S
27、-(S-R)RS=(R-(R-S)(S-(S-R)第65页,共99页,编辑于2022年,星期六连接的表达:R S=F(RS)F第66页,共99页,编辑于2022年,星期六除的表达:R S=x(R)-x(x(R)y(S)-R)第67页,共99页,编辑于2022年,星期六2.5 关系演算 关系演算是以数理逻辑中的谓词演算为基础的。按谓词变元的不同,关系演算可分为元组关系演算和域关系演算。本节我们通过两个实际的关系演算语言来介绍关系演算的思想。本节内容仅要求了解。第68页,共99页,编辑于2022年,星期六2.5.1 元组关系演算语言ALPHA(简单了解)元组关系演算以元组变量作为谓词变元的基本对象
28、。一种典型的元组关系演算语言是E.F.Codd提出ALPHA语言,这一语言虽然没有实际实现,但关系数据库管理系统INGRES所用的QUEL语言是参照ALPHA语言研制的,与ALPHA十分类似。第69页,共99页,编辑于2022年,星期六ALPHA语言主要有GET、PUT、HOLD、UPDATE、DELETE、DROP六条语句,语句的基本格式是:操作语句操作语句 工作空间名(表达式):操作工作空间名(表达式):操作条件条件 第70页,共99页,编辑于2022年,星期六一、检索操作检索操作用GET语句实现。(1)简单检索(即不带条件的检索)例1 查询所有被选修的课程号码。GET W(SC.Cno)
29、注意与“查询所有的课程号码”的区别。GET W(Course.Cno)第71页,共99页,编辑于2022年,星期六(2)限定的检索(即带条件的检索)例2 GET W(Student.Sno,Student.Sage):Student.Sdept=ISStudent.Sage=90)(注:结果表达式中出现的表不需要存在量词)第78页,共99页,编辑于2022年,星期六(8)用全称量词的检索例:不选1号课程的学生的姓名,类似上例:GET W(Student.Sname):SCX(Student.Sno=SCX.Sno SCS.Cno=1)(理解:要求的学生不存在(理解:要求的学生不存在1号课程的号
30、课程的选课记录)选课记录)第79页,共99页,编辑于2022年,星期六也可改为全称量词:也可改为全称量词:RANGE SC SCXGET W(Student.Sname):SCX(Student.SnoSCX.Sno CS.Cno1)(理解:对于要求的学生,每一条选课记理解:对于要求的学生,每一条选课记录要么不是他选的,要么不是选的录要么不是他选的,要么不是选的1号课号课程程)第80页,共99页,编辑于2022年,星期六(9)用两种量词的检索根据语义分清使用全称和存在量词的条件。例13 查询选修了全部课程的学生姓名RANGE Course CXRANGE SC SCXGET W(Student
31、.Sname):CX SCX(SCX.Sno=Student.Sno SCX.Cno=CX.Cno)(理解:要求的学生,对每一门课程都存在相应的选课记录。)第81页,共99页,编辑于2022年,星期六(10)用蕴函(Implication)的检索例14:查询最少选修了95002号学生所选全部课程的学生的学号。P:学生95002选修了课程CX。q:学生Y也选了课程CX。转换为 CX(p-q)的问题。第82页,共99页,编辑于2022年,星期六RANGE Corse CX SC SCX SC SCYGET W(Student.Sno):CX(SCX(SCX.Sno=95002 SCX.Cno=CX
32、.Cno)-SCY(SCY.Sno=Student.Sno SCY.Cno=CX.Cno)第83页,共99页,编辑于2022年,星期六(11)集函数二、更新操作(知道就可以)1.修改2.插入3.删除第84页,共99页,编辑于2022年,星期六2.5.2 域关系演算语言QBE与MS Foxpro的RQBE没有什么联系。关系演算的另一种形式是域关系演算。域关系演算以元组变量的分量即域变量作为谓词变元的基本对象。QBE是Query By Example(即通过例子进行查询)的简称,其最突出的特点是它的操作方式。它是一种高度非过程化的基于屏幕表格的查询语言,用户通过终端屏幕编辑程序以填写表格的方式构造
33、查询要求,而查询结果也是以表格形式显示,因此非常直观,易学易用。第85页,共99页,编辑于2022年,星期六QBE中用示例元素来表示查询结果可能的例子,示例元素实质上就是域变量。QBE操作框架如书图2-9所示。一.检索操作(通过书上给出的例子适当理解)例1 求信息系全体学生的姓名第86页,共99页,编辑于2022年,星期六Student第87页,共99页,编辑于2022年,星期六StudentSnoSnameSsexSageSdept第88页,共99页,编辑于2022年,星期六StudentSnoSnameSsexSageSdeptP.李勇IS第89页,共99页,编辑于2022年,星期六Stu
34、dentSnoSnameSsexSageSdeptP.李勇王军IS第90页,共99页,编辑于2022年,星期六StudentSnoSnameSsexSageSdeptP.例2 查询全体学生的全部数据。第91页,共99页,编辑于2022年,星期六StudentSnoSnameSsexSageSdeptP.000119CS例4 查询计算机系的年龄大于19岁的学生的学号。方法一 一行表示“与”“与”的表示第92页,共99页,编辑于2022年,星期六StudentSnoSnameSsexSageSdeptP.0001P.000119CS方法二 两行表示“与”(使用相同的示例元素)第93页,共99页,编
35、辑于2022年,星期六“或”的表示。例5 查询计算机科学系或年龄大于19岁的学生的学号。StudentSnoSnameSsexSageSdeptP.0001P.000219CS第94页,共99页,编辑于2022年,星期六连接的表示。(涉及参与连接的所有表)例7 查询选修1号课程的学生的姓名。StudentSnoSnameSsexSageSdept0001P.李勇CSSnoCnoGrade00011第95页,共99页,编辑于2022年,星期六例8 查询未选修1号课程的学生的姓名。StudentSnoSnameSsexSageSdept0001P.李勇CSSnoCnoGrade00011第96页,共99页,编辑于2022年,星期六自表连接的表示。例9 查询有两个人以上选修的课程号。CSSnoCnoGrade0001 0001P.11第97页,共99页,编辑于2022年,星期六二.更新操作(略)第98页,共99页,编辑于2022年,星期六作业本章习题5。(P80)第99页,共99页,编辑于2022年,星期六
限制150内