Skip to content
Go back

14-关系代数Relation Algebra

Published:  at  05:08 AM

关系代数Relation Algebra

概述

关系代数是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。关系代数的运算对象是关系(集合),运算结果亦为关系(集合)。

传统的集合运算

基本概念

设关系模式为R(A1,A2,...,An)R(A_1,A_2,...,A_n)

并运算(Union)

并运算的基本要求

所以进行并运算后,原本的两个n元关系,仍未n元关系,由属于R或属于S的元组组成 RS={ttRtS}R\cup S=\lbrace t|t\in R\vee t\in S\rbrace

简言之就是两个属性值完全一致并且属性取值域相同的两个表进行并运算,只是最后要去重

两个关系

进行并运算后

交运算(Intersection)

交运算的基本要求

进行交运算后仍未一个n元关系,由所有既属于R又属于S的元组组成 RS={ttRtS}R\cap S=\lbrace t|t\in R\wedge t\in S\rbrace RS=R(RS)R\cap S=R-(R-S)

差运算(Difference)

差运算的基本要求

进行差运算后仍未一个n元关系,由所有属于R却不属于S的元组组成 RS={ttRtS}R- S=\lbrace t|t\in R\wedge t\notin S\rbrace

笛卡尔积(Cartesian Product)

R为n元关系,包含k1k_1个分组,S为m元关系,包含k2k_2个分组

经过笛卡尔积的关系,具有n+m元,即n+m列的集合,元组的前n列是R的一个元组,元组的后m列是S的一个元组。一共具有k1k2k_1*k_2个元组

R×S={tr  tstrRtsS}R\times S=\lbrace \overbrace{t_r\ \ t_s}|t_r\in R \wedge t_s\in S\rbrace

专门的关系运算

选择运算(Selection)

选择又被称为限制(Restriction),选择运算符的含义是在关系R中选择满足给定条件的诸元组,即选择是对元组的选择,选择的结果属性个数不会发生改变 σF(R)={ttRF(t)=true}\sigma_{F}(R)=\lbrace t|t\in R\wedge F(t)=true\rbrace 上面的F表示选择条件,是一个逻辑表达式,结果是布尔值

例如:Student(name,age,score,dept)是一个学生信息表,属性分别是姓名,年龄,分数和专业,现在通过选择运算获取所有专业为CS的元组

σdept=CS(Student)\sigma_{dept='CS'}(Student)

投影运算(Projection)

投影运算符的含义是从R中选择出若干个属性列组成新的关系,简言之就是从关系中选择出完整属性列的子集组成一个新关系

πA(R)={t[A]tR}\pi_A(R)=\lbrace t[A]|t\in R\rbrace 其中的A表示R中的属性列

这里需要注意的是经过投影之后,不仅原关系中的某些列取消了,部分元组也会取消,即不仅列数减少,行数也有可能减少,这是由于去除某些列后,原关系的限制关系解除,某些元组发生重复

例如上文的学生信息表,现在从其中只投影(筛选)专业这个属性,则必然重复专业的元组会被删除,只保留一个 πdept(Student)\pi_{dept}(Student)

投影多个属性的情况下按照如下方式书写,或将多个属性定义为一个属性列 πname,score,dept(Student)\pi_{name,score,dept}(Student)

连接运算(Join)

连接也被称为θ\theta连接,连接运算的含义表示从两个关系的笛卡尔积中选择出属性间满足一定条件的元组

RAθBS={tr  tstrRtsStr[A]θts[B]}R \operatorname*{\Join}\limits_{A\theta B} S=\lbrace \overbrace{t_r\ \ t_s}|t_r\in R \wedge t_s\in S\wedge t_r[A]\theta t_s[B]\rbrace

其中A和B分别表示的是R和S上度数相等且可比的两个属性组,θ\theta表示比较运算符

连接运算就是从R和S的笛卡尔积R×SR\times S中选取A属性组上的值与B属性组上值满足比较关系θ\theta 的元组

等值连接

等值连接就是比较关系是等于的连接运算(θ\theta = “=”),等值连接就是从笛卡尔积中选取A和B属性值相等的元组,即 RA=BS={tr  tstrRtsStr[A]=ts[B]}R \operatorname*{\Join}\limits_{A= B} S=\lbrace \overbrace{t_r\ \ t_s}|t_r\in R \wedge t_s\in S\wedge t_r[A]= t_s[B]\rbrace

自然连接

自然连接是特殊的等值连接,其在等值连接的基础上要求两个关系中进行比较的分量必须是相同的属性组,并且最后的运算结果中只保留两个属性中的一个即可(即在结果中去掉重复的属性列)

自然连接的含义是R和S的相同属性组的值相等 RS={tr  tstrRtsStr[A]=ts[A]}R \Join S=\lbrace \overbrace{t_r\ \ t_s}|t_r\in R \wedge t_s\in S\wedge t_r[A]= t_s[A]\rbrace

内外连接

可以看到两个关系在做自然连接时,满足比较关系的元组被保留,不满足比较关系的元组被舍弃,这就说明R和S两个关系中都可能会有元组被舍弃,这种连接方式被称为内连接

与之相对的一种连接方式称为外连接,外连接会将某个关系中不满足条件的元组保留下来,并在他的其他属性上填控制NULL,如果把左边关系R中要舍弃的元组保留下来,则称为左外连接,如果将右边关系S中要舍弃的元组保留下来,称为右外连接

除运算(Division)

除运算


Suggest Changes

Previous Post
3-Lombok应用
Next Post
2-Yaml文件