关系模型知识点总结(3)—— 关系操作中的关系代数(含题目及详细分析)

一、前言

本文将讲述有关于关系代数的知识点,并附例题加深印象

二、概述

  • 抽象的查询语言
  • 用对关系的运算来表达查询
  • 运算对象:关系
  • 运算结果:关系
  • 运算符:传统集合运算符专门的关系运算符

三、传统的集合运算符

在这里插入图片描述

1.概述

  • 将关系看作是元组的集合
  • 运算是从行的角度进行的
  • 其中包括笛卡儿积

2.∪(并)

R∪S={ t | t∈R ∨ t∈S }简单来说,就是把两个关系中所有的元素合并成一张表

例如:

关系R

ABC
123
456
789

关系S

ABC
123
056
739

那么 R∪S 为:

ABC
123
456
789
056
739

3.∩(交)

R∩S={ t | t∈R ∧ t∈S }简单来说,就是把两张表格中相同的元素提取出来,组成一个新的表

例如:

关系R

ABC
123
456
789

关系S

ABC
123
056
739

那么 R∩S 为:

ABC
123

4.-(差)

R-S={ t | t∈R ∧ t∉S } 简单来说,就是将R中两个关系中共同元素去除

例如:
关系R

ABC
123
456
789

关系S

ABC
123
056
739

那么 R-S 为:

ABC
456
789

5.笛卡儿积

R×S={(x,y)|x∈R∧y∈S} 这个有点难以理解。。。那么直接看例子吧

例如:
关系R

ABC
123
456
789

关系S

ABC
123
056
739

那么 R×S 为:

R.AR.BR.CS.AS.BS.C
123123
123056
123739
456123
456056
456739
789123
789056
789739

我们设R是n目关系,有K1个元组,S是m目关系,有K2个元组,那么他们的笛卡儿积其实就是排列组合,如果将R关系中的每一行看作是abc,S关系中的每一行看作是xyz,那么他们两两组合的方式一共有9种,故 当R有K1个元组,S有K2个元组时,R和S的笛卡儿积行一共有K1×K2个元组;而由于每个关系里都有各自属性,所以R和S的笛卡儿积列一共有(m+n)个元组
PS:如果概念性语言描述不清楚的话,可以看这篇关系模型知识点总结(1)—— 关系数据结构里面有对专业名词的解释

四、专门的关系运算

1.概述

  • 从关系R中选取使得逻辑表达式F为真的元组
  • F:选择条件,即逻辑表达式,取值为真/假,一般形式为X1θY1,θ为> / < / <= / >= / <>
  • 从行的角度运算

2.记号

  • 关系R(A1,A2,···,An),t∈R表示t是R的元组
  • t[Ai]代表元组t中相应于属性Ai的分量
  • A={Ai1,Ai2,···,Aik},则 A是属性列/属性组
  • t[A]=(t[Ai1],t[Ai2],···,t[Aik])表示元组t在数学列A上每个分量的集合

3.象集

  • 给定一个关系R(X,Z),X和Z为属性组
  • 当t[X]=x,x在R中象集定义为 Zx={ t[Z] | t∈R,t[X] =x }

列如:

AB
X1Z1
X1Z2
X1Z3
X2Z4
X2Z5
X3Z6

X1在R中的象集ZX1 = {Z1,Z2,Z3}

X2在R中的象集ZX2 = {Z4,Z5}

X3在R中的象集ZX2 = {Z6}

4.选择

  • σF ( R ) {t|t∈R∧F(t)=‘真’}
  • 提取出来的是某一行

列如:

Student

IDNameSdept
001张三CS
002李四IS
003王五MA

σ Sdept=‘CS’(Student) 结果为:

IDNameSdept
001张三CS

5.投影

  • ΠA( R )={ t[A] | t∈R }
  • 从列的角度来运算
  • 将提取出来的属性及值组成新的关系
  • 若有重复元组,要取消

例如:

Student

IDNameSdept
001张三CS
002李四IS
003王五MA

ΠSdept(Student)的结果为:

Sdept
CS
IS
MA

