最近在准备软考,报的软件设计师。 因为专业不是计算机,所以在复习过程中有不少的知识盲点。 关系代数就是其中之一。
平常做项目,也会用到数据库相关的知识。但大部分都比较浅显,而且业务类似,用的技能也雷同,知识范围比较窄。
这次复习也算是拓展自己的知识面了。
词项的意义又分为两个方面:内涵( intension 或 connotation )和外延( extension 或 denotation ),后两者亦称“涵义”和“所指” -- 逻辑学十五讲。
内涵
关系代数是一种操作,作用在集合上,得到一个新集合。
特点:
-
基于集合
-
各种操作:并,差,广义积,选择,投影,更名等
-
按照一定顺序操作
-
抽象,是mysql的基础。
类似于加减乘除的运算,作用在数字上,得到一个新数字。
外延
那关系代数可以分为两大类:集合操作和纯关系操作。
集合操作
回忆下初中知识,集合操作有哪些:并交补(关系代数中:并交差)。在关系代数中,新增一种:广义积。
纯关系操作
以上的知识大部分都是已经牢牢的连接在我们的神经元系统里了,但这一部分,建议先看看关系模型。这样一些词项之间的内涵的差别就理解了,统一语言,没有误会。
- 投影:词如其名,从纵向上,即列的角度上的操作
- 选择: 从横向上,选择特定元组。
- 连接
- 除
操作前提
并相容性
只有两个关系符合并相容性,才可以进行操作。具体来说,两个关系的属性数目相同,而且两个关系第i个属性的域必须相同,这样二者才可以进行操作。
操作详解
基本操作包括5种:并,差,积,选择,投影
基本操作
广义积
有若干个集合,从每个集合中取一个元素,构成新的元素,就是集合。参考关系模型
选择
对元组的选择。
投影
对属性列的选择
复杂操作
交
可以有并差操作获得。
连接
从普遍到个性的演化:
- theta连接:符合某些关系的元组
- 等值连接:关系为等值的theta连接
- 自然连接:相同属性等值的等值连接,这样就要求两个关系有相同属性。
更复杂操作
除
- 属性值的减法
- 元组的提取
思路一
- 投影两个关系(R,S)的属性差M
- S和M的广义积SM
- 对(SM-R)投影和M相同的属性SMr
- M和SMr的差
思路二
- S是R的子集,则将R中属性值和S中相同的元组选出来
- 投影非S中属性的属性
- 去重
外连接
现实总是比理论复杂。实际中,总有一些元组的数据不完整,那么在和其他表连接时,这些不完整元组的数据是否要保留就有了侧重。可以保留左表所有的保留,也可以保留有右表所有的元组,也可以二表都保留。 根据这个原则,外连接分为
- 左外连接
- 右外连接
- 全外连接