软考中级-数据库系统工程师复习知识点解释(二)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_16780067/article/details/88619389

今天来完成3知识点的复习。


3.关系代数表达式

首先,关系数据库的关系代数指什么?

书本概念:由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。

通俗一点来说,就是通过关系代数的运算方式,来计算出目标关系。比如1+1这种算术关系式,只不过其中的1变成了一个关系。

关系代数的运算有9种操作,分别是:并、交、差、乘、选择、投影、联接、除、自然联接等。

其中并(∪)、差(-)、笛卡尔积(×)、投影(π)、选择(σ)是5个基本操作,交(∩)、联接(等值联接)、自然联接(RS)、除法(÷) 是4个组合操作,可以用前面的5个基本操作来定义,不过会稍微复杂些。

现在我们一个个的来看看。以下SQL语句皆根据Oracle数据库来写。

1、并(∪)

并是传统的二目运算,且其结果,认为n目关系,由属于R或属于S的元组组成。

数据库当中的union就是并运算

2、差(-)

和并一样为二目运算。数据库中的minus就是一个代表。

3、笛卡尔积(×)

笛卡尔积就是全表连接,比如R有x个元组,S有y个元组,这R、S笛卡尔积有x*y个元组

其中数据库中的cross join,或select R.*,S.* from R,S

4、投影(π)

投影就是在原表的基础上,重新选出若干属性,组成一个新的关系。从列的角度去筛选。

比如:

/*
 * 学生关系如下
 * STUDENT(SNO,SNAME,SAGE)
 */
SELECT S.SNO,S.NAME FROM SUTDENT S

5、选择(σ)

选择是在原表的基础上,加上一些特定的筛选条件,来筛选出我们需要的特定数据。

数据库中的where就是选择。

SELECT * FROM STUDENT S WHERE S.SNO <= 1010

6、交(∩)

R和S进行交运算,由即属于S和R的元组组成,交可以用差来表示,即R∩S=R-(R-S)。

数据库中的intersect就是交操作。

7、联接(等值联接)和非等值链接

等值是在笛卡尔积的结果基础上添加某两列属性值相等的筛选条件,列名可以相同,也可以不同。

反之,非等值连接,就是在筛选出某两列属性值不相等的条件,列名可以相同也可以不同。

--等值连接
SELECT * FROM STU A
  JOIN SCHOOL B ON A.SNO = B.NO

--非等值连接
SELECT * FROM STU A
  JOIN SCHOOL B ON A.SNO <> B.NO

8、自然联接

自然连接是一种特殊的等值连接,要求两个表必须有相同的属性列,不然无法完成“自发”的匹配。

sql中的natural join就是自然连接。

比如表格1和表格2自然连接之后得到的结果就是表格3。

表格1
A B C
1 2 3
4 5 6
表格2
B D E
2 3 4
4 5 6
表格3
A B C D E
1 2 3 3 4

因为自然连接,本身存在自发的匹配,会根据相同的属性列去匹配,自己就带有限制条件了,所以自然连接不能有where 或 on去限制筛选。并且等值连接要求相等的分量,不一定是公共属性(即相同的列名),但是自然连接必须要求相等的列名。

9、除法(÷)

除法这个计算还是相对来说比较简单的。

书本中的介绍是这样的:设关系R除以关系S的结果为关系T,则关系T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。

但毕竟都是拿来计算的,从算数表达式中的除法,我们也能以此类推出来。

我个人是这么计算除法的。以表格4和5为例。

表格4 R
A C
A1 C1
A1 C2
A1 C3
A2 C1
A2 C3
A3 C1
表格5 S
C D
C1 D1
C3 D2

计算R÷S:

第一步,找出重复列,即C

第二步,S在(C)上的投影为{(C1),(C3)},R中A在(C)上象集有

A1的象集K1={(C1),(C2),(C3)}

A2的象集K2={(C1),(C3)}

A3的象集K2={(C1)}

第三步,从k1~k3三个象集中,可以看到k1和k2包含了S在C列的投影,所以R÷S={(A1),(A2)}

 

展开阅读全文

没有更多推荐了,返回首页