关系代数

关系代数

0x00 关系操作

对关系进行操作,按照使用的工具不同分为两种,一是关系代数语言,另一个是关系演算语言

关系代数语言:用对关系的运算来表达查询要求

关系演算语言:用谓词来表达查询要求

而实际流行的数据查询语言是 SQL(structured query language),兼具两者特点

本章介绍关系代数

关系代数是一种抽象的查询语言,它用对关系二点运算来表示查询

关系代数:运算的对象是关系,运算的结果是关系,运算符有两类:集合运算符和专门的关系运算符

QQ截图20200507150411

###

一些记号

关系R 以及其对应一个元组的表示 和对应一个列的表示

QQ截图20200507150806

属性组 以及元组在属性组的分量 以及属性组的补集

QQ截图20200507151002

两个不同关系元组的连接

QQ截图20200507151140

像集 像集实际上是给出属性组的值,要求属性组的补集的值的集合

QQ截图20200507151305

QQ截图20200507151542

0x01 关系代数之传统运算符

并unionQQ截图20200507151954

​ 作并运算 要求两个关系 同质(属性组完全一样,每个属性的域都一样),得到的结果是元组的并,有重复会自动去重

QQ截图20200507152318

差differenceQQ截图20200507152406

​ 同样差运算也要求同质QQ截图20200507152441

交intersection

QQ截图20200507152553

QQ截图20200507152612

笛卡尔积cartesian productQQ截图20200507152758

笛卡尔积是吧两个关系的元组连接起来,排列组合的集的结果QQ截图20200507152859

0x02 关系代数之专门的运算符

选择selection

又称为限制,即找出满足限制条件的元组集合QQ截图20200507153549

QQ截图20200507153717

QQ截图20200507153748

投影 是从关系R中选择出若干属性列组成新的关系,由于可能取消了主码,所以可能新的关系中的元组会重复,那就要消除重复

QQ截图20200507154038

QQ截图20200507154243

连接equijoin 从两个关系的笛卡尔积中选取属性或属性组间满足一定条件的元组

QQ截图20200507154405

属性AB要可比

两类常见连接 等值连接 和 自然连接

等值连接

QQ截图20200507154802

​ 即属性A和属性B的值要相等

自然连接

QQ截图20200507154908

​ 自然连接是一种特殊的等值连接,A和B虽然不在同一个关系中,但是是同一个属性,值相等,那么就等值连接,然后去掉A或者B中的一列(因为重复了)

​ 自然连接还需要取消重复的元组

QQ截图20200507155409

QQ截图20200507155430

QQ截图20200507155452

悬浮元组 即两个关系R S 作自然或者等值连接时,指定的属性不相等,所以S或者R中的一些元组需要丢弃,这些被丢弃的元组就是悬浮元组。

QQ截图20200507155536

​ 不想丢弃悬浮元组时,就用外连接 outer join

QQ截图20200507155821

对前面的例子作外连接 左外连接 右外连接

QQ截图20200507155853

QQ截图20200507155932

除运算 Division 除运算比较复杂 R(x,y)➗S(y,z) (y是公共属性组) 即对 元组在X上分量的每一个值x,如果其在Y中对应的像 包含 S在Y上投影的集合(也就是S在Y上所有不同值的集合),那么这个值x就是新的关系P中的一个元组,可以看下面的例子

QQ截图20200507160437

QQ截图20200507160554