关系模型和关系代数_第1页
关系模型和关系代数_第2页
关系模型和关系代数_第3页
关系模型和关系代数_第4页
关系模型和关系代数_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

关系模型和关系代数第一页,共六十八页,2022年,8月28日关系数据操作及类型关系操作在关系结构框架下,对数据结构——关系进行操作关系操作类型查询操作:在一个关系内或多个关系间检索或定位数据,

这一过程又可以分解为⑴单个关系内:属性指定⑵单个关系内:元组选择⑶多个关系间:合并第二页,共六十八页,2022年,8月28日关系数据操作及类型(续)修改操作:又包括⑴删除操作:在某个关系内定位元组,然后删除⑵插入操作:在某个关系内增加元组,不需要定位⑶更新操作:在某个关系内定位元组,然后改变属性值两类操作的联系查询操作是修改操作的基础,修改操作实际是对查询(定位)后的结果进行修改第三页,共六十八页,2022年,8月28日关系数据操作的表达关系操作的表示:查询语言关系模型中使用“纯”查询语言,如关系代数、关系演算关系代数(2章重点):用一组对关系的运算来表示

查询和修改。关系演算:用谓词演算来表示查询和修改。根据谓词的不同,又分为元组关系演算和域关系演算。关系数据库中使用实际的查询语言,如SQL(3章重点)思考为什么叫“查询”语言?“查询”语言只能做查询么?第四页,共六十八页,2022年,8月28日关系数据操作的表达(续)关系运算分类第五页,共六十八页,2022年,8月28日关系数据操作的表达(续)查询语言的分类过程化:用户要指定①what:查询什么②how:怎么查询,要用什么样的方法、过程?非过程化:用户只要指定查询什么,而“怎么查询”的问题留给系统处理——系统会自动寻找(近似)最优的查询方法(查询执行计划),即查询优化。关系代数是过程化的,SQL和关系演算是非过程化的第六页,共六十八页,2022年,8月28日目录*2.1关系数据模型

2.1.1关系基本概念

2.1.2关系数据结构

2.1.3关系数据操作

2.1.4关系数据完整性约束2.2关系代数2.3关系演算2.4查询优化第七页,共六十八页,2022年,8月28日关系完整性三类关系完整性规则①实体完整性②参照完整性③用户定义完整性第八页,共六十八页,2022年,8月28日目录*2.1关系数据模型

2.1.1关系基本概念

2.1.2关系数据结构

2.1.3关系数据操作

2.1.4关系数据完整性约束2.2关系代数2.3关系演算2.4查询优化第九页,共六十八页,2022年,8月28日什么是关系代数什么是代数(系统)?代数系统包括运算对象基于运算对象的一组运算。例如,实数代数包括运算对象——

实数基于实数的运算——

加、减、乘、除…第十页,共六十八页,2022年,8月28日什么是关系代数(续)封闭的代数系统运算的结果,仍不超出运算对象的范围。思考整数和加、减、乘、除运算,是否构成封闭的代数系统?整数和加、减、乘、商、余运算呢?第十一页,共六十八页,2022年,8月28日什么是关系代数(续)关系代数关系——

运算对象选择,投影,……

——

基于关系的一组运算。历史:关系模型创始人在集合代数基础上发展而来关系代数是封闭的,任何关系运算的结果还是一个关系第十二页,共六十八页,2022年,8月28日什么是关系代数(续)关系运算的分类基本运算选择;投影;笛卡儿积;集合并;集合差;更名附加运算(非基本的,可以用基本运算的组合来替换)集合交;自然连接;除;赋值扩展运算(前两种基础上对运算能力进行扩展和增强)广义投影;外连接;聚集运算一元运算输入为一个关系二元运算输入为两个关系第十三页,共六十八页,2022年,8月28日选择运算()–

例子关系

rABCDA=B∧D>5

(r)ABCD123710第十四页,共六十八页,2022年,8月28日选择运算()选择运算(一元)选择满足下标谓词(条件)的元组

