购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 常用的关系运算

在实际应用中,数据查询是最常用的操作。关系代数是一种抽象的查询语言,是以集合运算为基础,以关系(表)为运算对象的高级运算。关系运算具有三大要素,即运算对象、运算符和运算结果。关系代数的运算对象和运算结果都是关系。

2.3.1 关系运算种类和运算符

1.关系运算的种类

关系运算的种类可分为两类,即传统的关系运算和专门的关系运算。传统的关系运算将关系(表)作为集合,而且对“水平”方向(行)进行运算,而专门的关系运算不仅涉及行还涉及列。

(1)传统的关系运算

传统的关系运算主要使用传统的集合运算方法,将关系(数据表)作为行(记录)的集合,从关系(表)的行方向进行(集合)运算,常用的是两个关系的运算。

传统的集合运算可以实现的基本操作如下。

1)并运算。在数据库中,可以实现对指定数据的插入和添加操作。

2)差运算。在数据库中,可以实现对指定数据记录的删除操作。

3)差并结合。修改数据的操作,由先删除(差)后插入(并)两个操作实现。

(2)专门的关系运算

专门的关系运算是针对关系数据库专门设计的,不仅涉及关系(表)的行(记录),也涉及关系的列(属性)。利用比较运算符和逻辑运算符可以实现辅助专门的关系运算符操作。有时还需要对关系(表)本身进行运算,如果需要显示表中某列的值,就需要利用关系的专门运算中的“投影”。

2.关系运算符

关系运算符有4类,即集合运算符、专门的关系运算符、(算术)比较运算符和逻辑运算符。具体的使用方法将在后面章节结合应用案例进行介绍。

1)集合运算符:∪(并运算)、-(差运算)、∩(交运算)、×(笛卡儿积)。

2)专门的关系运算符:σ(选择)、π(投影), 978-7-111-66147-4-Chapter02-22.jpg (连接)、÷(除)。

3)(算术)比较运算符:>(大于)、≥(大于等于)、<(小于)、≤(小于等于)、=(等于)、≠(不等于)。

4)逻辑运算符:﹁(非)、∧(与)、∨(并)。

2.3.2 传统的关系运算

实际上,传统的关系运算可以归纳为集合运算,即对两个关系的集合运算,传统的关系运算主要包括4种,即并、差、交和广义笛卡儿积。

1.并运算

设关系R和关系S具有相同的n目(属性/列),且相应的属性取自同一个域,则关系R和关系S的并(Union)由属于R或属S的行(记录)组成。其结果关系的目仍为n,记为R∪S。形式化定义为

R∪S={t|t∈R∨t∈S}

其中,t表示关系R或S中的记录,即关系R或S中的行。

978-7-111-66147-4-Chapter02-23.jpg 注意: R∪S的结果集合是R中记录和S中记录合并在一起构成的一个新关系,特别要指出的是,合并后的结果必须要去除重复记录。

【案例2-10】 已知关系R和关系S如表2-3和表2-4所示,计算出关系R和关系S的并R∪S,其计算结果如表2-5所示。

表2-3 关系R

978-7-111-66147-4-Chapter02-24.jpg

表2-4 关系S

978-7-111-66147-4-Chapter02-25.jpg

表2-5 R∪S结果

978-7-111-66147-4-Chapter02-26.jpg

2.差运算

设关系R和关系S具有相同的n目(列/属性),且相应的属性取自同一个域,则关系R和关系S的差(Difference)由属于R且不属于S的记录组成。其结果关系的目数仍为n,记为R-S。形式化定义为

R-S={t|t∈R∧t∉S}

其中,t表示属于R且不属于(差掉)S的所有记录。

【案例2-11】 已知关系R和关系S如表2-3和

表2-4所示,求关系R和S的差R-S,其计算结果如表2-6所示。

表2-6 关系R-S

978-7-111-66147-4-Chapter02-27.jpg

3.交运算

设关系R和关系S具有相同的n目(列/属性),且相应的属性取自同一个域,则关系R和关系S的交(Intersection)由属于R且属于S的记录组成。其结果关系的属性数仍为n,记为R∩S。形式化定义为

R∩S={tξt∈R∧t∈S}

其中,t为同时属于关系R和S中的所有记录,即关系R且S中行的公共部分。 978-7-111-66147-4-Chapter02-28.jpg

978-7-111-66147-4-Chapter02-29.jpg 知识拓展

关系R和关系S的交集

【案例2-12】 已知关系R和关系S,如表2-3和表2-4所示,计算关系R和S的交R∩S,其计算结果如表2-7所示。

表2-7 关系R∩S

978-7-111-66147-4-Chapter02-30.jpg

4.广义笛卡儿积

设关系R和关系S的目(列/属性)分别为r及s。关系R和S的广义笛卡儿积(Extended Cartesian)R×S是一个(r+s)目的记录集合(新关系有r+s列),每个记录前r个分量(属性值)来自关系R的一个记录,后s个分量是关系S的一个记录。关系R和关系S的笛卡儿积记为R×S,其形式化定义为

