数据库 关系代数

超详解析,手打不易,转载注明出处,点赞收藏,多谢支持


  • 关系代数是一种抽象的查询语言
  • 关系代数的运算对象运算结果都是关系
  • 由于运算结果也是关系,所以新关系内的元组也不能有重复的

集合运算


把关系看成元组的集合,以元组作为集合中的元素进行集合运算

集合运算是典型的二目运算(除笛卡尔积外),交,并,差操作都需满足相容性
① 具有相同的度(即两个关系的属性名、属性数量必须一致);
② 关系R中第i个属性和关系S中第i个属性必须来自同一域。


并(Union)运算:R ∪ S = { t | t∈R ∨ t∈S }

  其中 t 是元组

  并运算实例:合并两个集合,去掉重复的

在这里插入图片描述       在这里插入图片描述

                R ∪ S =
R∪S




  

交(Intersection)运算:R ∩ S = { t | t∈R ∧ t∈S }

 其中 t 是元组

  交运算实例:选出在两个关系内相同的元组

在这里插入图片描述       在这里插入图片描述

                R ∩ S =
R ∩ S



  

差(difference)运算:R - S = { t | t∈R ∧ ¬t∈S }

  其中 t 是元组,R-S的差 = R减去R和S的交集

  差运算实例:R-S的差 = R减去R和S的交集

在这里插入图片描述       在这里插入图片描述

                R - S =
R - S



  

笛卡尔积:R × S = { tr⌒ts| tr∈R ∧ ts∈S }

域的笛卡尔积 = 域的基数相乘
而集合的笛卡尔积也是如此,把集合内元组的个数看作域的基数相乘,得到的就是集合的笛卡尔积

笛卡尔积实例:R中的3元组 × S中的3元组 = 9,则诞生出的新关系有9个元组

在这里插入图片描述       在这里插入图片描述

                R × S =
R - S





关系运算


选择(selection)运算:σF( R ) = { t | t∈R ∧ F(t) = ‘真’ }

  从R关系表内选择出符合关系F的元组t

  选择运算实例:选择出T关系中年龄大于18岁的男性

在这里插入图片描述
σ(Sex=‘男’ ∧ Age>18)( T ) = 在这里插入图片描述



  

投影(projection)运算:A( R ) = { t[A]| t∈R }

  从R关系表内投影出每个元组的A列构成新关系

  投影运算实例:投影出T关系中姓名、年龄两列

在这里插入图片描述
        Name,Age( T ) =
Alt



  

选择投影组合运算:A( σF( R ) )

  可以从特定元组中投影出特定列
从R关系中选出符合F条件的元组,在从这些元组内投影出特定的A列

  选择投影组合运算实例:选择出T关系中年龄大于18岁的男性并投影出该关系中姓名、年龄两列

在这里插入图片描述
   Name,Age( σ(Sex=‘男’∧Age>18)(T)) = Alt



  

连接(join):通过共同属性连接两个表,又称θ连接

连接分为两种

  ① 等值连接:R.A = S.B(A、B属性名可不同也可以相同)

    语法:R ⋈AθBS = { tr ⌒ ts | tr ∈ R ∧ ts ∈ S ∧ tr[A] = ts[B] }

其中,R和S为关系表,A、B分别是关系R、S上的可比属性组(A、B两个属性组的域相同,就称为可比属性组)

θ称为比值符,也就是>、<、=号;
θ两边的属性相等时,等值S连接成立;

等值连接其结果是从关系R和S的笛卡尔积中选出属性组AB相等的元组,即:σ(A=B)(R×S)

等值连接实例:学生关系S 与 课程关系C进行等值连接

在这里插入图片描述


公式:S ⋈ C = { ts ⌒ tc | ts ∈ S ∧ tc ∈ C ∧ ts[CNO] = tc[CNO] }
在这里插入图片描述

结果可以看作是:从S×C的笛卡尔积内选择出S.CNO = C.CNO的元组,即:σ(CNO=CNO)(S×C)


  
  ② 自然连接:R.A = S.A(必须有相同的属性名且域相同才可以进行自然连接)

    语法:R ⋈S = { tr ⌒ ts | tr ∈ R ∧ ts ∈ S ∧ tr[A] = ts[A] }

