现实需求推动,问题推动,概念的发展过程。
现实需求推动:广义投影、外连接、外部并、聚集操作
问题推动:改名、赋值(这两个是从技术的角度进行化简)
五个基本操作-->四个组合操作-->七个扩充操作。
在整个知识链中的地位?
这是SQL语言的数学基础、深刻理解关系代数对SQL的深刻理解有帮助,为以后的SQL做准备。
1、改名
改名可以使关系代数能清晰地表达其语义,就像画思维导图的效果一样,解决问题前先将问题清晰明了地表达出来,而命名是一种非常简单有效的方法,难怪《代码大全2》中这么强调命名的重要性,这对化简是非常重要的。
2、广义投影
广义投影使用算术函数对投影进行扩展。这其实就是投影的扩展,以更加适应现实的要求、化简、辅助的作用。
3、赋值
书本上写的:“通过赋值给临时变量,可以将关系代数表达式分开写,达到将复杂的表达式化整为零,成为简单的表达式”
自己的理解:高中代数时学习了整体替换的方法,在面向对象思想中也有方法、类、包的概念,这样其实是模块化,封装繁杂的细节,这样看问题的观点就会放在各个模块上而不是繁杂的细节上,达到化简的目的。
4、外连接
是在自然连接的基础上扩展的。将自然连接缺失的元组加上来。
5、外部并
这里注意外连接和外部并的区别,外连接是在自然连接的关系上;外部并是没有连接,直接并的。
6、半连接
7、聚集操作
这是关系代数的统计功能,也是适应现实需求的,加上这个功能后,也才是完备的。