p(r)={t|trandp(t)}

t是元组,{t|……}表示满足该条件的元组集合,即一个关系(可能未命名)输入关系r用圆括号括起来下标p称为选择谓词。它是一个布尔表达式,由以下组成:(r的)属性常量运算符:(与),(或),(非),=,,>,<,<=,*,/,+,-,…第十五页,共六十八页,2022年,8月28日选择运算()(续)选择运算的结果一个(无名字的)关系,保留输入关系的全部属性,但只包含那些满足条件的元组选择运算的例子:

sex=‘Male’

(student)student-nonamesex1JonesMale2SmithMale3KateFemalestudentstudent-nonamesex1JonesMale2SmithMale?第十六页,共六十八页,2022年,8月28日思考下列选择运算的结果是什么?

1=1(student)student-nonamesex1JonesMale2SmithMale3KateFemale?student-nonamesex1JonesMale2SmithMale3KateFemalestudent第十七页,共六十八页,2022年,8月28日思考下列选择运算的结果是什么?

1=2

(student)student-nonamesex1JonesMale2SmithMale3KateFemalestudentø

×第十八页,共六十八页,2022年,8月28日思考下列选择运算的结果是什么?

1=2

(student)student-nonamesex?√student-nonamesex1JonesMale2SmithMale3KateFemalestudent第十九页,共六十八页,2022年,8月28日投影运算()–

例子关系

rABC102030401112AC1112AC112A,C(r)第二十页,共六十八页,2022年,8月28日投影运算()投影运算(一元)从输入关系r,产生一个仅包含r中某些属性的新关系。并消去重复元组

A1,A2,…,Ak(r)={t[A1,A2,…,Ak

]|tr}

t[A1,A2,…,Ak

]是一个新元组,仅包含原来t的A1,A2,…,Ak属性值下标A1,A2,…,Ak是那些我们希望在结果中出现的属性第二十一页,共六十八页,2022年,8月28日投影运算()(续)投影运算的输出一个(无名字)的关系,包含指定的那些属性,而元组数量与输入关系相比可能相同,也可能要少(消除重复元组时)

投影运算的例1

name,class

(student)student-nonameclass1JonesA12SmithA23KateA2student?nameclassJonesA1SmithA2KateA2第二十二页,共六十八页,2022年,8月28日投影运算()(续)投影运算的例2

class(student)student-nonameclass1JonesA12SmithA23KateA2student?classA1A2第二十三页,共六十八页,2022年,8月28日并,交,差运算–

例子关系r,s:

rs:AB121AB23rsAB1213AB12213r–s:AB11AB2rs:第二十四页,共六十八页,2022年,8月28日并,交,差运算并,交,差运算(二元)r

s的结果是出现在r或者s或者两者中的元组集合

r

s={t|trorts}

同时出现在r和s的元组,在结果中只出现一次r-s的结果是在r中出现,但是不在s中出现的元组集合

r

-s={t|trandts}rs的结果是在r中以及在s中同时出现的元组集合

r

s={t|t

randt

s}第二十五页,共六十八页,2022年,8月28日并,交,差运算(续)并非任意两个关系都可以进行交/并/差运算!为使r

s/

r

-s/

r

s有效,必须满足以下条件1、r和s的属性数目相等2、r和s的对应属性相容(名字可不同,但类型相同或相近)r的第1个属性和s的第1个属性相容,r的第2个属性和s的第2个属性相容……并,交,差运算的输出一个(无名字的)新关系,属性名以第一个输入关系r为准第二十六页,共六十八页,2022年,8月28日并,交,差运算(续)并运算的例1

rsABC367257723443rsABC443345257ABC367257723443345?第二十七页,共六十八页,2022年,8月28日并,交,差运算(续)并运算的例2

rsABC367257723443rsCDE443345257ABC367257723443345?第二十八页,共六十八页,2022年,8月28日思考r

s=s

r,对么

?

第二十九页,共六十八页,2022年,8月28日并,交,差运算(续)差运算的例子

