数据库原理与统计笔记-2.4关系代数

前言

有关数据库原理与统计的笔记,内容为书本的原文概括。
建议可以多理解理解附带的例题,相比理论会更容易理解些。

关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。
运算对象、运算符、运算结果是运算的三大要素。
关系代数的运算对象是关系,运算结果也为关系。
运算符有两类:集合运算符和专门的关系运算符。
关系代数的运算按运算符的不同可分为传统的集合运算和专门的运算两类。
传统的集合运算将关系看成元组的集合,其运算是从行的角度来进行;
而专门的关系运算不仅涉及行,而且涉及列。
比较运算符和逻辑运算符是用来辅助专门的关系运算符进行操作的。

运算符 含义
-
X 笛卡尔积
σ 选择
Π 投影
连接
÷

一、传统的集合运算

传统的集合运算是二目运算,包括并、差、交、笛卡尔积4种运算。

运算 介绍
关系R与关系S的并记作R∪S={t|t∈RVt∈S},其结果仍为n目关系,由属于R或属于S的元组组成。
关系R与关系S的差记作R-S={t|t∈RΛt∉S},其结果关系仍为n目关系,由属于R而不属于S的所有元组组成。
关系R与关系S的交记作R∩S={t|t∈RΛt∈S},其结果关系仍为n目关系,由既属于R又属于S的元组组成,关系的交可以用差来表示即R∩S=R-(R-S)
笛卡尔积 关系R和关系S的笛卡尔积有k1xk2个元组,记作RXS={tr ts|tr∈RΛts∈S}。n目关系R和m目关系S的笛卡尔积是一个m+n列的元组的集合,元组的前n列是关系R的一个元组,后m列是关系S的一个元组。R有k1个元组、S有k2个元组。

例:
关系R如下:

A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1

关系S如下:

A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1

(1) R∪S

A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1
a1 b3 c2

(2)R∩S

A B C
a1 b2 c2
a2 b2 c1

(3)R-S

A B C
a1 b1 c1

(4)RXS

R.A R.B R.C S.A S.B S.C
a1 b1 c1 a1 b2 c2
a1 b1 c1 a1 b3 c2
a1 b1 c1 a2 b2 c1
a1 b2 c2 a1 b2 c2
a1 b2 c2 a1 b3 c2
a1 b2 c2 a2 b2 c1
a2 b2 c1 a1 b2 c2
a2 b2 c1 a1 b3 c2
a2 b2 c1 a2 b2 c1

二、专门的关系运算

专门的关系运算包括选择、投影、连接、除运算等。

[1]. 选择

选择又称为限制,它是在关系R中选择满足给定条件的诸元组,记作σF(R)={t|t∈RΛF(t)='真'}
其中F表示选择条件,它是一个逻辑表达式,取逻辑值真或假。
逻辑表达式F的基本形式为:X1θY1,其中的θ表示比较运算符,可以是>、≥、<、≤、=或<>。X1、Y1是属性名,或为常量,或为简单函数;属性名可以用其序号来代替。

运算符 含义
> 大于
大于等于
< 小于
小于等于
= 等于
<> 不等于
¬
Λ
V

选择运算实际上是从关系R中选择使逻辑表达式F为真的元组,选择运算是从行的角度进行的运算。

例:有Student表如下,

学号Sno 姓名Sname 性别Ssex 年龄Sage 所在系Sdept
21 李勇 20 CS
22 刘晨 19 CS
23 王敏 18 MA
25 张立 19 IS

(1)查询信息系(IS系)全体学生。

σSdept=‘IS’(Student)

Sno Sname Ssex Sage Sdept
25 张立 19 IS

(2)查询年龄小于20岁的学生。

σSage<20(Student)

Sno Sname Ssex Sage Sdept
22 刘晨 19 CS
23 王敏 女18 MA
25 张立 19 IS

[2]. 投影