R×S={t|t=<t r ,t s >∧t r ∈R∧t s ∈S}

978-7-111-66147-4-Chapter02-31.jpg 说明: t r 、t s 中r,s为上标,分别表示r个分量和s个分量。若关系R的基数(行数)k 1 ,关系S的基数为k 2 ,则关系R和关系S的笛卡儿积的基数为k 1 ×k 2

【案例2-13】 已知关系R和关系S如表2-4和表2-8所示,求关系R和S的广义笛卡儿积R×S,具体的结果如表2-9所示。

表2-8 关系S

978-7-111-66147-4-Chapter02-32.jpg

表2-9 关系R×S

978-7-111-66147-4-Chapter02-33.jpg

978-7-111-66147-4-Chapter02-34.jpg 注意: 关系R和关系S中有相同的属性名“学号”,在计算结果中为了区分,需要在其属性名前标注上相应的关系名,如R.学号和S.学号。

在实际应用中,单独的笛卡儿积本身没有具体实际意义和用途,只有在两表连接时加上限制条件,才会起到正确处理有效数据的作用。

2.3.3 专门的关系运算

专门的关系运算有4种:选择运算、投影运算、连接运算和除运算。其中,选择运算可以在多表中选取符合满足条件的记录并构成新关系(表);投影运算可选取记录中指定的属性(列)构成新关系;连接运算可选取符合条件的记录串联(连接)成新关系;除运算可选取象集符合条件的记录的多个属性(列)构成新关系。

1.选择运算

选择(Selection)运算也称限制(Restriction),是对关系(表)进行水平(行)分割,也可以理解为对数据表(记录)水平方向(行)的选取。选择是在表中选取符合指定条件的记录,记为σ F (R)。其中,σ为选择运算符,F表示选择条件,F通常是一个逻辑表达式,其取值为逻辑值“真”(成立)或“假”(不成立)。σ F (R)表示从R中选取满足条件F的记录(行)所构成的新关系,形式化定义为

σ F (R)={t|t∈R∧F(t)=true}

逻辑表达式F的基本形式为:XθY,其中,θ表示比较运算,可以是>、≥、<、≤、=、≠。X和Y为属性名,或为常量,或为简单函数,属性名可以用其序号来替代。在基本的选择条件中可以进一步进行逻辑运算,包括非(﹁)、与(∧)、或(∨)运算。

【案例2-14】 在商品数据表中,如表2-10所示,查询出所有产地为“深圳”的商品信息。在商品数据表中,进行选择运算σ 产地 ='深圳'或σ 8 ='深圳',其结果如表2-11所示。

表2-10 商品数据表

978-7-111-66147-4-Chapter02-35.jpg

表2-11 产地为“深圳”选择结果

978-7-111-66147-4-Chapter02-36.jpg

【案例2-15】 查询商品价格低于500元的商品信息。在商品数据表中,选择运算σ 价格 <500或σ 3 <500,其结果如表2-12所示。

表2-12 价格低于500元选择运算结果

978-7-111-66147-4-Chapter02-37.jpg

2.投影运算

投影(Projection)运算是对关系(表)进行垂直分割,即对关系的列方向进行筛选。

投影运算是在一个关系中选取某些属性或列,并重新排列属性的顺序,再删掉重复记录后构成的新关系,是对二维表进行垂直分割,记为π A (R),其中,π为投影运算符,A为关系R中的属性列。投影运算的形式化定义为

π A (R)={t[A]t∈R} 978-7-111-66147-4-Chapter02-38.jpg

978-7-111-66147-4-Chapter02-39.jpg 知识拓展

投影结果中对重复记录操作

【案例2-16】 已知商品数据表如2-10所示,查询商品的产地信息。

投影运算π 产地 (商品信息表)或π 8 (商品信息表)的结果如表2-13所示。

表2-13 投影“产地”运算结果

978-7-111-66147-4-Chapter02-40.jpg

【案例2-17】 已知商品数据表如2-10所示,查询商品的名称和价格信息。投影π 商品名称 ,价格(商品信息表)或π 2.3 (商品信息表)的结果如表2-14所示。

表2-14 投影“商品名称”和“价格”运算结果

978-7-111-66147-4-Chapter02-41.jpg

3.连接运算

连接(Join)运算也称为θ连接,是从两个关系的广义笛卡儿积中选取属性间满足一定条件的记录。形式化定义为

978-7-111-66147-4-Chapter02-42.jpg

其中,A和B分别为关系R和关系S上目数相同且可比的属性组。θ为比较运算符。连接运算从R和S的笛卡儿积R×S中选取R关系在A属性组上的值与S关系在B属性组上值满足比较关系θ的记录。

连接运算中有两种最常用的连接,即等值连接(Equijoin)和自然连接(Natural Join)。

1)等值连接是指θ为“=”的连接运算。等值连接从关系R和关系S的广义笛卡儿积中选取A与B属性(列)相等的记录,即等值连接为

978-7-111-66147-4-Chapter02-43.jpg

