【数据库】 第二章-关系数据库(2-关系代数运算)

关系代数运算分类

  • 常规集合运算:并、差、交、广义笛卡儿积(乘)。
  • 特有的关系运算:选择、投影、连接、自然连接、求商。

常规集合运算

  • 属于离散数学范畴。
  • 均为双目运算。
  • 除了广义笛卡尔积之外,要求参加运算的两个关系必须为同类关系
    • 同类关系:关系的度相同(二维表的列数相同),且对应的属性值取自同一域。

并(Union)

关系 R R R与关系 S S S的并定义为:
R ∪ S = { t ∣ t ∈ R ∨ t ∈ S } R\cup S=\{t|t\in R\vee t\in S\} RS={ttRtS}

  • R ∪ S R\cup S RS的元素来自关系 S S S或来自关系 R R R
  • 不改变关系的度,仍为n元关系。

差(Difference)

关系 R R R与关系 S S S的差定义为:
R − S = { t ∣ t ∈ R ∧ t ∉ S } R-S=\{t|t\in R\wedge t\notin S\} RS={ttRt/S}

  • R ∪ S R\cup S RS的元素来自关系 S S S且不来自关系 R R R
  • 不改变关系的度,仍为n元关系。

交(Intersection)

关系 R R R与关系 S S S的交定义为:
R ∩ S = { t ∣ t ∈ R ∧ t ∈ S } R\cap S=\{t|t\in R\wedge t\in S\} RS={ttRtS}

  • R ∪ S R\cup S RS的元素来自关系 S S S且来自关系 R R R
  • 不改变关系的度,仍为n元关系。

广义笛卡儿积(Extended cartesian product)

度为 n n n的关系 R R R与度为 m m m的关系 S S S的交定义为:
R × S = { t ∣ t = < r , s > ∧ r ∈ R ∧ s ∈ S } R\times S=\{t|t=<r,s>\wedge r\in R\wedge s\in S\} R×S={tt=<r,s>rRsS}

  • 某个元组的前 n n n个分量来自于关系 R R R,后 m m m个分量来自于关系 S S S
  • R × S R\times S R×S的度为 m + n m+n m+n
  • R × S R\times S R×S的元组数为 k R k S k_Rk_S kRkS(设 R R R的元组数为 k R k_R kR, S S S的元组数为 k S k_S kS

例:
关系 R R R

AB
a1b1
a2b2

关系 S S S

AB
a3b3
a4b4

则关系 R × S R\times S R×S为(最好将来自不同关系的相同属性名加以区分):

R.AR.BS.AS.B
a1b1a3b3
a1b1a4b4
a2b2a3b3
a2b2a4b4

注:以下写法是不正确的,关系不允许出现属性的嵌套。

RS
ABAB
a1b1a3b3
a1b1a4b4
a2b2a3b3
a2b2a4b4

特有的关系运算

选取或限制(Selection or Restriction)

定义:在关系 R R R中选择满足给定条件 F F F的元组:
σ F ( R ) = { t ∣ t ∈ S ∧ F ( t ) = T r u e } \sigma_F(R)=\{t|t\in S\wedge F(t)=True\} σF(R)={ttSF(t)=True}
其中, F ( ) F() F()为条件表达式,由运算对象、运算符(包括逻辑运算符和算术比较符等)组成。其可能取值为 T r u e True True F a l s e False False

例子:选出学生信息表中所有来自某个学院的学生。

投影(Projection)

定义:选出关系 R ( U ) R(U) R(U)中若干属性列 A A A(并删去重复行):
Π A ( R ) = { t [ A ] ∣ t ∈ R , A ⊆ U } \Pi_A(R)=\{t[A]|t\in R, A\subseteq U\} ΠA(R)={t[A]tR,AU}
由于关系作为一个元组的集合是具有互异性的,所以以上形式化定义也隐含了删除重复行的操作。

例子:由学生成绩记录表求学生学号表。
在这里插入图片描述

连接(Join)

定义:在关系 R R R和关系 S S S的广义笛卡尔积 R × S R\times S R×S中,选取 R R R的给定属性 X X X S S S的给定属性 Y Y Y(要求 X X X Y Y Y包含的属性个数相等且具有共同的域)满足给定算术比较条件 θ \theta θ的元组:
R ⋈ X θ Y S = { t ∣ t = < r , s > ∧ r ∈ R ∧ s ∈ S ∧ r [ X ] θ s [ Y ] } R\mathop{\Join} \limits_{X \theta Y}S=\{t|t=<r,s>\wedge r\in R \wedge s \in S \wedge r[X] \theta s[Y]\} RYS={tt=<r,s>rRsSr[X]θs[Y]}
θ \theta θ = = =, < < <, > > >符号时,分别称为等值连接、小于连接、大于连接。

例子:由学生信息表和学生选课记录表等值连接得到学生选课信息表(有重复列)。
在这里插入图片描述

自然连接(Natural Join)

定义:设关系 R R R和关系 S S S具有同名的属性组 B B B,其属性组的并集为 U U U,则它们的自然连接 R ⋈ S R \Join S RS(也记为 R ∗ S R*S RS)定义为 R R R S S S的广义笛卡尔积中选取所有 B B B中属性值相等的元组组成的集合,再删去重复的属性列。
R ⋈ S = { t r t s [ U − B ] ⏠ ∣ t r ∈ R ∧ t s ∈ S ∧ t r [ X ] = t s [ Y ] } R \Join S=\{\overgroup{t_rt_s\left[ U-B \right] }|t_r\in R \wedge t_s \in S \wedge t_r[X] = t_s[Y]\} RS={trts[UB] trRtsStr[X]=ts[Y]}
自然连接可以看作等值连接的特例,但不同之处有如下两点:

  • 无需指定待比较的属性集 X X X Y Y Y,默认是以两个关系的同名属性组 B B B
  • 在笛卡尔积的基础上,不仅对行进行了筛选,对列也进行了操作。

例子:由学生信息表和学生选课记录表等值连接得到学生选课信息表(删除重复列)。
在这里插入图片描述

除(Division)

定义:设关系 R ( X , Y ) R(X,Y) R(X,Y)与关系 S ( Z ) S(Z) S(Z),其中 Y Y Y Z Z Z具有相同的属性数,且对应属性出自相同域。关系 R R R除以关系S所得的商关系是关系 R R R在属性 X X X上投影的一个子集,该子集和 S ( Z ) S(Z) S(Z)的笛卡儿积必须包含在 R ( X , Y ) R(X,Y) R(X,Y)中:
R ÷ S = { t ∣ < t , s > ∈ R ∧ s ∈ S ∧ t ∈ Π X ( R ) } R\div S=\{t| <t,s>\in R \wedge s\in S\wedge t\in \Pi_X(R)\} R÷S={t<t,s>∈RsStΠX(R)}

例子1:
在这里插入图片描述
例子2:
在这里插入图片描述
结果为 ∅ \emptyset

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值