数据库系统概念6版形式化关系查询语言_第1页
数据库系统概念6版形式化关系查询语言_第2页
数据库系统概念6版形式化关系查询语言_第3页
数据库系统概念6版形式化关系查询语言_第4页
数据库系统概念6版形式化关系查询语言_第5页
已阅读5页,还剩109页未读 继续免费阅读

下载本文档

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

文档简介

DATABASESYSTEMCONCEPTS第六章形式化关系查询语言01二月20232数据库系统概念前言

6.1关系代数01二月20233数据库系统概念前言一、关系模型关系模型的数学定义1域定义:值的集合,一组域D1,D2,…,Dn。2笛卡尔积定义:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}集合元素:(d1,d2,…,dn)为n元组。基数:若Di为有限集,mi为Di的取值个数,则笛卡尔积的基数为:m=Πmi01二月20234数据库系统概念前言一、关系模型笛卡尔积为一个二维表。表的行对应一个元组,表的每列对应一个域。表的行数为m。例如,给出三个域D1=男人集合={张华,李平}

D2=女人集合={刘琴,许芳}D3=儿童集合={张立新,李国庆}

D1×D2×D3={(张华,刘琴,张立新),(张华,刘琴,李国庆),…,(李平,许芳,李国庆)}三个域的元素穷举结合一遍形成的表,共计8行01二月20235数据库系统概念前言二、关系模式关系模式及关系定义关系模式由关系名、属性、域、属性与域之间的映象、完整性约束、属性间函数依赖定义。一般只取关系名、属性名表示。关系模式:R=(A1,A2,…,An),R:关系名属性名:Ai(1≤i≤n)属性集:U={A1,A2,...,An},R=(U)关系的目:n,n=1,单元关系,n=2,二元关系

01二月20236数据库系统概念前言二、关系模式关系:定义为D1×D2×…×Dn的子集,有实际意义。例如,家庭关系,同属相关系关系表示:

r或r(R),元组表示:tr={t1,t2,…,tm}ti∈D1×D2×…×Dn,1≤i≤mrD1×D2×…×Dn字段表示:Ak(ti),ti在属性Ak上的取值01二月20237数据库系统概念前言二、关系模式关系子模式:R=(X),X为{A1,A2,…,An}子集,部分属性形成的投影元组投影:ti(X),元组的部分属性值一个关系模式下可以建若干个关系,例如,学生关系模式下可以建:学生1,学生201二月20238数据库系统概念前言三、关系代数概述关系代数:一种抽象的查询语言,基于集合论,是DML的传统表达方式,表达关系的查询,插入,删除,修改等操作运算对象:元组运算结果:仍是关系,可以再参与其他关系运算,由此复合成各种复杂的操作集合运算:并、交、差、广义笛卡尔积。专用运算:选择、投影、连接、除、更名、赋值。01二月20239数据库系统概念前言三、关系代数概述五种基本运算:并、差、笛卡尔积、选择、投影,其他运算可以用基本运算表示。关系代数的运算符:比较运算符:大于(>),大于等于(≥),小于(<=),小于等于(≤),等于(=),不等于(≠)逻辑运算符:非(

),与(∧),或(∨)一.记号关系模式R=(A1,A2,…,An),关系r01二月202310数据库系统概念前言三、关系代数概述t∈r表示t是r的一个元组t[Ai]表示元组t在属性Ai的一个分量A={Ai1,Ai2,…,Aik},表示属性集U的部分A为属性组,A为{A1,A2,…,An},去掉{Ai1,Ai2,…,Aik}后剩余属性t[A]=(t[Ai1],t[Ai2],…,t[Aik])是元组t在A上的投影

tr⌒ts:元组的连接,tr∈r,ts∈s,r为n目,s为m目,tr⌒ts为n+m目的元组,前n个值属于r,后m个值属于s

01二月202311数据库系统概念前言三、关系代数概述样本表:1.教材中图6-22:employee雇员,works工作,company公司,manages经理2.学生=(学号,姓名,性别、年龄,系别)课程=(课程号,课程名,先行课号,学分)选课=(学号,课程号,成绩)01二月202312数据库系统概念前言三、关系代数概述学生

学号姓名性别年龄系别

98001张平男19计算机98002王欣女19计算机98003李华女20数学98004赵岩男18外语