2)自然连接是一种特殊的等值连接。要求两个关系中进行比较的分量(属性值/数据项)必须是相同的属性组,并且在结果中把重复的属性列去掉。如果关系R和S具有相同的属性组B,则自然连接可记为

978-7-111-66147-4-Chapter02-44.jpg

978-7-111-66147-4-Chapter02-45.jpg 注意: 通常连接操作是从行的角度进行运算。而自然连接还需要取消重复列(常为后面的列),所以是同时从行和列的角度进行的运算。

【案例2-18】 设有两个关系R和关系S,分别如表2-15和表2-16所示,求 978-7-111-66147-4-Chapter02-46.jpg978-7-111-66147-4-Chapter02-47.jpg978-7-111-66147-4-Chapter02-48.jpg ,结果如表2-17~表2-19所示。

表2-15 关系R

978-7-111-66147-4-Chapter02-49.jpg

表2-16 关系S

978-7-111-66147-4-Chapter02-50.jpg

表2-17 关系 978-7-111-66147-4-Chapter02-51.jpg

978-7-111-66147-4-Chapter02-52.jpg

表2-18 978-7-111-66147-4-Chapter02-53.jpg

978-7-111-66147-4-Chapter02-54.jpg

表2-19 978-7-111-66147-4-Chapter02-55.jpg

978-7-111-66147-4-Chapter02-56.jpg

自然连接与等值连接的主要区别如下。

1)等值连接中相等的属性可以是相同属性,也可以是不同属性,而自然连接中相等的属性必须是相同的属性。

2)自然连接连接结果必须去除重复属性,而等值连接的结果不需要去除重复属性。

3)自然连接用于有公共属性的情况。若两个关系没有公共属性,则它们不能进行自然连接,而等值连接无此要求。自然连接常用于多表数据调用。

4.除运算

给定关系R(X,Y)和S(Y,Z),其中X、Y、Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。

R与S的除运算(Division)得到一个新的关系P(X),P是R中满足下列条件的记录在X属性列上的投影:记录在X上分量值x的象集Y x 包含S在Y上投影的集合。记作

R÷S={t r [X]|t r ∈R∧π Y (S)⊆Y x }

其中Y x 为x在R中的象集,x=t r [X]。

除运算通常是从关系的行和列的角度进行操作。

除运算的计算过程可按下列过程进行。

1)将被除关系的属性分为象集属性和结果属性两部分,与除关系相同的属性归于象集,不相同的属性归于结果集。

2)在除关系中,在与被除关系相同的属性(象集属性)上投影,得到除目标数据集。

3)将被除关系分组结果属性值相同的记录分为一组。

4)观察每个组,若它的象集属性值中包括除目标数据集,则对应的结果属性值应该属于除法运算结果集,并去掉与原被除关系相同的分组。

【案例2-19】 (源自:数据库系统工程师2005年5月试题44),已知关系R(表2-20)和关系S(表2-21),求R÷S。

表2-20 关系R

978-7-111-66147-4-Chapter02-57.jpg

表2-21 关系S

978-7-111-66147-4-Chapter02-58.jpg

具体除运算的计算过程:

1)关系R中属性组A、B的取值为{(2,1),(2,2),(3,2)},其中,(2,1)的象集为{(a,c),(b,d)},(2,2)的象集为{(a,d)},(3,2)的象集为{(b,d),(b,c)}。

2)关系S在属性组C、D上的投影为{(a,c),(b,d)}。

3)找出全部属性组A、B象集包含关系S属性组C、D上的投影的取值,即为新关系R÷S,此处通过比较1)和2),可以发现只有记录(2,1)的象集包含关系S在属性组C、D上的投影,所以R÷S只有一个记录(2,1),即R÷S运算结果如表2-22所示。 978-7-111-66147-4-Chapter02-59.jpg

978-7-111-66147-4-Chapter02-60.jpg 知识拓展

除法运算的实际应用

表2-22 R÷S

978-7-111-66147-4-Chapter02-61.jpg

除的基本运算可以表示为等价关系表达式

π A (R)-π A (π A (R)×S-R)

下面试举几个关系代数综合运算应用案例。

设商品销售数据库有3个关系:商品关系、售货员关系和售货关系。三个关系的关系模式如下。

商品(商品编号,商品名,产地,价格,等级)

售货员(售货号编号,姓名,性别,年龄)

售货(商品编号,售货员编号,数量)

【案例2-20】 查询所有产地为北京的商品信息。

σ 产地= 北京 (商品)

查询年龄35岁以下男性的售货员编号和姓名。

π 售货员编号 姓名 (σ 年龄<35∧性别= (售货员))

查询售出商品编号为K006的售货员姓名。

978-7-111-66147-4-Chapter02-62.jpg
978-7-111-66147-4-Chapter02-63.jpg 讨论思考:

1)交、并、差运算的两个关系必须满足什么条件?

2)除运算的结果表示什么含义?

3)等值连接和自然连接之间的区别是什么? w3P64SWqNCxpwK/Eq0Otpc8QMXUVxILlBLcvKztDByUrcs+eixjZBm6hQlWl06Jn

点击中间区域
呼出菜单
上一章
目录
下一章
×