关系R上的投影是从R中选择若干属性列组成新的关系。记作πA(R)={t[A]|t∈R},其中A为R中的属性列,投影操作是从列的角度进行的运算。

例:有Student表如下,

学号Sno 姓名Sname 性别Ssex 年龄Sage 所在系Sdept
21 李勇 20 CS
22 刘晨 19 CS
23 王敏 18 MA
25 张立 19 IS

(1)查询学生的姓名和所在系

即求Student关系上学生姓名和所在系两个属性上的投影。πSname(Student)

Sname Sdept
李勇 CS
刘晨 CS
王敏 MA
张立 IS

(2)查询学生关系Student中都有哪些系

即查询关系Student上所在系属性上的投影。πSdept(Student)

Sdept
CS
IS
MA

[3]. 连接

连接也称θ连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组记作R∞S={tr ts|tr∈RΛts∈SΛtr[A]θts[B]},A和B分别为R何S上列数相等且可比的属性组,θ是比较运算符。连接运算从R和S的笛卡尔积RXS中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系θ的元组。
θ为=的连接运算称为等值连接。则等值连接为R∞S={tr ts|tr∈RΛts∈SΛtr[A]=ts[B]}
自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉。则自然连接为R∞S={tr ts[U-B]|tr∈RΛts∈SΛtr[B]=ts[B]},B为R何S种具有的相同属性组,U为R何S的全体属性集合。

例:
关系R

A B C
a1 b1 5
a1 b2 6
a2 b3 8
a2 b4 12

关系S

B E
b1 3
b2 7
b3 10
b3 2
b5 2

(1)等值连接

R∞S(R.B=S.B)

A R.B C S.B E
a1 b1 5 b1 3
a1 b2 6 b2 7
a2 b3 8 b3 10
a2 b3 8 b3 2

(2)非等值连接

R∞S(C<E)

A R.B C S.B E
a1 b1 5 b2 7
a1 b1 5 b3 10
a1 b2 6 b2 7
a1 b2 6 b3 10
a2 b3 8 b3 10

(3)自然连接

R∞S

A B C E
a1 b2 5 3
a1 b2 6 7
a2 b3 8 10
a2 b3 8 2

当两个关系R和S在做自然连接时,则两个关系在公共属性上值相等的元组构成新的关系。关系R中年某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,同样,S中某些元组也可能被舍弃。这些被舍弃的元组称为悬浮元组。
如果把悬浮元组也保存在结果关系中,而在其他属性上填空值,那么这种连接为外连接,如果只保留左边关系R中1悬浮元组为左外连接,如果只保留右边关系S中的悬浮元组为右外连接。

例:
关系R

A B C
a1 b1 5
a1 b2 6
a2 b3 8
a2 b4 12

关系S

B E
b1 3
b2 7
b3 10
b3 2
b5 2

(4)外连接

A B C E
a1 b1 5 3
a1 b2 6 7
a2 b3 8 10
a2 b3 8 2
a2 b4 12 NULL
NULL b5 NULL 2

(5)左外连接

A B C E
a1 b1 5 3
a1 b2 6 7
a2 b3 8 10
a2 b3 8 2
a2 b4 12 NULL

(6)右外连接

A B C E
a1 b1 5 3
a1 b2 6 7
a2 b3 8 10
a2 b3 8 2
NULL b5 NULL 2

[4]. 除运算

设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。
给定关系R(X,Y)和S(Y,Z),其中X、Y、Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。
R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作R÷S={tr[X]|tr∈RΛπY(S)真包含于Yx},其中Yx为x在R中的象集,x=tr[X]。除操作是是从行和列角度进行运算。

例:
关系R

A B C
a1 b1 c2
a2 b3 c7
a3 b4 c6
a1 b2 c3
a4 b6 c6
a2 b2 c3
a1 b2 c1

关系S

B C C
b1 c2 d1
b2 c1 d1
b2 c3 d2

(1)R÷S

A
a1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章