关系模型知识点总结(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}


五、结语


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

相关文章
|
人工智能 算法 搜索推荐
题库管理|考试管理|基于Web的大学生题库管理系统的设计与实现
题库管理|考试管理|基于Web的大学生题库管理系统的设计与实现
652 0
|
XML C# 数据格式
WPF技术之xmlns
在WPF中,xmlns是XML命名空间(XML Namespace)的缩写,用于引入不同的XML命名空间,以便在XAML文件中使用特定的命名空间中的元素、属性和类型。
662 1
|
Oracle Java 关系型数据库
Oracle jdk 的国内下载镜像
Oracle jdk 的国内下载镜像
51029 0
|
存储 运维 Cloud Native
数据库的未来发展趋势
【8月更文挑战第27天】数据库的未来发展趋势
628 4
可能是由于IntelliJ IDEA的某些设置或者插件冲突导致的
可能是由于IntelliJ IDEA的某些设置或者插件冲突导致的
1314 1
|
10月前
|
数据采集 算法 大数据
大数据中噪声数据处理
【10月更文挑战第20天】
1578 2
|
Java Apache Windows
Jmeter和JDK下载安装及环境变量配置详细教程
Jmeter和JDK下载安装及环境变量配置详细教程,检验是否安装java环境,若无java环境,先下载安装JDK并配置环境变量;再下载安装Jmeter并配置环境变量,Windows系统双击jmeter.bat文件启动Jmeter,或者在cmd中输入:jemter可正常启动jmeter的GUI界面,则jmeter安装及环境变量配置正常。。。
10796 2
Jmeter和JDK下载安装及环境变量配置详细教程
|
11月前
|
测试技术 网络安全 数据安全/隐私保护
burpsuite口令爆破的四种模式
burpsuite口令爆破的四种模式
|
算法 物联网 调度
操作系统调度算法的演进与性能评估
本文深入探讨了操作系统中进程调度算法的发展轨迹,从早期的先来先服务(FCFS)到现代的多级队列和反馈控制理论。通过引用实验数据、模拟结果和理论分析,文章揭示了不同调度策略如何影响系统性能,特别是在响应时间、吞吐量和公平性方面。同时,本文也讨论了在云计算和物联网等新兴领域,调度算法面临的挑战和未来的发展方向。