01二月202313数据库系统概念前言三、关系代数概述课程

课程号课程名先行课号学分1数据库54

2数学null63软件工程544操作系统745数据结构746计算机网络43

7C语言

null

301二月202314数据库系统概念前言三、关系代数概述选课

学号课程号成绩9800119098001286980015929800258098002177

98002394

01二月202315数据库系统概念前言四、关系代数运算集合运算

1.并:r∪s≡

{t|t∈r∨t∈s}说明:r和s相同的目n,结果为关系仍为n目,作用是插入操作。2.差:r-s≡{t|t∈r∧ts}说明:r和s相同的目n,结果为关系仍为n目,由属于r而不属于s的元组组成,

作用是删除操作,修改操作:(r-s)∪s‘01二月202316数据库系统概念前言四、关系代数运算3.交:r∩s≡{t|t∈r∧t∈s}说明:r和s相同的目n,结果为关系仍为n目,由属于r也属于s的元组组成,运算可由并、差运算表示:r∩s≡r-(r-s)4.笛卡尔积:r×s≡

{tr⌒ts|tr∈r∧ts∈s}

说明:结果为关系是(n+m)目,前n列是r的元组,后m列是s的元组,区别相同属性加表名为前缀,元组连串,穷举性结合01二月202317数据库系统概念前言四、关系代数运算专门运算:选择、投影、连接、除

1.选择:σF(r)≡{t|t∈r∧F(t)=“真”}说明:将表r扫描一遍,从中选取满足给定条件F的元组形成新关系,用于表的检索。查找效率由比较次数决定,中间表行数应尽量小,F为逻辑表达式:(1)αθβ,α,β是属性、常量或简单函数,但不能同为常量,θ{,,,,,≠}(2)逻辑运算符

,∧,∨连成复合逻辑条件。01二月202318数据库系统概念前言四、关系代数运算例:找出年龄小于20岁且外语系的学生。解:σ年龄<20)∧系别=“外语”(学生)

结果为{(98004,赵岩,18,外语)}例

:找出所有学生。解:σT(学生)2.投影

ΠA(r)={t[A]|t∈r}

说明:从r中选择出若干属性列组成新的关系,是单表运算,A={Ai1,Ai2,…,Aik}

01二月202319数据库系统概念前言四、关系代数运算例:求所有学生的姓名、年龄。解:

Π姓名,年龄(学生)

结果为:{(张平,19),(王欣,19),(李华,20),(赵岩,18)}例:找出小于20岁的学生姓名和性别。解:

Π姓名,性别(σ年龄<20(学生))结果为:{(张平,男),(王欣,女),(赵岩,男)}01二月202320数据库系统概念前言四、关系代数运算例:找出已选课的学生的学号。解:Π学号(选课)结果为:{(98001),(98002)},投影之后,取消重复行,原表6个元组,变为两个,这是关系性质决定的.哪个性质?01二月202321数据库系统概念前言四、关系代数运算3.自然连接与条件连接自然连接:

r∞s={tr⌒ts[

B]|tr∈r∧ts∈S∧tr[B]=ts[B]}设关系R与S有共同属性B={B1,B2,…Bk},两关系的共同属性进行等值比较,值相同的连接成一个新元组,其属性是R的全部属性和S中去掉共同属性后的剩余部分01二月202322数据库系统概念前言四、关系代数运算说明:(1)两表有共同属性,没有,是笛卡尔积(2)比较是对应属性值间的等值比较(3)比较步骤:第一个表走一步,第二个表走一遍,二重循环。比较次数是两表行数之积,中间表要小,结果表行数取决相等的元组数(4)结果属性只保留共有一部分,不用前缀(5)主要作用是通过外码扩展其他属性(6)另一作用是一个表去选择另一表的元组01二月202323数据库系统概念前言四、关系代数运算基本运算表示:r∞S=ΠA1,A2,…,An,Bk+1,…,Bm(σAi1=B1∧Ai2=B2…∧Aik=Bk(r×s))例:找出选修数据库课程,且成绩大于90的学生姓名。分析:数据库在课程表中,成绩在选课表中,姓名在学生表中,通过自然连接,把属性凑齐。01二月202324数据库系统概念前言四、关系代数运算

解:(1)

Π姓名(σ课程名=“数据库”∧成绩>90(学生∞选课∞课程))解:(2)

