关系代数:是一种抽象的查询语言,用对关系的运算来表达 查询。关系代数运算的是关系,运算结果亦是关系。
3.1 概述
用表或者数据集合,表示 关系或实体;
用行 表示元组;
用列 表示属性;
3.2 包括:
5个基本操作:并(∪)、差(∪)、广义笛卡儿积(×),选择(π)、投影(σ)
四个组合操作:交(∩)、连接等值联接)、自然连接(RS)、除法(÷)
3.2.1 并――关系的加法和减法,它可以在行的方向上合并两个表中的数据,就像把一个表垒在另一个表之上一样。
3.2.2 交――返回两个数据集合所共有的行。
3.2.3 差――返回只属于一个数据集合的行。
3.2.4 笛卡尔积――是关系的乘法,它将分别来自两个数据集合中的行以所有可能的方式进行组合。
例如:假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)} 。即若R有k1个元组,S有k2个元组,则关系R和S的笛卡尔积有k1*k2个元组。
如下例所示:
结果:
由结果分析:笛卡尔积得到的结果元数为r+s即:3+3=6;记录数为:R中的记录数与S中的记录数相乘,即:3×2=6。
(全码:关系模式中所有属性组都是这个关系模式的候选码)
3.2.5 选择――返回满足指定条件的行(水平切割)。
例如 δ2 > ‘4‘(R),表示从R中挑选第二个分量值(也就是R中B列的值)大于4的元组所构成关系。
结果:
3.2.6 投影――从数据集合中返回指定的列(垂直切割,消去列)。
关系R上的投影是从R中选择出若干属性列组成新的关系。记作:
ΠA(R) = { t[A] | t∈R },其中A为R中的属性列。
例如:π3,1(R)表示的结果如下:
3.2.7 连接――在水平方向上合并两个表,其方法是:从两个关系的笛卡尔积中选取满足条件的元组。(连接运算的操作基础是两个关系的笛卡尔积)
等值连接:从笛卡尔积中,选取的属性列相等的 元组。(条件AθB中的θ为‘=’的连接)
如下有关系R和S,则是什么呢?B(R) = B(S)
结果:
自然连接:是一种特殊的 等值连接。它要求两个关系中,进行比较的分量必须是相同的属性组,并且在结果集中把重复属性列去掉。
即一般自然连接使用在R和S有公共属性的时候,如果没有公共属性,自然连接就转为笛卡尔积操作。
例如:关系R和S,则自然连接的结果呢?
结果:
3.2.8 除―:―返回两个数据集之间的精确匹配。
给定关系R(X,Y),S(Y,Z),xyz为属性组,满足在X上的分量值x的象集Y,包含关系S在属性组Y上投影的集合。
例子:R÷S
R: S:
结果:
计算过程:
(1)T=π1,2(R),从R中选取除去与S中相同的属性,即选择S#,SName
(2)W=(T ×S)-R,将上面得到的T与S进行笛卡尔积,再减去R,即计算T×S中不在R的元组
(3)V=π1,2(W),从W中选取1,2对应的属性列,即:S#,SName
(4)R ÷ S = T-V