-
数据库关系代数
2016-09-06 23:04:46数据库关系代数遗忘知识点1、和(Union)运算、针对行
针对两张具有相同属 性的表,将两者表合并起来,在合并过程中遇到重复的行保留一项就行了。
2、差(difference)运算、针对行<喎�"/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjwvcD4KPHA+PHN0cm9uZz4gICAgICA8L3N0cm9uZz7V67bUwb3Vxb7f09DP4M2syvQg0NS1xLHto6y12tK71cWx7bz1yKW12rb+1cWx7dbQ09C1xMTayN2hozxicj4KPC9wPgo8cD48aW1nIHNyYz0="/uploadfile/Collfiles/20131221/201312210908016.jpg" alt="\">
3、交(intersection)运算、针对行
针对两张具有相同属 性的表,求出两个表相同的行。
4、广义笛卡尔积(Extended Cartesian Product)运算、针对行
两张表行的组合,并且属性是两者之和。
5.选择(Selection)运算、针对行
根据某种条件选择出指定的行。就是查询操作,一般用where语句。
6.投影(Projection)运算、针对列
选出一个表的某些属性。
7.连接(Join)运算、针对行
从第一张表中取出几行,从第二张表中取出几行,两者的笛卡尔乘积构成最终的结果。如果是自然连接还要取消相同属性的列。
-
数据库 关系代数
2019-03-10 19:44:39(1)数据库系统概论----关系运算之除运算 ...(2)数据库关系代数中除运算讲解和SQL语句的实现 https://blog.csdn.net/qq_22627687/article/details/53789362 ...(1)一文搞懂候选码、主码、全码、外码、主属性、主键、主关键字、非主属性总结
https://blog.csdn.net/sumaliqinghua/article/details/85872446(2)数据库系统概论----关系运算之除运算
https://blog.csdn.net/NeilDemo/article/details/50081895(3)数据库关系代数中除运算讲解和SQL语句的实现
https://blog.csdn.net/qq_22627687/article/details/53789362 -
数据库关系代数详解
2021-02-26 16:35:55数据库关系代数 1. 关系代数的运算 1.1 传统的关系运算 传统的关系运算起源于数学的集合论,有下面几种: 笛卡尔积运算 差运算 交运算 并运算 1.2 专门的关系运算 选择 投影 连接 除运算 1.2.1 关系运算中的基础...数据库关系代数
1. 关系代数的运算
1.1 传统的关系运算
传统的关系运算起源于数学的集合论,有下面几种:
- 笛卡尔积运算
- 差运算
- 交运算
- 并运算
1.2 专门的关系运算
- 选择
- 投影
- 连接
- 除运算
1.2.1 关系运算中的基础概念
在学习关系代数的时候,我们脑海中要时刻拥有一张表格,还有一些表格的参数,这张表格如下:
比如说我们每个人都见过成绩单,牢记以下的比喻
-
R就为整张成绩单
-
R[A1, A2, A3,…Ai] = R[语文,英语,数学……学科]
-
t
为某个同学 -
t [Ai] 就可以当作某个同学的某一门成绩
-
A
不再是单独的一个属性,A
可以代表一个或者多个属性 -
t[A]
也不再是单独的某个属性分量,A
代表多少个属性,t[A]
就可以代表多少个属性分量
- 做一个比喻,
A
再也不单独是某个学科,而是可以代表一科或者多科学科 t[A]
也就不当作某个同学的一门成绩,而是可以当成某个同学的多门成绩,具体看A代表了多少学科A
(头上一横……)就代表了全部的学科除了A代表的学科以外的学科
1.2.2 元组的连接
通过连接得到的这个元组,前m个分量是R表中的一个m元组,后n个分量是S表中的一个m元组
1.2.3 象集(除法运算重要工具)
给了我们一个关系
R(X,Y)
,X
和Y
都代表了一个属性组,也就是X
和Y
都是属性的数量都是一列到多列- 从上面的比喻来说,就是
X
是成绩单一门课程的成绩或者多门课程成绩,Y
也是一门成绩的课程或者多们成绩的课程 - 当
t[X] = x
时:x
在R
中的象集为:Yx = {t[Y] | t 属于 R, t[X] = x} - 公式比较难懂,但是其实本身概念很简单
如下例:
X1在y
属性分量上的象集就是全体X1对应的y上的属性分量组,也就是Y1,Y2,Y4
X2 在 y属性分量上的象集就是Y2
X4 在y属性分量上的象集就是Y3
1.3 数学上的运算
1.3.1 并运算
能够使用并运算的两个前提:
- 两张表格的元一样(两张表格列数一样)
- 相同的属性取自同一个域(属性都一样)
如图,在合并了之后呢,两个原始的表格和合并之后的新表格元数一样(列数一样),并且如果两个表之间有重复的,并运算会做去重处理,类似于集合的之间的并集
1.3.2 差运算
和并运算一样,差运算可以使用的前提
- 两个表格列数一样
- 两个表格的属性都相同
两个表进行了差运算之后,都仍然是n列
S-R
表:S表
中有任意一个元组和R表
的一样,S表
就去掉这个元组R-S
表:R表
中有任意一个元组和S表
的一样,R表
就去掉这个元组简言之:就是一张表,嫌弃另外一张表,我身上有那里和你一样,我改还不行嘛!
1.3.3 交运算
交运算能够使用的前提和前面两种运算一样
- 表格的列数相同
- 表格的属性都相同
两个表格进行并运算,就是把两个表格中一样的元素找出来,找出两张表格的共性
1.3.4 笛卡尔积
万能运算,没有任何限制。
R表
:n元
关系,k1
个元组(k1行,n列
)S表
:m元
关系,k2
个元组(k2行,m列
)R表
和S表
进行笛卡尔积得到一个
(m + n)元
,k1 * k2
列的新表,如下:
两个表进行了笛卡尔积运算之后
以上就是所有的数学关系代数运算
1.4 关系运算
整个关系代数的学习需要使用学生课程选课数据库,需要熟悉以下表格
1.4.1 表格简介
Student表:
Course表:
SC表:
1.4.2 选择(Selection)
- 选择也称之为限制
- 选择是针对的元组进行选择,选择出满足条件的元组
选出来的结果是一行行的
1.4.2.1 选择查询(例1)
查询全体信息系(IS)的学生
- 信息系在Student表格中有,所有我们的R表的位置是Student
Student表格的属性集合为
{"Sno", "Sname", "Ssex", "Sage", "Sdept"}
- 我们需要的条件是
F(Sdept = IS)
所以题目的答案为:
查询出来的结果为:
1.4.2.2 选择查询(例2)
查询年龄小于20岁的学生
- 年龄在Student表格中存在,所以我们现需要查询的表格为Student表格
- 我们需要的条件是年龄小于20岁F(Sage < 20)
所以题目的答案为:
查询出来的结果为:
1.4.2.3 选择查询(练习题)
- 查询性别为女生的学生信息
- 查询学分等于四分的课程信息
- 查询CS系的学生信息
总结:选择运算是查询符合条件的行
1.4.3 投影(Projection)
我们可以看见,使用选择运算的时候,一行的所有全部信息我们都获取了,比如我查询了小于20岁的学生信息,我连学生的名字,学号,性别所有的信息都知道了,因为选择是选择出一行一行的结果,那么如果我只想知道小于20岁的学生名字,其他学号,学院等等的信息我都不想知道
这里就需要投影运算
选择运算是针对属性进行选择的运算,也就是投影是选择出符合条件的一列,并且会自动取消某些行(后面会举例说明)
1.4.3.1 投影查询(例1)
查询学生的姓名和学生的系,从需要查询的这个条件可以看出来我们需要查询的是姓名列和学生所在系列
- 学生的姓名和所在系在Student表格中,所以我们需要在Student表格中进行查询
- 需要查询的属性为学生的姓名和学生的系
题目的答案为:
Sname 和 Sdept之间用逗号分隔
最终我们查询获取的答案如下:
1.4.3.2 投影查询(例2)
查询学生表Student中有那些系
- 首先,我们需要在Student表中进行查询
- 我们需要查询的属性为系
题目答案为:
可是我们最终查询出来的答案应该是什么样子的呢?图中演示的就是选择运算的自动去重功能
总结:投影查询得到的是一列
1.4.4 连接(Join)
连接的含义:从两个关系的笛卡尔积中选择属性之间满足一定关系的元组
解释:就是在两张表的笛卡尔积后得到的那张大表中再次选取一些符合我们条件的元组
符号:
1.4.4.1 一般连接(例题)
一般连接就是条件连接,需要将两个表格按照条件连接起来
第一步:
第二步:
第三步:
因为所有需要挑选的元组都挑选完毕,所以最终的结果如下图
1.4.4.2 等值连接
等值连接是一种特殊的一般连接
- 两个表需要有相同的属性列
下面通过具体的题目来进行了解
第三步:
最终的结果为:
1.4.4.3 自然连接(特殊的等值连接)
自然连接是一种特殊的等值连接,也是相等的相连,但是我们发现了等值连接的时候,因为R.B和S.B是相等的,所以R.B和S.B就重复了,如上图中最后结果的第二列的R.B和S.B,因为重复造成额外的空间浪费。所以自然连接就是用来解决这个问题的
1.4.4.4 外连接
我们从自然连接中又发现了一个问题,如下图:
就是图中标记为红色的地方,因为不符合我们的条件在自然连接和等值连接的时候都会被丢弃,这种连接叫做内连接,而与内连接相反的就叫外连接-
外连接:把R表和S表被丢弃的红色的元组捡了回来,并且在最终连接的表中没有的值用NULL替代,最终结果如下
-
左外连接:因为R表在左边,所以最终的结果只保留R表中被丢弃的,S表的仍然丢弃
-
右外连接:因为S表在右边,所以最终的结果只保留S表中被丢弃的,R表的仍然丢弃
1.4.5 除运算
一些学习上的感悟:除运算在关系代数中是一个十分强大的工具,但是除法运算的定义看起来十分的晦涩难懂,可定义又是十分重要的,相信很多人在看教科书的过程中,每次看定义这块的时候都会很懵,然后看了例子之后就会理解定义的意思,但是懂了定义的大意之后很少就会有人再回头去理解定义,例子固然是用来让我们可以清晰的理解定义的大意的,但是我们通过例子理解定义的大意之后,我们仍然要回归定义,只有这样我们才能学得深入(个人对于学习上的一些理解,欢迎一起交流)
假设我们手里面有一张数据库如下:
现在我们有一个问题,就是我们想要找出学习最积极的那位学生,也就是选修了所有课程的那个学生,先暂时放弃除法运算,以我们最朴素的情感,用自己的逻辑来解决这道题目,按照自己的想法,就像设计一个程序一样,需要几步做出这个问题
以下是按照我自己的想法:
-
首先,我要把SC表拆了,把每个学生单独做成一个表,如下:
-
然后问题就变成了拆开之后的表格和C表一一比对,找出拆开之后的三个表格中的Course属性和C表一模一样(也就是拆开之后包含了所有课程的表),然后找出那个人是谁,然后问题就解决了
实际上,我们的除法运算就是这个逻辑,但是除法运算的更为严谨,以下是除法运算的的步骤(SC ÷ C),这里我们仍然采用我们上面使用的数据库,直接说结论(SC ➗ C)能找出答案
-
第一步:找出C表中和SC表中相同的属性,也就是C属性,对C属性做投影操作(也就是找出总的课程有多少门)
-
第二步:找出SC表中和C表不相同的属性,也就是S属性,也对S属性做投影操作(找出一共有几个学生)
-
第三步:找出SC表中S的象集(每个学生分别都选了些什么课)
-
最后一步就是进行比对,只有张三的象集包含了所有C表中的所有课程,所以(SC ➗ C = 张三)
下面是简单的总结,当我们需要获取选取所有课程的学生的名单的时候
第一步:我们需要获取所有的课程到底是那些课程,所以我们对C表进行投影
第二步:我们需要获取选课的学生有那些,所以我们需要对SC表的S进行投影
第三步:我们需要知道每个学生都选择哪些课程才能知道那个学生全选了课程,所以我们还需要的数据是SC表中,S的象集
第四步:也就是最后一步,我们需要进行比对,看看那个学生的象集包含了C表的投影
除法运算像一个函数,封装了以上的所有功能,我们调用这个函数的时候,把正确的参数放进去,就可以得到我们想要的答案
当我们看完结论再回头看定义,除法运算的定义如下:
多读几遍,我也想用自己的话把定义解释以下,但是如果不使用例子,把定义用自己的话解释一遍对于我来说太困难了……只可意会不可言传……如果使用例子无非把上面的例子再说一遍,这里使用其他博客的对于除法运算的总结:RS÷S的意义就是:“在R和S的联系RS中,找出与S中所有的元组有关系的R元组” 这篇博客地址为:关系代数除法运算
❤️完结撒花❤️
-
数据库关系代数例题.docx
2020-12-20 20:03:50数据库关系代数复杂查询部分例题 -
数据库关系代数作业题及答案
2018-04-21 17:24:51这是老师给的标准数据库关系代数作业题和答案,给同学们一个参考。 -
数据库关系代数的连接图画法.xlsx
2020-03-06 22:27:34这是关于“如何画关系代数的连接图?(数据库关系代数中笛卡儿积、θ连接、等值连接、自然连接、外连接)”的草稿图 -
数据库关系代数表达式学习
2015-11-01 21:55:33数据库关系代数表达式原文链接 http://www.blogjava.net/decode360/archive/2009/04/15/292362.html
注:修改了原链接中的少数错误
关系代数是关系数据库系统查询语言的理论基础。很有必要学习一下,有些是用代数表达式很方便的东西,用SQL写出来还是挺麻烦的,并不是想象当中那么直接。一、关系代数的9种操作:关系代数中包括了:并、交、差、乘、选择、投影、联接、除、自然联接等操作。五个基本操作:并(∪)、差(-)、笛卡尔积(×)、投影(σ)、选择(π)四个组合操作:注2:等值连接表示先做笛卡尔积(×)之后,对相应列进行选择或等值关联后的结果(仅筛选行、不筛选列)注2:自然连接表示两个关系中若有相同名称的属性,则自动作为关联条件,且仅列出一列二、关系代数表达式:由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。三、举例说明:设教学数据库中有3个关系:
学生关系S(SNO,SNAME,AGE,SEX)
学习关系SC(SNO,CNO,GRADE)
课程关系C(CNO,CNAME,TEACHER)(1) 检索学习课程号为C2的学生学号与成绩------------------------------------SELECT SNO,GRADEFROM SCWHERE CNO='C2'------------------------------------π SNO,GRADE(σCNO='C2'(SC))************************************(2) 检索学习课程号为C2的学生学号与姓名------------------------------------SELECT SC.SNO,S.SNAMEFROM SC,SWHERE SC.SNO=S.SNOAND SC.CNO='C2'------------------------------------此查询涉及S和SC,先进行自然连接,然后再执行选择投影操作。----自然连接的右分量为"学了C2课的学生学号的集合"。此表达式比前一个表达式优化,执行起来要省时间、省空间。************************************(3) 检索选修课程名为MATHS的学生学号与姓名
------------------------------------SELECT SC.SNO,S.SNAMEFROM SC,S,CWHERE SC.SNO=S.SNOAND SC.CNO=C.CNOAND C.CNAME='MATHS'------------------------------------************************************(4) 检索选修课程号为C2或C4的学生学号------------------------------------SELECT SNOFROM SCWHERE CNO='C2'OR CNO='C4'------------------------------------π SNO(σ CNO='C2'∨CNO='C4'(SC))************************************(5) 检索至少选修课程号为C2和C4的学生学号------------------------------------SELECT SA.SNOFROM SC AS SA,SC AS SBWHERE SA.SNO=SB.SNOAND SA.CNO='C2'AND SB.CNO='C4'------------------------------------π 1(σ1=4 ∧ 2='C2' ∧ 5='C4'(SC×SC))************************************(6) 检索不学C2课的学生姓名与年龄------------------------------------SELECT SNAME,AGEFROM SMINUSSELECT S.SNAME,S.AGEFROM SC,SWHERE SC.SNO=S.SNOAND SC.CNO='C2'(Oracle)************************************(7) 检索学习全部课程的学生姓名------------------------------------这个定义用SQL表示比较麻烦,略过------------------------------------π SNO,CNO(SC)÷πCNO(C)先用除法取出选取所有课程的SNO集(除法可以理解为一个Filter)再关联S表取出SNAME************************************(8) 检索所学课程包含S3所学课程的学生学号------------------------------------这个定义用SQL表示比较麻烦,略过------------------------------------π SNO,CNO(SC)÷ πCNO(σSNO='S3'(SC))同样运用了除法的特性************************************(9) 将新课程元组('C10','PHYSICS','YU')插入到关系C中------------------------------------INSERT INTO C VALUES('C10','PHYSICS','YU')------------------------------------(C∪('C10','PHYSICS','YU'))记住该符号的用法************************************(10) 将学号S4选修课程号为C4的成绩改为85分------------------------------------UPDATE SC SET GRADE=85WHERE SNO='S4'AND CNO='C4'------------------------------------(SC-('S4','C4',?)∪('S4','C4',85))先用'-'实现DELETE功能,再用'∪'实现INSERT功能注意使用?来表示检索时忽略该字段值************************************四、关系代数表达式的优化:目的:为了系统在执行时既省时间又能提高效率。
基本策略:先做选择,运用投影去除多余属性等等。
优化算法:语法树(尽量提前做选择操作;在每个操作后,应做个投影操作,去掉不用的属性值)例如:--即提前做选择操作;在每个操作后,应做个投影操作,去掉不用的属性值又如:S(S#,SNAME,AGE,SEX)
SC(S#,C#,GRADE)
C(C#,CNAME,TEACHER)优化前和优化后的语法树如下所示:
-
[手写笔记]数据库关系代数练习题
2021-02-27 15:57:46数据库关系代数练习题 因为数据库关系代数的特殊符号在电脑上很难输入……所以采用了手写,字不太好看???? 第一部分 第二部分 数据库如下: 题目如下: 第三部分 -
数据库关系代数操作与扩展操作
2021-03-14 15:34:59数据库关系代数操作与扩展操作 序: 本篇主要介绍数据库的关系操作及其用数学怎么表示。 **1.**关系代数操作分为集合操作和纯关系操作。(下面附战德臣老师课件的一张图以便于理解) **2.**并运算(U) 类似于数学... -
关系数据库关系代数
2017-11-16 10:07:00之前在学习数据库时接触过关系代数,只是在经过很长一段时间不应用之后,不能很快从大脑中将知识调出来,今天就来了个再次学习总结加深自己的印象。 关系代数:是一种抽象的查询语言,用对关系的运算来表达 查询。... -
快速了解常见的数据库关系代数
2021-01-01 21:36:22数据库关系代数 关系代数符号整体把握 下面来分点看看常见的关系代数及运用 1. 并运算,交运算,差运算 这个应该很简单,直接上图吧,假设有两张基础表 下面是两张表的三种基础运算结果 这个应该挺简单的,和... -
关系代数的自然连接符号_软件评测师写作专栏之数据库关系代数运算06
2020-12-23 07:40:09各位学员大家好,大家在学习数据库关系代数运算时,感觉很多符号都不认识,具体的运算也有其先后顺序,为了让大家快速掌握这方面的知识点,接下来就带领大家一起来学习一下!例题:若有关系R(A,B,C,D,E)和S(B,C,F,G)... -
数据库关系代数总结
2018-12-01 15:30:46第二章 关系数据库 关系数据库简介 1,提出关系模型的是美国IBM公司的E.F.Codd 1970年提出关系数据模型 E.F.Codd, “A Relational Model of ...2,之后,提出了关系代数和关系演算的概念 3,1972年提出了关系... -
数据库关系代数习题.pdf
2020-06-17 21:38:061. 设有如图所示的关系 RW和 D计算下列关系代数 1R1 Y ,T ( R) 2R2 P 5 T e ( R) 3R3 R W 4 R4 [2],[1],[6] ( [ 3] [5] (R D) 5R5 R D 关 系 R 关 系W 关 系 D P Q T Y T Y B T Y 2. 设有如下关系 2 b c d c d m c d... -
【数据库 关系代数和SQL】经典查询总结
2021-03-20 16:15:10数据库关系代数 所有和包含关系 至少有 全部 所有…(用除法) 不 没有… 否定和非的关系 用差(减) 同时选两门课 同时有两条记录(用笛卡尔积 根据列序号选择) 数据库SQL语句 聚合函数 GROUP BY和... -
数据库关系代数基础
2020-04-15 18:59:27文章目录一、关系代数符号写法二、关系代数解析1、set operations2、selection3、projection4、条件连接5、外连接6、除法 一、关系代数符号写法 符号 写法 ∏\prod∏ \prod ⋈\bowtie⋈ \bowtie σ\... -
数据库关系代数练习习题.docx
2020-12-22 17:48:31设有如图所示的关系 R W和 D计算下列关系代数 1R1 Y,T ( ) (R) R 2 R2 P 5 T e 3R3 R[2],[1],[6] ( [ 3] [5] (R D) 5R5 R D 关系 W 关 系 D 关系 R P Q T Y T Y B T Y 2. 设有如下关系 c d c d m c d 2 b 9 a e f c ... -
数据库关系代数整理
2013-04-16 17:25:07n目k元组:n个属性,k个行 关系代数运算的分类 传统的集合运算 并、差、交、广义笛卡尔积 专门的关系运算 选择、投影、连接、除 -
数据库关系代数运算
2018-07-26 17:27:00转自数据库-关系代数(类型、完整性约束、基本运算、扩展运算) (1)基本概念 ① 属性和域: 每个事物有很多属性,每个属性对应的取值范围叫做域,所有对域都是原子数据(第一范式) ② 相关名词 n元关系:R... -
数据库关系代数专题(图形、SQL代码结合)
2010-02-22 00:03:07数据库关系代数专题,图形、SQL代码结合。 -
数据库系统讲人话系列 关系数据库 关系代数
2020-04-21 16:35:25附常用名词转化: 【1】关系:即我们脑子里面的一张二维...关系代数在数据库里面的作用就相当于把我们在 Excel 里面的操作用数学语言表达出来。 第二话:关系代数 1.1 传统集合运算 就是:“交并差”。 R∩SR \cap SR...