【数据库系统】第四讲 关系代数

4.1 关系代数概述

1、关系代数运算的特点

基于集合,提供了一系列的关系代数操作:并、差、笛卡尔积(广义积)、选择、投影和更名等基本操作
以及交、连接和关系除等扩展操作,是一种集合思维的操作语言。
关系代数操作以一个或多个关系为输入,结果是一个新的关系。
用对关系的运算来表达查询,需要指明所用操作, 具有一定的过程性。

是一种抽象的语言,是学习其他数据库语言,如SQL等的基础

2、关系代数运算的基本操作

关系代数操作:集合操作和纯关系操作

3、关系代数的意义

4.2 关系代数的基本操作

某些关系代数操作,如并、差、交等,需满足“并相容性”
并相容性
参与运算的两个关系及其相关属性之间有一定的对应性、可比性或意义关联性
定义:关系R与关系S存在相容性,当且仅当:

  • 关系R和关系S的属性数目必须相同;
  • 对于任意i,关系R的第i个属性的域必须和关系S的第i个属性的域相同
    假设:R(A1, A2, …, An), S(B1, B2, …,Bm),R和S满足并相容性:n = m 并且Domain(Ai) = Domain(Bi)

1、“并”操作

数学描述:R∪S ={ t | t∈R v t∈S } ,其中t是元组
并运算是将两个关系的元组合并成一个关系,在合并时去掉重复的元组。R ∪S 与S ∪R 运算的结果是同一个关系

2、“差”操作

R-S ={ t | t∈R^t∉S }

3、“笛卡尔积”操作

关系R (<a1 ,a2, …, an >) 与关系S(<b1, b2, …, bm>) 的广义笛卡尔积 (简称广义积,或积或笛卡尔积)运算结果也是一个关系,记作:R x S, 它由 关系R中的元组与关系S的元组进行所有可能的拼接(或串接)构成。


两个关系R和S,它们的属性个数分别为n和m,则笛卡尔积R x S的属性个数=n+ m
两个关系R和S,它们的元组个数分别为x和y, 则笛卡尔积R x S的元组个数= x × y

4、“选择”操作



优先次序自高至低为{ 括弧;θ;﹁;∧;∨} ,其中θ是比较运算符

5、“投影”操作

定义:给定一个关系R, 投影运算结果也是一个关系,它从关系R中选出属性包含在A中的列构成。
投影运算可以对原关系的列在投影后重新排列

小结

4.3 关系代数的扩展操作

1、“交”操作

R ∩ S = R-(R -S) = S-(S-R)

扫描二维码关注公众号,回复: 11124901 查看本文章

2、“θ-连接”操作

投影与选择操作只是对单个关系(表)进行操作, 而实际应用中往往涉及多个表之间的操作, 这就需要θ-连接操作
比如:查询数据结构成绩在90分以上的学生姓名(涉及Student, Course, SC)
给定关系R和关系S, R与S的θ连接运算结果也是一个关系,它由关系R和关系S的笛卡尔积中, 选取R中属性A与S中属性 B之间满足θ条件的元组构成。

DBMS可直接进 行连接操作,而不必先形成笛卡尔积,上述步骤只是便于理解。

3、“等值-连接”操作

给定关系R和关系S, R与S的等值连接运算结果也是一个关系,它由关系R和关系S的笛卡尔积中选取R中属性A与S中属性 B上值相等的元组所构成。

4、“自然连接”操作

给定关系R和关系S, R与S的自然连接运算结果也是一个关系,它由关系R和关系S的笛卡尔积中选取相同属性组B上值相等的元组所构成。
在这里插入图片描述

小结

4.4 关系代数操作的组合与应用

1、集合操作思维训练


2、注意语义错误




3、书写关系代数的思维

检索是否涉及多个表,如不涉及,则可直接采用并、差、交、选择与投影,只要注意条件书写正确与否即可
如涉及多个表,则检查

  • 能否使用自然连接,将多个表连接起来(多数情况是这样的)
  • 如不能,能否使用等值或不等值连接(θ-连接)
  • 还不能,则使用广义笛卡尔积,注意相关条件的书写

连接完后,可以继续使用选择、投影等运算,即所谓数据库的“选投联”操作

4.5 关系代数的复杂扩展操作

(1)“除”操作

除法运算经常用于求解“查询…全部的/所有的…”问题
前提条件:给定关系R(A1,A2, …,An)为n度关系,关系S(B1,B2, …,Bm)为m度关系。如果可以进行关系R与关系S的除运算,当且仅当:属性集{ B1,B2, …, Bm}是属性集{ A1,A2, …,An }的真子集,即m < n。
定义:关系R 和关系S的除运算结果也是一个关系,记作R÷S,分两部分来定义

  • 设属性集{C1,C2, …,Ck } = {A1,A2, …,An } –{B1,B2, …,Bm}, 则有k=n–m则R÷S结果关系是一k度(n-m度)关系,由{C1,C2, …,Ck }属性构成
  • 再设关系R (<a1, …, an>)和关系S (<b1, …, bm>), 那么R÷S结果关系为 元组<c1, …, ck>的集合,元组<c1, …, ck>满足下述条件: 它与S中每一个元组<b1, …, bm>组合形成的一个新元组都是R中的某一个元组<a1, …, an> 。(其中,a1, …, an ,b1, …, bm, c1, …, ck分别是属性A1, …,An,B1, …,BmC1 , …,Ck 的值)

2、“外连接”操作

两个关系R与S进行连接时,如果关系R(或S)中的元组在S(或R)中找不到相匹配的元组,则为了避免该元组信息丢失,从而将该元组与S(或R)中假定存在的全为空值的元组形成连接,放置在结果关系中,这种连接称之为外连接(Outer Join)。
外连接= 自然连接(或θ连接) + 失配的元组(与全空元组形成的连接)
外连接的形式:左外连接、右外连接、全外连接

  • 左外连接= 自然连接(或θ连接) + 左侧表中失配的元组
  • 右外连接= 自然连接(或θ连接) + 右侧表中失配的元组
  • 全外连接= 自然连接(或θ连接) + 两侧表中失配的元组

小结

发布了75 篇原创文章 · 获赞 28 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Swocky/article/details/104557324