特殊的等值连接,比较的分量必须是同一属性组

在等值连接的基础上去掉重复的属性列


自然连接实例:学生关系S 与 课程关系C进行自然连接

在这里插入图片描述


公式:S ⋈ C = { ts ⌒ tc | ts ∈ S ∧ tc ∈ C ∧ ts[CNO] = tc[CNO] }
在这里插入图片描述

  

自然连接与等值连接的区别与联系

自然连接要求同名同域的属性组才可连接,而等值连接仅要求域相同;
自然连接是去掉重复列的等值连接;
自然连接一定是等值连接,而等值连接不一定是自然连接;
自然连接后列的数量小于等于等值连接后列的数量。



除法(division)运算:R ÷ S = { tr[X] | tr∈R ∧ ∏y(S)⊆YX }

除运算核心步骤:设R、S为关系,X、Y、Z为属性集

1. 分出X、Y、Z三个属性集
2. 列出S对Y属性集的投影
3. 找出R中满足x值对应的象集包含了关系S对Y属性集的x值

  除法运算需满足的条件:设有关系R(X,Y)、S(Y,Z),其中X,Y,Z为属性集合,R中的Y与S中的Y可以有不同的属性名,但对应的属性组必须来自同一域

由于除运算比较抽象难理解,在此详细解析(结合图解):
    关系R和关系S共有的属性集是Y,而R÷S得到的值就是关系R对Y属性组的投影,即X属性组(S关系内没有的),而这X属性组还需满足特定条件(元组在X属性组上的分量值x的象集YX包含了S对Y属性组的投影集合)。



除运算图解:除法举例

在这里插入图片描述

按步骤来求R÷S:
①分出X、Y、Z三个属性集:X属性集是R特有的,Y为公共的,Z为S特有的;
②求出S对Y属性集的投影:C,D(S)=在这里插入图片描述
得到投影C,D(S) = { (c4,d5) , (c3,d5) }
③列出X属性组的全部x分量的象集,看下哪个象集包含了第②步求到的投影,那么这些x分量就是R÷S的商:

在R中,X属性组可取分量x:{ (a1,b2) , (a2,b4) , (a3,b5) }

 (a1,b2)对应象集:{ (c4,d5) , (c3,d5) }
 (a2,b4)对应象集:{ (c1,d3) };
 (a3,b5)对应象集:{ (c2,d8) };
只有(a1,b2)的象集YX包含了S对Y属性集的投影集合
R÷S = {(a1,b2)}
在这里插入图片描述
图片有错:CD改为AB

  • 96
    点赞
  • 297
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
数据库关系代数查询是一种用于在数据库中执行查询操作的形式化语言。CSND(CSDN)作为一个IT技术社区网站,也提供了数据库关系代数查询的学习资料和示例。 数据库关系代数是一种以代数方式描述和操作关系型数据库的方法。它包含了一组操作符,每个操作符都用于执行特定的数据库操作。常见的关系代数操作符有选择(σ)、投影(π)、并(∪)、交(∩)、差(-)等。通过这些操作符的组合,可以构建复杂的数据库查询。 假设我们要查询CSDN的用户表中年龄大于18岁的用户信息,可以使用选择操作符进行查询。具体操作可以是:“选择(σ)年龄 > 18(用户表)”。 如果我们还想查询符合某个条件的用户的用户名和邮箱,则可以使用投影操作符。具体操作可以是:“投影(π)用户名,邮箱(选择(σ)年龄 > 18(用户表))”。 此外,我们还可以使用联接(Join)操作符来查询不同表之间的关联信息。比如,如果我们希望查询用户发布的文章及其相关的标签信息,可以使用联接操作符。具体操作可以是:“选择(σ)用户表.用户ID = 文章表.用户ID (用户表 ⨝ 文章表)”。 总之,数据库关系代数查询是通过操作符和操作表达式对数据库进行查询和操作的一种形式化语言。在CSDN等技术社区网站上,我们可以找到相关的学习资料和示例,帮助我们更好地理解和应用数据库关系代数查询。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值