文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

数据库系统概论——关系代数详解

2023-09-29 14:43

关注

文章目录

1、关系代数概述

关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是利用对关系的运算来表达查询的。

任何运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。

关系代数的运算对象是关系,运算结果亦为关系。

在关系代数运算中,有5种基本运算,它们是并(U)、差(—)、投影、选择、笛卡尔积(X),其它运算即交、连接和除,均可通过5种基本的运算来表达 。

运算符:

常见的关系运算符如下:
在这里插入图片描述

1.1 传统的集合运算

设关系 R R R和关系 S S S是相容的, t t t代表元组变量,现将各种运算分别介绍如下:

(1)并(Union)

举例:

R R R S S S

R ∪ S R∪S RS

具体如下图所示:
在这里插入图片描述

(2)交( Intersection)

举例:

R R R S S S

R ∩ S R∩S RS

具体如下图所示:
在这里插入图片描述

(3)差(Difference)

举例:

R R R S S S

R − S R - S RS

在这里插入图片描述

(4)广义笛卡尔积(Extended Cartesian Product)

严格地讲应该是广义的笛卡尔积

R × S R×S R×S

1.2 专门的关系运算

在讲解之前,我们先引入几个记号,这样有助于下面的理解,确实关系代数后半部分有点难理解。
(1) R,t∈R,t[ A i ] R,t\in R,t[A_i] R,tR,t[Ai]
设关系模式为 R ( A1 , A2 , … , An ) R(A_1,A_2,…,A_n) R(A1A2An),它的一个关系设为 R R R t ∈ R t\in R tR表示 t t t R R R的一个元组, t [ Ai ] t[A_i] t[Ai]则表示元组t中相应于属性 Ai A_i Ai的一个分量。

(2) t r t s ⏞ \overbrace{t_rt_s} trts R R R n n n目关系, S S S m m m目关系。
tr ∈ R , ts ∈ S , t r t s ⏞ t_r\in R,t_s\in S, \overbrace{t_r t_s} trRtsStrts 称为元组的连接。 t r t s ⏞ \overbrace{t_r t_s} trts 是一个 n + m n + m n+m列的元组,前 n n n个分量为 R R R中的一个 n n n元组,后 m m m个分量为 S S S中的一个 m m m元组。
(3)象集 Zx Z_x Zx
给定一个关系 R ( X , Z ) R(X,Z) RX,Z X X X Z Z Z为属性组。当 t [ X ] = x t[X]=x t[X]=x时, x x x R R R中的象集(Images Set)为:
Z x = t [ Z ] ∣ t ∈ R , t [ X ] = x Z_x={t[Z]|t \in R,t[X]=x} Zx=t[Z]tRt[X]=x

它表示 R R R中属性组 X X X上值为 x x x的诸元组在 Z Z Z上分量的集合。

举例如下:
在这里插入图片描述
上面抽象的例子可能并不是特别容易理解,那么我们就拿生活中的实际例子进行解释:

学生-课程-选修关系:
学生关系Student、课程关系Course和选修关系SC

在这里插入图片描述
在上面的关系表中,我们可以把SC表看作一个关系R,它的属性组为学号,课程号以及成绩,即 R ( S n o , C n o , G r a d e ) R(Sno, Cno, Grade) R(Sno,Cno,Grade)。这时我们将SC表与上面那个例子对比可以看出,Sno为200215121的学号在关系R(SC表)中的象集为 S n o200215121 = { 1 , 2 , 3 } Sno_{200215121}=\{1,2,3\} Sno200215121={123},以此类推,这样就比较容易理解一点。

1.2.1 选择运算

在这里插入图片描述

F:选择条件,是一个逻辑表达式

以最上面的学生-课程-选修关系表举例说明更好理解:

[例1] 查询信息系(IS系)全体学生

σ S d e p t =′ I S′ ( S t u d e n t ) 或 σ5 =′ I S′ ( S t u d e n t ) σ_{Sdept} = 'IS' (Student) 或 σ_5 ='IS'(Student) σSdept=IS(Student)σ5=IS(Student)

结果:
在这里插入图片描述

[例2] 查询年龄小于20岁的学生
σ S a g e < 20 ( S t u d e n t ) 或 σ 4 < 20 ( S t u d e n t ) σ_{Sage< 20}(Student) 或 σ_{4 < 20}(Student) σSage<20(Student)σ4<20(Student)

