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

简介: 我们设R是n目关系,有K1个元组,S是m目关系,有K2个元组,那么他们的笛卡儿积其实就是排列组合,如果将R关系中的每一行看作是abc,S关系中的每一行看作是xyz,那么他们两两组合的方式一共有9种,故 当R有K1个元组,S有K2个元组时,R和S的笛卡儿积行一共有K1×K2个元组;而由于每个关系里都有各自属性,所以R和S的笛卡儿积列一共有(m+n)个元组

一、前言


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


二、概述


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


三、传统的集合运算符


09661558d1594d58be960e864f33aa97.jpg


1.概述


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


2.∪(并)


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


例如:


关系R


A B C
1 2 3
4 5 6
7 8 9


关系S


A B C
1 2 3
0 5 6
7 3 9


那么 R∪S 为:


A B C
1 2 3
4 5 6
7 8 9
0 5 6
7 3 9


3.∩(交)


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


例如:


关系R


A B C
1 2 3
4 5 6
7 8 9


关系S


A B C
1 2 3
0 5 6
7 3 9


那么 R∩S 为:


A B C
1 2 3


4.-(差)


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


例如:


关系R


A B C
1 2 3
4 5 6
7 8 9


关系S


A B C
1 2 3
0 5 6
7 3 9


那么 R-S 为:


A B C
4 5 6
7 8 9


5.笛卡儿积


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


例如:


关系R


A B C
1 2 3
4 5 6
7 8 9


关系S


A B C
1 2 3
0 5 6
7 3 9


那么 R×S 为:


R.A R.B R.C S.A S.B S.C
1 2 3 1 2 3
1 2 3 0 5 6
1 2 3 7 3 9
4 5 6 1 2 3
4 5 6 0 5 6
4 5 6 7 3 9
7 8 9 1 2 3
7 8 9 0 5 6
7 8 9 7 3 9


我们设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 }


列如:


A B
X1 Z1
X1 Z2
X1 Z3
X2 Z4
X2 Z5
X3 Z6


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


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


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


4.选择


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


列如:


Student


ID Name Sdept
001 张三 CS
002 李四 IS
003 王五 MA


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


ID Name Sdept
001 张三 CS


5.投影


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


例如:


Student


ID Name Sdept
001 张三 CS
002 李四 IS
003 王五 MA


ΠSdept(Student)的结果为:


Sdept
CS
IS
MA


6.连接


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


df24d3c195a848f1adad927eef929d6a.jpg


🔴等值连接


961850c160904439ba18f8bc29ab0801.jpg


例如:


R


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


S


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


等值连接后结果为:


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


🔴自然连接


f5af8a22cc9d4a148da06ddf87473675.jpg

例如:


R


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


S


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


自然连接后结果为:


A B C E
a1 b1 5 3
a1 b~12 6 7
a2 b3 8 10
a2 b3 8 2


7.悬浮元组


  • 操作时被舍弃的元组


例如:


R


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


S


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


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


A B C
a2 b4 12


B E
b5 2


🔴外连接


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


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



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


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


🔴右外连接


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


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


8.除运算


c108d3e6f85a477f86e835a815d6edd2.jpg


列如:


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 D
b1 c2 d1
b2 c1 d1
b2 c3 d2


我们来求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}


五、结语


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

相关文章
|
Oracle Java 关系型数据库
Oracle jdk 的国内下载镜像
Oracle jdk 的国内下载镜像
55960 0
|
4月前
|
人工智能 自然语言处理 JavaScript
用 LLM 辅助性能测试报告生成
性能测试报告通常包含测试概述、方案说明、结果分析、问题定位、优化建议及上线评估等内容。报告编写面临数据分析复杂、撰写耗时、经验依赖等问题。引入大型语言模型(LLM),可实现报告智能生成,提升效率与专业度。LLM具备自然语言生成、数据归纳、专家知识迁移等能力,可适配多格式、多语言输出。通过构建LLM辅助的报告生成引擎,结合Prompt设计,可高效输出结构化报告。实践表明,LLM在测试结论总结、瓶颈分析与优化建议方面表现优异,为性能测试智能化升级提供有力支撑。
320 0
|
存储 运维 Cloud Native
数据库的未来发展趋势
【8月更文挑战第27天】数据库的未来发展趋势
787 4
|
10月前
|
机器学习/深度学习 计算机视觉 网络架构
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块
790 63
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块
|
9月前
|
存储 弹性计算 Cloud Native
云原生成本精细化管理实践:企迈科技的成本中心建设之路
企迈实施成本中心建设的项目核心目标不仅是实现云资源的优化配置,还要为管理层提供清晰、实时的成本数据分析,帮助管理层做出更加精准的决策。通过精细化的云成本管控,逐步实现成本降低、资源合理分配和更加高效的云产品使用。
云原生成本精细化管理实践:企迈科技的成本中心建设之路
可能是由于IntelliJ IDEA的某些设置或者插件冲突导致的
可能是由于IntelliJ IDEA的某些设置或者插件冲突导致的
1555 1
|
测试技术 网络安全 数据安全/隐私保护
burpsuite口令爆破的四种模式
burpsuite口令爆破的四种模式
|
存储 人工智能 NoSQL
现代数据库技术演进与应用前景分析
本文探讨了现代数据库技术的演进历程及其在各领域的应用前景。首先介绍了传统数据库的局限性,随后分析了NoSQL、NewSQL以及分布式数据库等新兴技术的特点和优势。接着探讨了人工智能、物联网、大数据等领域对数据库技术提出的新要求,并展望了未来数据库技术的发展趋势与应用前景。
|
存储 消息中间件 设计模式
新一代消息中间件—Apache Pulsar
新一代消息中间件—Apache Pulsar
1497 109