r-sABC367257723443rsABC443345257ABC367723?第三十页,共六十八页,2022年,8月28日并,交,差运算(续)交运算的例子

rsABC367257723443rsABC443345257ABC443257?第三十一页,共六十八页,2022年,8月28日思考关系代数/集合代数中,并和差是基本运算,但是交却是附加运算。为什么?RSR-SR-(R-S)R

S第三十二页,共六十八页,2022年,8月28日思考我们可以用表达式R-(R-S)来重写RS

,即用差运算来代替交运算。交运算是可替代的,所以它是非基本(附加)的,而并、差运算不可替代,所以是基本的。RSR-SR-(R-S)R

S第三十三页,共六十八页,2022年,8月28日笛卡儿积运算(x)–

例子关系r,s:rx

s:AB12AB11112222CD1010201010102010EaabbaabbCD10102010Eaabbrs第三十四页,共六十八页,2022年,8月28日笛卡儿积运算(x)笛卡尔积运算(二元)r

×s的结果是所有这样的元组对集合:一个元组来自r,另一个来自s

r

×

s={tq|trandqs}

元组对tq

表示将两个元组t和q连接起来得到的一个新元组第三十五页,共六十八页,2022年,8月28日笛卡儿积运算(x)(续)笛卡儿积运算的输出设若r有A个属性,s有B个属性,那么r

×s:有A+B个属性,前A个来自r,后B个来自s设若r有X个元组,s有Y个元组,那么r

×s:有X×Y个元组(X个元组和Y个元组共有X×Y种可能组合)第三十六页,共六十八页,2022年,8月28日笛卡儿积运算(x)(续)笛卡儿积运算的例1

rxsAB12111122221010201010102010aabbaabbCD10102010EaabbABCDErs第三十七页,共六十八页,2022年,8月28日笛卡儿积运算(x)(续)要点:属性重名时,加上关系名前缀如果r和s有属性同名,那么r

×s中势将包含两个重名的属性。为了区别这些属性,需要在它们前面加上原来的关系名作为前缀(r.或s.)对于只出现在r中的属性名,或者只出现在s中的属性名,在r

×s的结果关系中不加上关系名前缀第三十八页,共六十八页,2022年,8月28日笛卡儿积运算(x)(续)AR.BR.CS.BS.CD123456R×SABC123RBCD456S笛卡儿积运算的例2第三十九页,共六十八页,2022年,8月28日运算的复合:关系代数表达式一个关系运算+输入关系,本身就是一个简单的关系代数表达式例如,rxs,1=1(r)可以用多个运算的复合来构建复杂的关系代数表达式例如,A=C(rxs)AB12CD10102010EaabbrsAB11112222CD1010201010102010Eaabbaabbrxs第四十页,共六十八页,2022年,8月28日运算的复合:关系代数表达式(续)ABCDE122102020aabAB11112222CD1010201010102010EaabbaabbA=C(rxs)第四十一页,共六十八页,2022年,8月28日笛卡尔积是连接两个关系的元组生成结果,这种连接是无条件(任意)的如果希望两个关系的元组相连接时遵循一定的条件,则可以使用(θ)连接运算第四十二页,共六十八页,2022年,8月28日连接运算连接运算(又称θ连接,二元)从两个关系的笛卡尔积中选取属性间满足一定条件的元组

r

s={tq|trandqsand

tr[A]θts[B]}

A和B:分别为R和S上度数相等且可比的属性组θ:比较运算符AθB第四十三页,共六十八页,2022年,8月28日连接运算(续)连接运算的例子R

S

C<E第四十四页,共六十八页,2022年,8月28日连接运算(续)应用举例:S:学生表;C:班级表;问:所有学生的姓名和班主任?姓名班主任小张老王小刘老陈小李老王姓名班号小张1小刘2小李1S班号班主任1老王2老陈C姓名,班主任

(SC)S.班号=C.班号第四十五页,共六十八页,2022年,8月28日连接运算-等值连接两类特殊连接运算等值连接:θ为“=”的连接运算,即从输入关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组