Π姓名(σ成绩>90(σ课程名=“数据库”(课程)∞选课)∞学生)解:(3)

Π姓名((σ课程名=“数据库”(课程))∞(σ成绩>90(选课)∞学生)对比三种解,比较次数有差别吗?01二月202325数据库系统概念前言四、关系代数运算条件连接:称为θ连接。选取属性间满足比较条件的元组。记作

r∞s

AθB={tr⌒ts|tr∈r∧ts∈s∧tr(A)θts(B)}其中A和B分别是R和S上的度数相等且类型可比的属性组,θ是比较运算符或逻辑运算符连成的条件表达式说明:等价基本运算表达:

r∞s

AθB=σAθB(r×s)01二月202326数据库系统概念前言四、关系代数运算说明:两个关系合并成一个新的关系,先笛卡尔积再选择。主要解决属性名不一样的属性之间的值比较比较不仅是等值中间表的属性名有表前缀例:求课程名和先行课名?01二月202327数据库系统概念前言四、关系代数运算4.除象集:R=(X,Y),X,Y为R的属性组,当t[X]=x时,x在r中的象集

Yx={t[Y]|t∈r∧t[X]=x}理解:R的属性任分两组X,Y,任给值x,r中X部分等于x的行,在Y上的投影形成一个象集。每给具体的x,都有一个象集,可能是空。

01二月202328数据库系统概念前言四、关系代数运算

例:rABCX={A},Y={B,C}a1b1c2X=a1BCa1=BCa2b2c7b1c2a3b4c6b2c3a1b2c3b2c1a4b6c6a2b2c3X=a5BCa5=?

a1b2c101二月202329数据库系统概念前言四、关系代数运算除运算的定义:R=(X,Y),S=(Y),对应两个表r、s则:

r÷s={tr[X]|tr∈r∧SYx}说明:(1)对r中X的每个值x求象集,包含S的,X部分的值作为元组加入到结果关系(2)根据S划分R为X、Y两部分基本运算表达:

r÷S=ΠX(r)-ΠX(ΠX(r)×S-r)

01二月202330数据库系统概念前言四、关系代数运算rABC

s=BC

r÷s=Aa1b1c2b1c2a1a3b4c6b2c1a1b2c3b2c3a4b6c6a2b2c3s=C

r÷s=?

a1b2c1

c3

01二月202331数据库系统概念前言四、关系代数运算例:找出选修了所有课程的学生的学号:

解:Π学号,课程号(选课)÷Π课程号(课程)注意:1)除运算是包含判断

2)对语义“全部”、“所有”的处理

3)除运算要凑准格式

选课÷Π课程号(课程)是什么结果?01二月202332数据库系统概念前言四、关系代数运算四.关系代数查询实例

例:检索先行课号为‘5’的课程名。

课程号课程名先行课号学分

课程名t→

1数据库54→

数据库

2数学6软件工程

3软件工程544操作系统745数据结构746计算机网络43

7C语言3

解:Π课程名(σ先行课号=‘5’(课程))01二月202333数据库系统概念前言四、关系代数运算

例:找张平所选修全部课程的课程名和成绩。

学号姓名…

课程号课程名…

学号课程号成绩

u→

98001张平v→

1数据库w→

98001290

98002王欣2数学

98001186

98003李华3软件工程98001592

98004赵岩4操作系统98002580

5数据结构98002177

6计算机网络980023947C语言

第一步:(学生∞选课)

01二月202334数据库系统概念前言四、关系代数运算

学号姓名…课程号成绩

课程号课程名…u→

98001张平…290v→1数据库98001张平…1862数学98001张平…5923软件工程98002王欣…5804操作系统

98002王欣…1775数据结构

98002王欣…3946计算机网络

7C语言

第二步:(学生∞选课

∞课程)

01二月202335数据库系统概念前言四、关系代数运算

学号姓名…课程号成绩课程名…

u→

98001张平…290数学…98001张平…186数据库…98001张平…592数据结构…98002王欣…580数据结构…

98002王欣…177数据库…

98002王欣…394软件工程…

第三步:σ姓名=“张平”(学生∞选课

∞课程)

01二月202336数据库系统概念前言四、关系代数运算

学号姓名…课程号成绩课程名…

u→