结果:
在这里插入图片描述

1.2.2 投影(Projection)

投影运算符的含义:

投影操作主要是从列的角度进行运算:
在这里插入图片描述
但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)

举例说明一下:
[例3] 查询学生的姓名和所在系
即求Student关系上学生姓名和所在系两个属性上的投影

π S n a m e , S d e p t ( S t u d e n t ) 或 π 2 , 5 ( S t u d e n t ) π_{Sname,Sdept}(Student) 或 π_{2,5}(Student) πSnameSdept(Student)π25(Student)

结果:
在这里插入图片描述
[例4] 查询学生关系Student中都有哪些系

π S d e p t ( S t u d e n t ) π_{Sdept}(Student) πSdept(Student)

结果:
在这里插入图片描述
由此可见,使用投影操作可以将关系表中的列单独拿出来组成新的关系表,这样方便我们可以更加清楚的查看自己想要的信息。

1.2.3 连接(Join)

连接也称为 θ θ θ连接

连接运算的含义:
从两个关系的笛卡尔积中选取属性间满足一定条件的元组
在这里插入图片描述
连接运算从 R 和 S R和S RS的广义笛卡尔积 R × S R×S R×S中选取( R R R关系)在 A A A属性组上的值与( S S S关系)在 B B B属性组上值满足比较关系 θ θ θ的元组

举例说明一下:
[例5]关系R和关系S 如下所示:
在这里插入图片描述
在这里插入图片描述

1.2.4 两类常用连接运算

(1)等值连接(equijoin)

(2)自然连接(Natural join)

在这里插入图片描述
举例:
在这里插入图片描述
在这里插入图片描述
一般的连接操作是从行的角度进行运算。
在这里插入图片描述
自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。

1.2.5 除(Division)

给定关系 R ( X , Y ) R (X,Y) R(XY) S ( Y , Z ) S (Y,Z) S(YZ),其中 X , Y , Z X,Y,Z XYZ为属性组。 R R R中的 Y Y Y S S S中的 Y Y Y可以有不同的属性名,但必须出自相同的域集。 R R R S S S的除运算得到一个新的关系 P ( X ) P(X) P(X) P P P R R R中满足下列条件的元组在 X X X 属性列上的投影:

元组在 X X X上分量值 x x x的象集 Yx Y_x Yx包含 S S S Y Y Y上投影的集合,记作:
在这里插入图片描述
关于象集的概念我们在前面已经提到了,在此直接举例子说明除:

[例6]设关系 R 、 S R、S RS分别为下图的(a)和(b), R ÷ S R÷S R÷S的结果为图©

在这里插入图片描述

通过上面的结果我们可以发现,关系 R R R中的 B 、 C B、C BC属性组,和关系 S S S中的 B 、 C B、C BC属性组的域都是相同的, R 与 S R与S RS的除运算得到了一个新的关系,我们将它当做 P ( A ) P(A) P(A) P P P R R R中满足上述条件的元组在 A A A属性列中的投影。

分析:
设关系 R , S R,S RS,分别为例6中的(a)和(b), R ÷ S R÷S R÷S的结果为图©,关系 R R R A A A可以取四个值 { a1 , a2 , a3 , a4 } , \{ a_1,a_2,a_3,a_4\}, {a1a2a3a4}, 其中:

S S S ( B , C ) (B,C) BC上的投影为 { ( b1 , c2 ),( b2 , c1 ) , ( b2 , c3 ) } \{(b_1,c_2),(b_2,c_1),(b_2,c_3)\} {b1c2),(b2c1,b2c3}

显然只有 a1 a_1 a1的象集包含了 S S S ( B , C ) (B,C) (B,C)属性组上的投影,所以 R ÷ S = { a 1 } R÷S=\{a1\} R÷S={a1}

除操作是同时从行和列角度进行运算
在这里插入图片描述

📢博客主页:https://blog.csdn.net/m0_63007797?spm=1011.2415.3001.5343
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢本文由 心无旁骛~ 原创,首发于 CSDN博客🙉
📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

来源地址:https://blog.csdn.net/m0_63007797/article/details/128779978

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