r

s={tq|trandqsand

tr[A]=ts[B]}

A=B第四十六页,共六十八页,2022年,8月28日连接运算-等值连接(续)等值连接的例子R

S

R.B=S.B第四十七页,共六十八页,2022年,8月28日连接运算-自然连接自然连接():一种特殊的连接运算,要求两个关系连接的元组在同名属性上相等,并且在连接后的结果中去掉重复的同名属性。自然连接运算的输出一个(无名字的)新关系,包含r和s的所有属性,但要去除多余的同名属性。新关系的元组,由那些匹配的r元组和s元组(在同名属性上取相同值)连接而成,并且要去掉多余的同名属性值

第四十八页,共六十八页,2022年,8月28日连接运算-自然连接(续)自然连接运算的例子rABCDa1c3b2d4c3e6BDE36f24g36hrssABCDEb2d4gc3e6fc3e6h第四十九页,共六十八页,2022年,8月28日连接运算-自然连接(续)自然连接可等价表示为其它运算组成的式子,例如:

r(A,B,C,D),s(B,D,E)r

s

A,r.B,C,r.D,E(r.B=s.Br.D=s.D(rxs))

第五十页,共六十八页,2022年,8月28日重命名运算()大多数关系运算(关系表达式)的结果是一个无名字的关系重命名运算(一元)的作用允许我们对关系运算/关系代数表达式的结果进行命名,以便后面引用给一个已经有名字的关系起另一个新名字,允许我们通过多个名字来引用它

格式1:

x(E)

E是一个关系代数表达式,也可以是单个关系下标x是一个名字,表示将E的结果关系命名为x第五十一页,共六十八页,2022年,8月28日重命名运算(续)student-nonamesex1JonesMale2SmithMale3KateFemalestudentstudent-nonamesex1JonesMale2SmithMale?

sex=“Male”

(student)student-nonamesex1JonesMale2SmithMaleboy

boy(

sex=“male”

(student))第五十二页,共六十八页,2022年,8月28日重命名运算(续)格式2:

x(A1,A2,…,An)(E)

下标表示将E的结果关系命名为x,同时属性依次命名为A1,A2,…,An思考:下标中列出的属性个数n可以任意不受限制么?第五十三页,共六十八页,2022年,8月28日重命名运算(续)AR.BR.CS.BS.CD123456R×SABC133RBCD456S

V(RA,RB,RC,SB,SC,SD)

(

R×S)RARBRCSBSCRD123456V第五十四页,共六十八页,2022年,8月28日赋值运算()赋值运算编程语言中的赋值运算:将一个表达式的结果赋给变量关系代数中的赋值运算:将一个关系代数表达式的结果赋给关系(变量)形式varE表示将右边表达式E的结果,赋予左边的关系(变量)var第五十五页,共六十八页,2022年,8月28日赋值运算(续)用途对复杂的关系代数表达式,可以用如下方法简化将其中的一些子式分解出来,并赋值给“中间关系”

再利用中间关系代替这些子式重写原表达式第五十六页,共六十八页,2022年,8月28日赋值运算(续)例:

A(A=1(r.A,s.B(rxs))–

B=2(r.A,s.B(rxs)))A(r)

可以重写为

temp1

r.A,s.B(rxs)

result=A(A=1(temp1)–

B=2(temp1))A(r)

temp1

r.A,s.B(rxs)

temp2

A=1(temp1)–

B=2(temp1)

result=A

(temp2)A(r)第五十七页,共六十八页,2022年,8月28日除运算(÷)除运算(二元)笛卡尔积的逆运算设有关系R,S,T,满足T=RxS,则

T÷R=ST÷S=RT÷R有效的充分必要条件:T包含R的全部属性,并额外含有不在R中的属性——这些属性将会出现在除的结果中第五十八页,共六十八页,2022年,8月28日除运算(续)更一般地,如果RxS

T,则

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论