6.连接

  • 从两个关系的笛卡尔积中选取属性间满足一定条件的元组
  • 同名属性才能进行自然连接
  • 自然连接要去掉重复属性,等值连接不用
    在这里插入图片描述

🔴等值连接

在这里插入图片描述

例如:

R

ABC
a1b15
a1b~126
a2b38
a2b412

S

BE
b13
b27
b310
b32
b52

等值连接后结果为:

AR.BCS.BE
a1b15b13
a1b~126b27
a2b38b310
a2b38b32

🔴自然连接

在这里插入图片描述
例如:

R

ABC
a1b15
a1b~126
a2b38
a2b412

S

BE
b13
b27
b310
b32
b52

自然连接后结果为:

ABCE
a1b153
a1b~1267
a2b3810
a2b382

7.悬浮元组

  • 操作时被舍弃的元组

例如:

R

ABC
a1b15
a1b~126
a2b38
a2b412

S

BE
b13
b27
b310
b32
b52

在进行连接时,下面两组都是被舍弃的元组,因为属性值不相同,他们就是悬浮元组

ABC
a2b412
BE
b52

🔴外连接

将悬浮元组保存在关系中,在其它属性填上空值(NULL) 简单来说,就是把表中所有元素都填到新表中,如果某行或者某列中只有一个关系有值,另一个没有,就用NULL代替

ABCE
a1b153
a1b~1267
a2b3810
a2b382
a2b4122NULL
NULLb5NULL2

🔴左外连接

只保留左边关系R的悬浮元组 简单来说,就是保证R中所有元素都在新表里面了,这行中S的某个属性没有值的话,用NULL代替

ABCE
a1b153
a1b~1267
a2b3810
a2b382
a2b4122NULL

🔴右外连接

只保留右边关系S的悬浮元组 简单来说,就是保证S中所有元素都在新表里面了,这行中R的某个属性没有值的话,用NULL代替

ABCE
a1b153
a1b~1267
a2b3810
a2b382
NULLb5NULL2

8.除运算

在这里插入图片描述
列如:

R

ABC
a1b1c2
a2b3c7
a3b4c6
a1b2c3
a4b6c6
a2b2c3
a1b2c1

S

BCD
b1c2d1
b2c1d1
b2c3d2

我们来求a1、a2、a3、a4的象集
a1:{ (b1,c2),(b2,c3),(b2,c3)}

a2:{(b3,c7),(b2,c3)}

a3:{(b4,c6)}

a4:{(b6,c6)}

S在B、C上投影为{ (b1,c2),(b2,c3),(b2,c3)}

所以R÷S = {a1}

五、结语

概念如果混淆不清的话,建议独立做例题,这样可以加深记忆

  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
SQL(Structured Query Language)是一种用于管理关系数据库的编程语言,它使用关系代数操作和查询数据。下面我将详细解释一道SQL关系代数题目。 假设我们有两张表,一张是学生表(Student),包学生的学号(StudentID)、姓名(Name)和班级(Class);另一张是成绩表(Score),包学号(StudentID)和分数(Grade)。 题目要求:查询班级为1班的所有学生的学号和姓名,并按照分数从高到低的顺序进行排列。 首先,我们需要使用SELECT语句从学生表选择班级为1班的学生信息。语句如下: SELECT StudentID, Name FROM Student WHERE Class = 1 接下来,我们需要将这些学生的学号和姓名与成绩表的数据进行关联。我们可以使用JOIN语句来实现这一点。语句如下: SELECT Student.StudentID, Student.Name, Score.Grade FROM Student JOIN Score ON Student.StudentID = Score.StudentID 通过以上操作,我们得到了一个包学生学号、姓名和分数的结果集。 最后,我们需要按照分数从高到低的顺序对结果集进行排序。可以使用ORDER BY语句来实现。语句如下: SELECT Student.StudentID, Student.Name, Score.Grade FROM Student JOIN Score ON Student.StudentID = Score.StudentID WHERE Student.Class = 1 ORDER BY Score.Grade DESC 通过以上操作,我们得到了一个按照分数从高到低排序的结果集,其班级为1班的所有学生的学号和姓名。 这就是一道SQL关系代数例题的详细解答。希望能够帮助到您理解SQL关系代数的应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alita11101_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值