关系代数

267 阅读3分钟

最近在准备软考,报的软件设计师。 因为专业不是计算机,所以在复习过程中有不少的知识盲点。 关系代数就是其中之一。

平常做项目,也会用到数据库相关的知识。但大部分都比较浅显,而且业务类似,用的技能也雷同,知识范围比较窄。

这次复习也算是拓展自己的知识面了。


词项的意义又分为两个方面:内涵( intension 或 connotation )和外延( extension 或 denotation ),后两者亦称“涵义”和“所指” -- 逻辑学十五讲。

内涵

关系代数是一种操作,作用在集合上,得到一个新集合。

特点

  1. 基于集合

  2. 各种操作:并,差,广义积,选择,投影,更名等

  3. 按照一定顺序操作

  4. 抽象,是mysql的基础。

类似于加减乘除的运算,作用在数字上,得到一个新数字。

外延

那关系代数可以分为两大类:集合操作和纯关系操作。

集合操作

回忆下初中知识,集合操作有哪些:并交补(关系代数中:并交差)。在关系代数中,新增一种:广义积。

纯关系操作

以上的知识大部分都是已经牢牢的连接在我们的神经元系统里了,但这一部分,建议先看看关系模型。这样一些词项之间的内涵的差别就理解了,统一语言,没有误会。

  1. 投影:词如其名,从纵向上,即列的角度上的操作
  2. 选择: 从横向上,选择特定元组。
  3. 连接

操作前提

并相容性

只有两个关系符合并相容性,才可以进行操作。具体来说,两个关系的属性数目相同,而且两个关系第i个属性的域必须相同,这样二者才可以进行操作。

操作详解

基本操作包括5种:并,差,积,选择,投影

基本操作

广义积

有若干个集合,从每个集合中取一个元素,构成新的元素,就是集合。参考关系模型

选择

对元组的选择。

投影

对属性列的选择

复杂操作

可以有并差操作获得。

连接

从普遍到个性的演化:

  1. theta连接:符合某些关系的元组
  2. 等值连接:关系为等值的theta连接
  3. 自然连接:相同属性等值的等值连接,这样就要求两个关系有相同属性

更复杂操作

  1. 属性值的减法
  2. 元组的提取

思路一

  1. 投影两个关系(R,S)的属性差M
  2. S和M的广义积SM
  3. 对(SM-R)投影和M相同的属性SMr
  4. M和SMr的差

思路二

  1. S是R的子集,则将R中属性值和S中相同的元组选出来
  2. 投影非S中属性的属性
  3. 去重

外连接

现实总是比理论复杂。实际中,总有一些元组的数据不完整,那么在和其他表连接时,这些不完整元组的数据是否要保留就有了侧重。可以保留左表所有的保留,也可以保留有右表所有的元组,也可以二表都保留。 根据这个原则,外连接分为

  1. 左外连接
  2. 右外连接
  3. 全外连接