98001张平…290数学…98001张平…186数据库…98001张平…592数据结构…

第四步:Π姓名,课程名,成绩(

σ姓名=张平(学生∞选课

∞课程))

01二月202337数据库系统概念前言

2.2关系代数基本运算

姓名课程名成绩

张平数学90张平数据库86张平数据结构92

问题:Π姓名,课程名,成绩(σ姓名=张平(学生)∞选课∞课程)对吗?

01二月202338数据库系统概念前言四、关系代数运算例:找出选了98001所选所有课程的学生学号。解:1.找出98001所选课的课号

Π课程号(σ学号=“98001”(选课))

2.找出其他同学的学号和所选课的课号

Π学号,课程号(选课)3.按学号分组作除法Π学号,课程号(选课)÷(Π课程号(σ学号=“98001”(选课))找出选修了98001所选所有课程的学生姓名,怎么写

01二月202339数据库系统概念前言

2.2关系代数基本运算例:找出不选修任何课程的学生姓名。解:1.所有学生的学号减去选课的学号Π学号(学生)-Π学号(选课)2.自然连接上学生表,投出姓名Π姓名(学生∞(Π学号(学生)-Π学号(选课)))

问题:找出不选修98001的任何课程的学生姓名?01二月202340数据库系统概念前言四、关系代数运算例:找出至少选修了98001所选修的一门课的学生姓名。解:Π姓名(学生∞(Π学号(选课∞(Π课程号(σ学号=“98001”(选课))))))第二个自然连接起什么作用?例:找出至少选修了一门其先行课号为5号课程的学生姓名。解:Π姓名(Π学号(σ先行课号=“5”(课程)∞选课)∞学生)

01二月202341数据库系统概念前言四、关系代数运算例:求至少选修了操作系统和数据结构课程的学生学号。解:Π学号,课程号(选课)÷Π课程号(σ课程名=“操作系统”V课程名=“数据结构”(课程))

还有其他写法吗?若“求选修了操作系统或数据结构课程的学生学号”。怎么写?01二月202342数据库系统概念前言四、关系代数运算关系代数其他运算1.更名运算ρx(e)为中间表e赋名xρx(A1,A2,…,An)(e)赋名x,属性更名为A1,A2,…An

更名的作用:同表连接,属性区分01二月202343数据库系统概念前言四、关系代数运算例:求选修数据库和数据结构的学生学号Πs1.学号

(σs1.课程名=“数据结构”∧s2.课程名=“数据库”(ρs1(课程∞选课)∞ρs2(课程∞选课))

s1.学号=s2.学号

例:求数据库课程的间接课程号?例:求数学成绩比王欣同学高的学生?01二月202344数据库系统概念前言四、关系代数运算2.赋值运算表名←关系代数表达式将表达式的结果赋值给一个表名。3.广义投影Π表达式as属性名,,...,表达式as属性名

(e)说明:e是中间表,表达式没有属性名,用as短语缺确定一个属性名。例:Π姓名,年龄+1as虚岁(学生)结果表的属性名为姓名,虚岁01二月202345数据库系统概念前言四、关系代数运算

4.聚集函数

ɡ聚集函数(属性)(e)聚集函数有sum(属性名),avg(属性名),min(属性名),max(属性名),count(属性名),count-distinct(属性名),结果是单属性单行的中间表,属性名:“聚集函数名(

属性名)”,若重新确定属性名,用as子句。ɡ

聚集函数(属性)as属性名(e)01二月202346数据库系统概念前言四、关系代数运算例ɡavg(成绩)(选课)结果:avg(成绩)86.5例:

ɡavg(成绩)as平均成绩(选课)结果:平均成绩86.5例:求数学的最高成绩ɡMax(成绩)(课程名=“数学”(课程)∞选课))01二月202347数据库系统概念前言四、关系代数运算分组聚集分组属性1,分组属性2,…ɡ聚集函数1(属性1),聚集函数2(属性2),…

(e)分组属性1,分组属性2,…ɡ聚集函数1(属性1)as属性名,聚集函数2(属性2)as属性名,…(e)例:学号ɡavg(成绩)(选课)结果:

学号

avg(成绩)

9800189.39800283.601二月202348数据库系统概念前言四、关系代数运算例学号

ɡavg(成绩)as平均成绩(选课)结果:学号平均成绩

9800189.39800283.6例:求选课三门及以上的学生姓名Π姓名(

σ选课次数>=3(学号

ɡcount(课程号)as选课次数(选课)))∞学生)01二月202349数据库系统概念前言四、关系代数运算5.空值1)值为空值的字段参加算术运算,结果为空。2)值为空值的字段参加比较运算,结果为unknown。3)值为空值的字段参加逻辑运算,结果为:

