数据库概念学习的第04关:掌握关系代数的核心概念

关系代数是关系数据库的理论基础之一,通过严谨的数学理论定义了从表中按需提取数据的方法,严谨的数学理论基础是关系数据库经久不衰的重要原因。在软件领域,很多技术都是根据需求、人的思维习惯开发的,如面向对象编程技术、内存数据库技术等,关系数据库是少有的几个有严密数理基础的技术之一;这种情况的好处是,不同类型的关系数据库的交互方式基本相同,程序员在不同数据库间切换工作的成本极低。

SQL实现关系代数运算,并在关系代数基础上进行了扩展,以编程语言的形式提供运算能力,隐藏了关系代数的计算逻辑。事实上,略过关系代数的学习,直接上手学习SQL,一点问题都没有。如果学习关系代数时,觉得存在难度,你完全可以先学习SQL,回过头来重新学习关系代数,也许那时你会觉得非常简单。

1、关系代数解决的问题

所有关系代数运算的目标就是从若干张表中计算出一张新的表。这张新表又可以参与到新的关系代数运算中,形成复合表达式。

关系代数的计算

2、关系代数运算种类和计算规则(会算)

关系代数运算脱胎于集合运算,也就是把表中的每行数据看作集合中的一个元素,表就是一个集合。那么其“并”、“交”、“差”运算和集合运算中的运算方法完全相同,上图即为两张表的“并”运算,这里不再赘述。

当然集合运算把行作为元素,只能把行作为整体看待,涉及行内若干属性的运算无法支持,因此,需要定义专门的关系代数运算方法。

投影运算时,会把重复的行去掉。

投影运算

选择运算就是按条件对数据进行筛选。

选择运算

前一篇文章中,介绍了外码的概念,即在一张表中我们用外码来表达另一张表的完整数据。如果我们在提取学生信息时,因为学生表中只有外码(班级号),我们无法直接获得班级信息,如果希望在提取学生信息的同时,能提取到班级数据,我们就需要从班级表中提取数据,并根据班级号拼接到学生信息中。

这种情况下,我们就需要关系代数具备表和表之间的横向拼接能力。不考虑任何业务逻辑的情况下,横向拼接的算法就是“广义笛卡尔积”,也就是两张表中任取一行,拼接成一个新行,这些所有可能的新行就组成了一张新表,它就是广义笛卡尔积的结果。

广义笛卡尔积

通常情况下广义笛卡达尔的结果没有实际意义,它只提供了横向拼接的方法。我们通常需要对它的计算结果进行筛选(也就是再进行选择运算),留下符合实际业务的行。这种先笛卡尔积,再进行选择运算的复合算法就是关系代数中的连接运算。

连接运算

上图为一个典型的等值连接运算,其中A列重复了,所谓的自然连接就是把重复的列去掉,如下图所示。

自然连接

除法运算

上图中,被除的表R中,A列是S表中没有的列,那么根据A列的取值,我们可以把R表拆分成四张表。这四张表中,当A=a1时,B、C列包含了S表的B、C列,所以A=a1在结果集中,而当A=a2、A=a3、A=a4等三张表的B、C列无法覆盖S表的B、C列,所以它们不在结果集中。

3、如何通过关系代数表达语义(会写表达式)

初学者首先要学会如何计算上述的8种运算,在此基础上,可以尝试写关系代数表达式,即根据语义写出一个查询数据的表达式,这和根据需求写出一个SQL语句其实是一回事,都是如何利用表的概念和定义的表达式写出简单的算法。

例如,有关系模式如下:

S(SNO,Sname,Status,City):供应商

P(pNo,pName,color,weight):零件

J(jNo,jName,City):工程

SPJ(Sno,pNo,jNo,Qty):供应关系

提示:先对SPJ表根据jNO执行选择运算,再进行投影运算。

提示:先对SPJ表根据jNO和pNo执行选择运算,再进行投影运算。

提示:先将SPJ表和P表进行自然连接,再根据jNo和color执行选择运算,最后进行投影运算。

提示:所有工程的工程号 - 使用了天津供应商生产的红色零件的工程号码。

提示:先求出S1供应的全部零件的零件号得到A表;然后对SPJ表进行投影,留下sno和jno得到B表;最后,B A即可。

展开阅读全文

页面更新:2024-03-03

标签:笛卡尔   代数   关系   除法   表达式   广义   横向   零件   核心   概念   数据库   数据   工程

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top