2.4 关系代数 数据库系统概论

目录

2.4.1 传统的集合运算 (二目运算)

(1) 并(Union)

(2)差(Except)

(3) 交(Intersection)

(4) 笛卡尔积

2.4.2 专门的关系运算

专门的关系运算:几个记号

专门的关系运算

1.选择

2. 投影(Projection)

3. 连接(Join)

连接:等值连接

自然连接

悬浮元组(Dangling tuple)

外连接(Outer Join)

4. 除运算(Division)


关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。关系代数运算对象是关系,运算结果也是关系,关系代数的运算符有两类:集合运算符和专门的关系运算符

传统的集合运算是从关系的“水平”方向,即行的角度进行专门的关系运算不仅涉及行而且涉及列。比较运算符和逻辑运算符用来辅助专门的关系运算符进行操作。

2.4.1 传统的集合运算 (二目运算)

前提(交并差)设关系R和关系S具有相同的目  n(即两个关系都有n个属性),且相应的属性取自同一个域,𝑡 是元组变量, 𝑡 ∈ 𝑅 表示𝑡是R的一个元组。

(1) 并(Union)

 关系R和关系S的并记作:

 R\cup S=\left \{ t|t\varepsilon R\vee t\varepsilon S \right \} 。

结果仍为n目关系,由属于R或属于S的元组组成。

注意并非R或S属性都必须相同,只要取在同一个域中即可。而组成的列数应还为n(依然为n目关系)。

(2)差(Except)

 R - S :关系R和关系S的差记作:

仍为n目关系,由属于R而不属于S的所有元组组成

(3) 交(Intersection)

  R∩S:关系R和关系S的交记作:

仍为n目关系,由既属于R又属于S的元组组成,R ∩ S = R – ( R - S )

(4) 笛卡尔积

和我们之前章节中提到的笛卡尔积相同。

2.4.2 专门的关系运算

专门的关系运算:几个记号

先引入几个记号

(1)R, t∈R ,  t\left [ Ai \right ] 

设关系模式为 R(A1,A2,…,An )

它的一个关系设为R

t∈R表示t是R的一个元组

t[Ai ]则表示元组t中相应于属性Ai的一个分量。

(2)

可以参照集合的思想来理解。

(3)

(4)

给定一个关系R(X,Z),X和Z为属性组。

当t[X]=x时,x在R中的象集(Images Set)为: Zx ={t[Z]|t ∈ R,t[X]=x}

表示R中属性组X上值为x的诸元组在Z上分量的集合。

举例:

专门的关系运算

1.选择

含义:在关系R中选择满足给定条件的诸元组。

记做:

选择条件是一个逻辑表达式,取值为“真”或“假”。

基本形式为:X1 θ Y1

θ表示比较运算符,它可以是>,≥,<,≤,=或<>

X1,Y1是属性名,或者常量,或者简单函数

在基本的选择条件上,还可以用逻辑运算符非¬,与∧,或∨ 连接各条件表达式。(涉及多个条件的情况)

理解为在表内查询符合条件 f 的一整个(或多个)元组(行)

选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算。

2. 投影(Projection)

含义:从R中选择出若干属性列组成新的关系

记作:

A:R中的属性列

投影操作主要是从列的角度进行运算。

投影之后不仅取消了原关系中的某些列,因为取消了某些列,可能出现重复的行,应取消这些重复元组。(之所以出现重复行是因为投影所造成的信息丢失)。

3. 连接(Join)

也称为θ连接

含义:从两个关系的笛卡尔积中选取属性间满足一定条件的元组。

连接运算从R和S的广义笛卡尔积R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系θ的元组。

理解:在笛卡尔积张成的空间中选取符合条件的列,和选择有些像但是选择是单表,而笛卡尔积是进行两表的交互。

连接:等值连接

两类常用连接运算:等值连接,自然连接。

自然连接

自然连接是一种特殊的等值连接

两个关系中进行比较的分量必须是同名的属性组

在结果中把重复的属性列去掉。

一般连接操作是从行的角度进行运算,自然连接还需要取消重复列,是同时进行行和列的运算。

悬浮元组(Dangling tuple)

两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组

外连接(Outer Join)

如果把悬浮元组也保存在结果关系中,而在其他属性上填空值 (Null),称为外连接

左外连接(LEFT OUTER JOIN或LEFT JOIN),只保留左边关系R中的悬浮元组。右外连接(RIGHT OUTER JOIN或RIGHT JOIN),只保留右边关系S中的悬浮元组。

4. 除运算(Division)

定义:给定关系𝑅(𝑋, 𝑌) 和𝑆(𝑌, 𝑍) ,其中𝑋, 𝑌, 𝑍为属性组。R中的Y与S 中的Y可以有不同的属性名,但必须出自相同的域集。

R与S的除运算得到一个新的关系P(X),P 是 R 中满足下列条件的元组在 X 属性列上的投影:元组在X上分量值𝑥的象集𝑌𝑥包含S在Y上投影的集合。

记做:

含义:设关系R除以关系S的结果为关系T,则T包含所有在R中但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。

运用:解决“至少”的问题,首先我们被除数所得象集必须包含除数,因此我们得到的结果的组的象集是“至少”问题的答案。

最近更新

  1. TCP协议是安全的吗?

    2024-03-13 14:10:01       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-13 14:10:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-13 14:10:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-13 14:10:01       20 阅读

热门阅读

  1. vue的导入

    2024-03-13 14:10:01       22 阅读
  2. nextTick的作用

    2024-03-13 14:10:01       21 阅读
  3. 游戏盾SDK是如何实现智能加速的?

    2024-03-13 14:10:01       22 阅读
  4. Python 内置函数

    2024-03-13 14:10:01       18 阅读
  5. Docker一键部署WordPress

    2024-03-13 14:10:01       22 阅读