trueandunknown,结果为unknownfalseandunknown,结果为falseunknownandunknown,结果为unknowntrueorunknown,结果为truefalseorunknown,结果为unknownunknownorunknown,结果为unknownnot(unknown),结果为unknown01二月202350数据库系统概念前言四、关系代数运算4)选择运算,逻辑值为true,选中,为false或unknown,不选中。5)连接运算,按先笛卡尔积后选择处理,两元组共有属性中有空值,不匹配。6)投影后,同一属性下的空值视为同值。7)集合运算,类投影处理。8)聚集,分组时,同一属性下的空值视为同值。聚集属性中的空值,不参加聚集。但参加count聚集。01二月202351数据库系统概念前言四、关系代数运算6.外连接对自然连接的扩充1)左外连接左侧表的元组全保留,与右侧表不匹配的元组,用null填充。2)右外连接右侧表的元组全保留,与左侧表不匹配的元组,用null填充。3)全外连接左右侧表的元组全保留,不匹配的元组,用null填充。01二月202352数据库系统概念前言四、关系代数运算数据库修改删除:差运算与赋值运算实现删除运算。

r←r-e插入:并运算与赋值运算实现插入运算。r←r∪e更新:广义投影与赋值运算实现更新运算。例:在课程关系中增加计算机原理课程,解:课程←课程∪{(“8”,“计算机原理”,“5”,4)}01二月202353数据库系统概念前言四、关系代数运算注意:参照完整性例:插入刘林,插入刘林选的课程学生←学生∪{(“98005”,“刘林”,“男”,19,“物理”)}选课←选课∪{(“98005”,“1”,86)}例:将所有学生的年龄增加1岁。学生←Π学号,姓名,性别,年龄+1as年龄,系别(学生)01二月202354数据库系统概念前言四、关系代数运算例:将王欣从学生关系及选课关系中删掉。解:选课←选课-(Π学号(σ姓名=“王欣”(学生)∞选课)

学生←学生-(σ姓名=“王欣”(学生))例

:将学生关系中赵岩的年龄改为20岁:

r←Π学号,姓名,性别,20as年龄,系别(σ姓名=“赵岩”(学生))//元组学生←(学生-(σ姓名=“赵岩”(学生)))∪r01二月202355数据库系统概念前言五、关系代数运算小结查询的表达不是唯一的,各个表达式有效率上的差别。自然连接有扩展属性的作用,还有选择元组的作用除运算是包含的运算,可以处理“全部”一类问题。通过赋值运算可以分几步完成一个复杂的查询几个典型的查询表达式的分析01二月202356数据库系统概念前言五、关系代数运算小结例:求选修了1号或2号课程的学号 方案1:

∏学号(课程号=“1”∨课程号=“2”(选课))

方案2:∏学号(课程号=“1”

(选课))∪∏学号(课程号=“2”(选课))01二月202357数据库系统概念前言五、关系代数运算小结例:求同时选修了1号和2号课程的学生号错误的写法:∏学号(课程号=“1”课程号=“2”

(选课))正确的写法:∏学号(课程号=“1”

(选课))∩∏学号(课程号=“2”

(选课))01二月202358数据库系统概念前言五、关系代数运算小结例:求选修了1号而没有选2号课程的学号∏学号(课程号=“1”

(选课))-∏学号(课程号=“2”

(选课))例:求未选修1号课程的学生号方案1:∏学号(学生)-∏学号(课程号=“1”

(选课))方案2:∏学号(课程号≠“1”

(选课))//有些同学选了很多课包括课程号为1的哪个对?01二月202359数据库系统概念前言五、关系代数运算小结思考题:例:找出年龄最小的同学姓名,不用聚集函数例:求仅选修了1号课程的学生号例:找出选修且仅选修了数据库和数据结构的学生姓名

01二月202360数据库系统概念前言五、关系代数运算小结供应商S=(SNO(供应商号),SN(供应商名),CITY(城市))SSNOSN

CITY

S1精益天津

S2万胜北京

S3东方北京

S4泰隆上海

S5康建南京01二月202361数据库系统概念前言五、关系代数运算小结零件P=(PNO(零件号),PN(名称),COLOR(颜色),W(重量))PPNO

PN

COLOR

W

P1螺母红12P2螺栓绿17P3螺丝刀蓝14P4螺丝刀红14P5凸轮蓝40P6齿轮红3001二月202362数据库系统概念前言五、关系代数运算小结工程项目J=(JNO(项目号),JN(项目名),CITY(城市))JJNOJNCITY

J1三建北京

J2一汽长春

J3弹簧厂天津

J4造船厂天津

J5机车厂唐山

J6无线电厂常州

J7半导体厂南京01二月202363数据库系统概念前言五、关系代数运算小结供应SPJSNOPNOJNOQTY(数量)

S1P1J1200S1P1J3100S1P1J4700S1P2J2100S2P3J1400S2P3J2200S2P3J4500S2P3J540001二月202364数据库系统概念前言五、关系代数运算小结S2P5J1400S2P5J2100S3P1J1200S3P3J1200S4P5J1100S4P6J3300S4P6J4200S5P2J4100S5P3J1200S5P6J2200S5P6J450001二月202365数据库系统概念前言五、关系代数运算小结求(1)供应工程J1零件的供应商号。(2)供应工程J1零件P1的供应商名。(3)供应工程J1红色零件的供应商的信息。(4)不用天津供应商供应的红色零件的项目号。(5)用了S1供应商供应的全部零件的项目名。(6)不供应螺母和齿轮的供应商名。(7)不供应S1供应零件的供应商名。(8)供应数量大于200的蓝色螺丝刀的供应商名和项目名

01二月202366数据库系统概念前言六、

课本上的要点表代表一个实体集或联系集,一行一个实体属性域的笛卡尔积的子集元组变量用于对表扫描查找元组的顺序无关紧要域是原子的属性可以取空值null01二月202367数据库系统概念前言六、

课本上的要点数据库模式关系模式,表结构,R=(……)关系实例,表,r图2-1图2-7实体表是account、branch、customer、loan。联系表是depositor、borrower注意每个表的主码,实体完整性约束注意account、loan和两个联系表的外码。参照关系01二月202368数据库系统概念前言六、

课本上的要点查询语言过程化的:关系代数非过程化的:关系演算SQL两者都有关系代数的基本运算选择是对表依次扫描,按条件确定行投影是纵向选择并运算是求“或”01二月202369数据库系统概念前言六、

课本上的要点差是求“有…而无…”笛卡尔积是两表穷举结合,重名属性缀表名更名,一般是同表操作,如“找出…表中最大..”,见图2-17例图2-18用自然连接行吗?附加的关系代数运算交运算是求“和”,记住r∩s=r-(-s)例图2-1901二月202370数据库系统概念前言六、

课本上的要点自然连接外码作用,图2-20,金额在loan中自然连接可结合customer

account∞

depositor等价customer

depositor∞

account一个表查找另个表borrower∞

depositor用贷款表查存款表,表示既有贷款又有存款01二月202371数据库系统概念前言六、

课本上的要点除处理“对所有的”分组判包含,对齐格式,结果是R-S的属性例:图2-23是两个属性,按第一个属性分组,看包含图2-22的表。留第一个属性为结果聚集函数Count-distinct去掉重复行注意图2-28中间表的属性名是sum(salary)01二月202372数据库系统概念前言六、

课本上的要点作业6.2,6.11d,e6.136.1501二月202373数据库系统概念前言

6.2关系演算01二月202374数据库系统概念前言一、关系演算概述概念用一阶谓词演算表示关系的操作叫关系演算设关系r有元组t1,t2,…tm,则它对应一个谓词P,t1,t2,…,tm是P的成真指派,其它非r中的任意元组则是P的成伪指派。给出一个元组t,当它在r中时P(t)为真,否则P(t)为假。注意P(t)是一个谓词公式,它是由原子公式经复合运算而成。01二月202375数据库系统概念前言一、关系演算概述形式化定义{t|P(t)}表示所有使谓词P为真的元组集合t为元组变量P是公式由原子公式和运算符组成01二月202376数据库系统概念前言一、关系演算概述原子公式,为三类:

(1)t∈r为原子公式。表示t是r的一个元组。

(2)u[i]θv[j]是原子公式。u,v是元组变量,θ是比较运算符,u[i]θv[j]表元组u的第i个分量与元组v的第j个分量间的比较运算。

(3)u[i]θC是原子公式。C为常数,θ比较运算符,u[i]θC表示元组的第i个分量与常数的比较运算。01二月202377数据库系统概念前言一、关系演算概述公式的递归定义原子公式是公式如果P是公式,那么┑P也是公式如果P1,P2是公式,则P1

P2,

P1

P2,P1→

P2也是公式如果P(t)是公式,r是关系,则tr(P(t))和tr(P(t))

也是公式01二月202378数据库系统概念前言一、关系演算概述其中是“全称”量词,是“存在量词”,有或量词的变量为约束变量,否则为自由变量。

给定集合r={t1,t2,…,tn}tr(P(t))=P(t1)∧P(t2)∧…∧P(tn)tr(P(t))=P(t1)∨P(t2)∨…∨P(tn)

01二月202379数据库系统概念前言一、关系演算概述公式中运算符的优先次序为

(1)比较运算符:>,<,≤,≥,=,≠;

(2)量词,;

(3)“否定”:┑;

(4)“与”,“或”,“蕴含”:∧,∨,→。如果公式中使用括号,括号的优先级最高。01二月202380数据库系统概念前言一、关系演算概述公式的等价性P1

P2

┑(┑P1

┑P2)tr(P(t))

┑tr(┑P(t))P1

P2

┑P1P2TTTFFTTTTFFFFFTTTFTT┑pqpq┑pqp01二月202381数据库系统概念前言二、元组关系演算987654321CBA965643321CBArS965643CBA{t|tSt[A]>2}654987CBA{t|tr┑tS}01二月202382数据库系统概念前言二、元组关系演算768738798435CBA{t|ur(vS(u[A]>v[B]t[A]=u[B]t[B]=v[C]t[C]=u[A]))}987654321CBA965643321CBArS01二月202383数据库系统概念前言二、元组关系演算元组关系演算与关系代数的等价性(1)r∪S={t|t∈r∨t∈s}(2)r-S={t|t∈r∧┑t∈s}(3)σF(r)={t|t∈r∧F′}

(F′为F在谓词演算中的表示形式)01二月202384数据库系统概念前言二、元组关系演算(4)ΠAi1、Ai1,…,Aik(r)={t|u∈r(t[Ai1]=u[Ai1]∧t[Ai2]=u[Ai2]∧…∧t[Aik]=u[Aik]}或者

ΠAi1、Ai1,…,Aik(r)={t|u∈r(t[1]=u[Ai1]∧t[2]=u[Ai2]∧…∧t[k]=u[Aik]}结果元组有k个分量。01二月202385数据库系统概念前言二、元组关系演算

(5)r×s={t|u∈r(v∈s(t[1]=u[1]∧…∧t[n]=u[n]∧t[n+1]=V[1]∧…∧t(n+m)=V[m]))}注意:并、差、选择不用量词,投影、笛卡尔积用量词表示。量词是扫描一遍的意义,量词变量如同指针,依次定位在表中的各个元组上。

01二月202386数据库系统概念前言二、元组关系演算学生

学号姓名性别年龄系别

98001张平男19计算机98002王欣女19计算机98003李华女20数学

98004赵岩男18外语

01二月202387数据库系统概念前言二、元组关系演算课程

课程号课程名先行课号学分1数据库54

2数学63软件工程544操作系统745数据结构746计算机网络43

7C语言301二月202388数据库系统概念前言二、元组关系演算选课

学号课程号成绩9800119098001286980015929800258098002177

98002394

01二月202389数据库系统概念前言三、元组关系演算实例例

:检索学生关系中所有学生的情况。解:{t|t∈学生}选择运算不用量词,结果是学生表的全部属性

学号姓名性别年龄系别

…01二月202390数据库系统概念前言三、元组关系演算实例例

:求计算机系的学生姓名。解:{t|u∈学生(t[姓名]=u[姓名]∧u[系别]=“计算机”)}投影运算用量词,u对学生表扫描一遍,每一行确定是否选取结果:列是t[姓名]确定的属性,行是由u[系别]=“计算机”确定的各行01二月202391数据库系统概念前言三、元组关系演算实例

学号姓名性别年龄系别

u→98001张平男19计算机98002王欣女19计算机98003李华女20数学

98004赵岩男18外语

↓结果:姓名

张平王欣

01二月202392数据库系统概念前言三、元组关系演算实例

:求年龄大于20岁女学生的姓名和系别。解:{t|u∈学生(t[姓名]=u[姓名]∧t[系别]=u[系别]∧u[年龄]>20∧u[性别]=“女”)}有投影运算,用量词。结果:姓名系别

王欣计算机

李华数学01二月202393数据库系统概念前言三、元组关系演算实例

:找出选修了课程号为“5”的课程的学生的姓名和成绩。解:{t|u∈学生(v∈选课(t[姓名]=u[姓名]∧t[成绩]=v[成绩]∧u[学号]=v[学号]∧v[课程号]=“5”)}意义:u对学生表扫描一遍,定位在每一行时,v对选课表扫描一遍,确定是否选取u指向的行01二月202394数据库系统概念前言三、元组关系演算实例

学生

选课

结果

u→98001张平v→

98001290姓名成绩

98002王欣98001186张平92

98003李华98001

592王欣80

98004赵岩98002

5809800217798002394

01二月202395数据库系统概念前言三、元组关系演算实例例:找出选修了课程号为‘5’或‘3’的课程的所有学生的姓名、课程号和成绩。解:{t|u∈学生(v∈选课(t[姓名]=u[姓名]∧t[课程号]=v[课程号]∧t[成绩]=v[成绩]∧u[学号]=v[学号]∧(v[课程号]=‘5’∨v[课程号]=‘3’)]}结果:姓名课程号成绩

张平592王欣580王欣39401二月202396数据库系统概念前言三、元组关系演算实例例

:求选修了数学课程的学生姓名、课程名和成绩。解:{t|u∈学生(v∈课程(w∈选课(t[姓名]=u[姓名]∧t[课程名]=v[课程名]∧t[成绩]=w[成绩]∧u[学号]=w[学号]∧v[课程号]=w[课程号]∧v[课程名]=“数学”)}意义:u对学生表扫描一遍,定位在每一行时,v对课程表扫描一遍,w对选课表扫描一遍,确定是否选取u指向的行01二月202397数据库系统概念前言三、元组关系演算实例

学生

课程

选课

u→

98001

张平v→

1数据库w→

980012

98002王欣2数学

980011

98003李华3软件工程980015

98004赵岩4操作系统980025

5数据结构980021

6计算机网络9800237C语言结果:姓名课程名

成绩张平数学86

01二月202398数据库系统概念前言三、元组关系演算实例例:求选修了所有课程的学生姓名,成绩。解:{t|u∈学生(v∈课程(w∈选课(t[姓名]=u[姓名]∧t[成绩]=w[成绩]∧u[学号]=w[学号]∧v[课程号]=w[课程号])))}意义:U定位在一个学生上,v扫描一遍课程表,每定位在一门课上,就由w在选课表里找一个。如果v的每一个课,w都能找到一个,选取u指向的行。01二月202399数据库系统概念前言三、元组关系演算实例

学生

课程

选课

u→98001张平

v→

1数据库w→

980012

98002王欣2数学980011

98003李华3软件工程980015

98004赵岩4操作系统980025

5数据结构980021

6计算机网络9800237C语言结果:姓名成绩

01二月2023100数据库系统概念前言三、元组关系演算实例例:求选修了课程号为‘5’和‘3’的课程的所有学生的姓名

解:{t|u∈学生(v∈选课(w∈选课(t[姓名]=u[姓名]∧u[学号]=v[学号]∧u[学号]=w[学号]∧v[课程号]=’5’∧w[课程号]=’3’)))}意义:U定位在一个学生上,v扫描一遍选课表,w扫描一遍选课表,找一个v的课程号为5,w的课程号为3,选取u指向的行。01二月2023101数据库系统概念前言三、元组关系演算实例

学生

选课

选课

u→98001张平v→

980012

w→

980012

98002

王欣980011980011

98003李华980015980015

98004赵岩980025980025

温馨提示

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

评论

0/150

提交评论