精华内容
下载资源
问答
  • 数据库关系代数
    千次阅读
    2021-04-21 16:09:58

    关系代数是关系数据库系统查询语言的理论基础。很有必要学习一下,有些是用代数表达式很方便的东西,用SQL写出来还是挺麻烦的,并不是想象当中那么直接。

    一、关系代数的9种操作:

    关系代数中包括了:并、交、差、乘、选择、投影、联接、除、自然联接等操作。
    

    五个基本操作:
    并()、差(-)、笛卡尔积(×)、投影(σ)[Where]、选择(π)[Select]

    四个组合操作:
    交()、
    联接(等值联接):等值连接表示(1)先做笛卡尔积(×)之后,(2)对相应列进行选择或等值关联后的结果(仅筛选行、不筛选列)
            (仅筛选行、不筛选列):即只作用于行上不作用于列上。
            如例子:(σ1=4∧2='C2’∧5=‘C4’(SC×SC)) 1.先(SC×SC)2.作用于列σ1=4∧2='C2’∧5=‘C4’
    自然联接(RcrossS):自然连接表示两个关系中若有相同名称的属性(列),则自动作为关联条件,且仅列出一列。
            如例子:(σCNO=‘C2’(ScrossSC))中的(ScrossSC)
    除法(÷)

    通过下面的例子可以看出,(ScrossSCcrossC)(RcrossS),这样的写法,说明默认肯定了cross的定义为连接表有相同名称的属性(即列)
    π列(σ(条件)(from后面的表))
    ∨[or]

    π 1(σ1=4∧2='C2'∧5='C4'(SC×SC))

    π SNO(σ CNO='C2'∨CNO='C4'(SC))

    二、关系代数表达式:

    由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。

    三、举例说明:

    设教学数据库中有3个关系:

    学生关系S(SNO,SNAME,AGE,SEX)

    学习关系SC(SNO,CNO,GRADE)

    课程关系C(CNO,CNAME,TEACHER)

    (1) 检索学习课程号为C2的学生学号与成绩

    SELECT SNO,GRADE
    FROM SC WHERE CNO=‘C2’

    π SNO,GRADE(σCNO='C2'(SC))


    (2) 检索学习课程号为C2的学生学号与姓名

    SELECT SC.SNO,S.SNAME
    FROM SC,S
    WHERE SC.SNO=S.SNO
    AND SC.CNO=‘C2’

    π SNO,SNAME(σCNO='C2'(ScrossSC))

    此查询涉及S和SC,先进行自然连接,然后再执行选择投影操作。

    π SNO,SNAME(S)cross(πSNO(σCNO='C2'(SC)))

    自然连接的右分量为"学了C2课的学生学号的集合"。
    此表达式比前一个表达式优化,执行起来要省时间、省空间。


    (3) 检索选修课程名为MATHS的学生学号与姓名

    SELECT SC.SNO,S.SNAME
    FROM SC,S,C
    WHERE SC.SNO=S.SNO
    AND SC.CNO=C.CNO
    AND C.CNAME=‘MATHS’

    π SNO,SANME(σCNAME='MATHS'(ScrossSCcrossC))


    (4) 检索选修课程号为C2或C4的学生学号

    SELECT SNO
    FROM SC
    WHERE CNO=‘C2’
    OR CNO=‘C4’

    π SNO(σ CNO='C2'∨CNO='C4'(SC))


    (5) 检索至少选修课程号为C2或C4的学生学号

    SELECT SA.SNO
    FROM SC AS SA,SC AS SB
    WHERE SA.SNO=SB.SNO
    AND SA.CNO=‘C2’
    AND SB.CNO=‘C4’

    π 1(σ1=4∧2='C2'∧5='C4'(SC×SC))


    (6) 检索不学C2课的学生姓名与年龄

    SELECT SNAME,AGE
    FROM S
    MINUS
    SELECT S.SNAME,S.AGE
    FROM SC,S
    WHERE SC.SNO=S.SNO
    AND SC.CNO=‘C2’

    π SNAME,AGE(S)-πSNAME,AGE(σCNO='C2'(ScrossSC))


    (7) 检索学习全部课程的学生姓名

    这个定义用SQL表示比较麻烦,略过

    π SNO,CNO(SC)÷πCNO©
    先用除法取出选取所有课程的SNO集(除法可以理解为一个Filter)

    π SNAME(S cross (πSNO,CNO(SC)÷πCNO(C)))

    再关联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=85
    WHERE SNO=‘S4’
    AND CNO=‘C4’

    (SC-('S4','C4',?)∪('S4','C4',85))

    先用’-'实现DELETE功能,再用’∪’实现INSERT功能
    注意使用?来表示检索时忽略该字段值


    四、关系代数表达式的优化:

    目的:为了系统在执行时既省时间又能提高效率。
    基本策略:先做选择,运用投影去除多余属性等等。
    优化算法:语法树(尽量提前做选择操作;在每个操作后,应做个投影操作,去掉不用的属性值)

    例如:

    π SNO,SNAME(σGRADE>60(ScrossSC))

    进行优化后转换为:

    π SNO,SNAME(πSNO,SNAME(S)crossπSNO(σGRADE>60(SC)))

    —即提前做选择操作;在每个操作后,应做个投影操作,去掉不用的属性值

    又如:

    SC(S#,C#,GRADE)
    C(C#,CNAME,TEACHER)

    π CNAME,TEACHER(σSEX=‘女’(ScrossSCcrossC))
    进行优化后转换为:

    πCNAME,TEACHER(CcrossπC#(πS#,C#(SC)crossπS#(σSEX=‘女’(S))))

    优化前和优化后的语法树如下所示:
    在这里插入图片描述
    原文链接:http://www.blogjava.net/decode360/archive/2009/04/15/292362.html

    更多相关内容
  • 数据库关系代数练习习题.docx
  • 这是我一篇数据库关系代数博客中的内容,整理了一下做成了pdf
  • 这是老师给的标准数据库关系代数作业题和答案,给同学们一个参考。
  • 数据库关系代数详解

    万次阅读 多人点赞 2021-02-26 16:35:55
    数据库关系代数 1. 关系代数的运算 1.1 传统的关系运算 传统的关系运算起源于数学的集合论,有下面几种: 笛卡尔积运算 差运算 交运算 并运算 1.2 专门的关系运算 选择 投影 连接 除运算 1.2.1 关系运算中的基础...

    数据库关系代数

    1. 传统的关系运算

    传统的关系运算起源于数学的集合论

    1. 笛卡尔积运算
    2. 差运算
    3. 交运算
    4. 并运算

    2. 专门的关系运算

    数据库中特有的运算规则

    1. 选择
    2. 投影
    3. 连接
    4. 除运算

    2.1 关系运算中的基础概念

    在学习关系代数的时候,脑海中要时刻拥有一张表格,还有表格的一些参数,表格如下:

    比如说我们每个人都见过成绩单,牢记以下的比喻

    • R(关系模式)就是一张表格(成绩单)。

    • R[A1, A2, A3,…Ai] = R[语文,英语,数学……学科]

    • t 为某个同学

    • t [Ai] 就可以当作某个同学的某一门成绩

    例如:R为期中考试全班的成绩单,R[A1, A2, A2…Ai]为考试所有科目,t 代表了张三这个人,t[Ai]代表了张三某门课程的考试成绩。

    • A不再是单独的一个属性,A可以代表一个或者多个属性
    • t[A]也不再是单独的某个属性分量,A代表多少个属性,t[A]就可以代表多少个属性分量
    • 做一个比喻,A再也不单独是某个学科,而是可以代表一科或者多科学科
    • t[A]也就不当作某个同学的一门成绩,而是可以当成某个同学的多门成绩,具体看A代表了多少学科
    • A头上一横……)就代表了除了A代表的学科以外的所有学科

    2.2 元组的连接

    通过连接得到的这个元组有以下属性

    • 前 m 个分量来自于 R 表中的一个 m 元组
    • 后 n 个分量来自于 S 表中的一个 n 元组

    2.3 象集(除法运算重要工具)

    给了我们一个关系R(X,Y)XY都代表了一个属性组,也就是XY都是属性的数量都是一列到多列

    • 从上面的比喻来说,X是成绩单一门课程的成绩或者多门课程成绩,Y也是一门课程的成绩或者多门课程的成绩
    • t[X] = x时: xR中的象集为:Yx = {t[Y] | t 属于 R, t[X] = x}
    • 公式比较难懂,但是其实本身很简单也十分容易寻找

    如下例:

    3 数学上的运算

    3.1 并运算

    能够使用并运算的两个前提

    1. 两张表格的元一样(两张表格列数一样)
    2. 相同的属性取自同一个域(属性都一样)

    如图,在合并了之后呢,两个原始的表格和合并之后的新表格元数一样(列数一样)

    • 如果两个表之间有重复的元组,并运算会做去重处理,类似于集合的之间的并集

    3.2 差运算

    能够使用差运算的两个前提

    1. 两个表格列数一样
    2. 两个表格的属性都相同

    两个表进行了差运算之后,都仍然是n列

    S-R表:S表中有任意一个元组和R表的一样,S表就去掉这个元组

    R-S表:R表中有任意一个元组和S表的一样,R表就去掉这个元组

    简言之:就是一张表,嫌弃另外一张表,我身上有那里和你一样,我改还不行嘛!

    3.3 交运算

    交运算能够使用的两个前提

    1. 表格的列数相同
    2. 表格的属性都相同

    两个表格进行并运算,就是把两个表格中一样的元素找出来,找出两张表格的共性

    3.4 笛卡尔积(万能运算)

    没有任何使用限制,万物皆可笛卡尔积。

    R表n元关系,k1个元组(k1行,n列)

    S表m元关系,k2个元组(k2行,m列)

    R表S表进行笛卡尔积

    得到一个(k1 * k2)元(n + m)列的新表,如下:

    两个表进行了笛卡尔积运算之后

    以上就是所有的数学关系代数运算

    4. 关系运算

    整个关系代数的学习需要使用学生课程选课数据库,需要熟悉以下表格:

    4.1 表格简介

    Student表:

    Course表:

    SC表:


    4.2 选择(Selection)

    • 选择也称之为限制
    • 选择是针对的元组进行选择,选择出满足条件的元组

    选出来的结果是一行行的

    4.2.1 选择查询(例1)

    查询全体信息系(IS)的学生所有信息

    1. 信息系在Student表格中有,所有我们的R表的位置是Student

      Student表格的属性集合为{"Sno", "Sname", "Ssex", "Sage", "Sdept"}

    2. 我们需要的条件是F(Sdept = IS)

    所以题目的答案为:

    查询出来的结果为:

    4.2.2 选择查询(例2)

    查询年龄小于20岁的学生所有信息

    1. 年龄在Student表格中存在,所以我们现需要查询的表格为Student表格
    2. 我们需要的条件是年龄小于20岁F(Sage < 20)

    所以题目的答案为:

    查询出来的结果为:

    4.2.3 选择查询(练习题)

    1. 查询性别为女生的学生信息
    2. 查询学分等于四分的课程信息
    3. 查询CS系的学生信息

    总结:选择运算是查询符合条件的行


    4.3 投影(Projection)

    我们可以看见,使用选择运算的时候,一行的所有全部信息我们都获取了,比如我查询了小于20岁的学生信息,我连学生的名字,学号,性别所有的信息都知道了,因为选择是选择出一行一行的结果,那么如果我只想知道小于20岁的学生名字,其他学号,学院等等的信息我都不想知道

    这里就需要投影运算

    投影运算是针对属性进行选择的运算,也就是投影是选择出符合条件的一列,并且会自动取消某些行(后面会举例说明)

    4.3.1 投影查询(例1)

    查询学生的姓名和学生的系,从需要查询的这个条件可以看出来我们需要查询的是姓名列和学生所在系列

    1. 学生的姓名和所在系在Student表格中,所以我们需要在Student表格中进行查询
    2. 需要查询的属性为学生的姓名和学生的系

    题目的答案为:

    Sname 和 Sdept之间用逗号分隔

    最终我们查询获取的答案如下:

    4.3.2 投影查询(例2)

    查询学生表Student中有那些系

    1. 首先,我们需要在Student表中进行查询
    2. 我们需要查询的属性为系

    题目答案为:

    可是我们最终查询出来的答案应该是什么样子的呢?

    图中演示的就是选择运算的自动去重功能

    总结:投影查询得到的是一列

    4.3.3 选择和投影配合使用(重点)

    选择查询是挑选出符合条件的行,投影查询是选择想要的列,那么如果想定位到一个具体的属性,就需要两种查询方式一起使用。

    如图:

    当我们需要全体数学学院的学生姓名,注意,只需要学生的姓名,其他的信息都不需要。

    • 先用选择运算将所有的数学学院的学生挑选出来

    选择运算的基础上,把需要符合条件的姓名通过投影运算查询出来

    全体数学学院的学生的姓名(交叉区域):言小白,李白。


    4.4 连接(Join)

    连接的含义:从两个关系的笛卡尔积中选择属性之间满足一定关系的元组

    解释:在两张表的笛卡尔积后得到的那张大表中再次选取一些符合我们条件的元组

    多种符号:不同的连接方式对应的符号也有一些细微的差别

    4.4.1 一般连接(例题)

    一般连接就是条件连接,需要将两个表格按照条件连接起来

    第一步:

    第二步:

    第三步:

    因为所有需要挑选的元组都挑选完毕,所以最终的结果如下图

    4.4.2 等值连接

    等值连接是一种特殊的一般连接

    • 两个表需要有相同的属性列

    下面通过具体的题目来进行了解

    第三步:

    最终的结果为:

    4.4.3 自然连接(特殊的等值连接)

    自然连接是一种特殊的等值连接

    这里我们发现了等值连接的一个缺点,R.B和S.B属性是相等的,而我们只需要其中一列就可以,所以R.B和S.B属性只需要保留任意一列就可以了。

    换句话说,等值连接因为属性重复而造成了额外的空间浪费,所以我们需要使用自然连接来解决这个问题(去掉重复的列)。

    4.4.4 外连接

    我们从自然连接中又发现了一个问题,如下图:

    图中标记为红色的地方:

    在做等值连接时由于彼此之间没有对应的元组(彼此之间特有的元组,我有的你没有,或者你有的我没有,这种情况肯定不会相等),在自然连接和等值连接的时候都会被丢弃,这种连接叫做内连接

    而有时候我们需要保留一张表中这种特有的元组,这些元组不能被丢弃,所以需要使用与内连接相反的连接——外连接解决特有的元组被丢弃的问题

    外连接:把R表和S表被丢弃的元组捡了回来,并且在最终连接的表中没有的值用NULL替代,最终结果如下

    • 左外连接:因为R表在左边,所以最终的结果只保留R表中被丢弃的特有元组S表的特有元组仍然丢弃
    • 右外连接:因为S表在右边,所以最终的结果只保留S表中被丢弃的特有元组R表的特有元组仍然丢弃

    4.4.5 例题

    很多时候需要查询的数据分布在两个表格甚至多个表格中,使用连接将表格连接在一起进行查询是十分常用的操作

    有表格信息如下:

    一、查询所有学生的学号,姓名,课程号以及成绩

    • 需要查询的信息分布 S 表和 SC 表中
    • 两张表拥有相同的属性,即Sno,所以连接条件就是 S.sno = SC.sno

    答案:

    当然,使用自然连接也是正确的,自然连接会自动找到相同的属性,并且默认条件就是相同属性的值相同,自然连接就是特殊的等值连接

    二、查询CS系的学生的学号,课程号,以及成绩

    • 需要查询的信息分布在 S 表和 SC 表中
    • 两张表相同的属性是 Sno,所以依靠 Sno 将两张表连接
    • 需要对连接后的表格进行选择,条件是 Sdept = ‘CS’

    答案:

    其实这道题可以再优化一下

    因为我们只需要 S 表中属于CS系的,没必要将 S 表的所有系的学生都和 SC 表连接起来
    所以可以先把 S 表中 CS 系的学生挑选出来,然后再进行连接操作。

    优化后的答案:

    很明显优化后的结果挑选速度更快,占用空间更小。


    4.5 除运算

    一些学习上的感悟:除运算在关系代数中是一个十分强大的工具,但是除法运算的定义看起来十分的晦涩难懂,可定义又是十分重要的,相信很多人在看教科书的过程中,每次看定义这块的时候都会很懵,然后看了例子之后就会理解定义的意思,但是懂了定义的大意之后很少就会有人再回头去理解定义,例子固然是用来让我们可以清晰的理解定义的大意的,但是我们通过例子理解定义的大意之后,我们仍然要回归定义,只有这样我们才能学得深入(个人对于学习上的一些理解,欢迎一起交流)

    4.5.1 除运算基本概念

    假设我们手里面有一张数据库如下:

    现在我们有一个问题,就是我们想要找出学习最积极的那位学生,也就是选修了所有课程的那个学生,先暂时放弃除法运算,以我们最朴素的情感用自己的逻辑来解决这道题目,按照自己的想法,就像设计一个程序一样,需要几步做出这个问题

    以下是按照我自己的想法:

    • 首先,把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表的投影

    除法运算像一个函数,封装了以上的所有功能,我们调用这个函数的时候,把正确的参数放进去,就可以得到我们想要的答案

    4.5.2 例题

    S表 :

    C 表:

    SC 表:

    题目如下:

    查询选修了所有课程的学生姓名,年龄

    1. 对 C 表进行投影,找出所有的课程编号
    2. 用 SC 表 C表,找出选了C表中所有课程的学生
    3. 将符合条件的学生的姓名和年龄找出来

    答案:

    其中,第2步的除法运算详细过程如下:


    当我们看完结论,做完题目,再回头看定义,除法运算的定义如下:

    反复多理解几次,也想用自己的话解释定义,但是定义太抽象了,不举例很难说清楚。

    ……只可意会不可言传……如果使用例子无非把上面的例子再说一遍。

    这里使用其他博客的对于除法运算的总结:RS÷S的意义就是:“在R和S的联系RS中,找出与S中所有的元组有关系的R元组”,这篇博客地址为:关系代数除法运算

    ❤️完结撒花❤️


    2021/5/24:特别鸣谢ai_leilei指出本文错误之处,现已修改!

    展开全文
  • 1.查找10号部门员工的所有信息 2.找出10号部门工资大于3500的员工的姓名和工资 3. union 集合并是行的堆叠 4. 查询10号部门及20号部门的员工(两种方式)
  • 这是关于“如何画关系代数的连接图?(数据库关系代数中笛卡儿积、θ连接、等值连接、自然连接、外连接)”的草稿图
  • 数据库关系代数复杂查询部分例题
  • 数据库关系代数简单查询部分例题
  • 数据库 关系代数

    万次阅读 多人点赞 2020-02-09 23:56:53
    关系代数是一种抽象的查询语言 关系代数的运算对象与运算结果都是关系 集合运算 把关系看出元组的集合,以元组作为集合中的元素进行集合运算 集合运算是典型的二目运算(除笛卡尔积外),交,并,差操作都需满足...

    超详解析,手打不易,转载注明出处,点赞收藏,多谢支持


    • 关系代数是一种抽象的查询语言
    • 关系代数的运算对象运算结果都是关系
    • 由于运算结果也是关系,所以新关系内的元组也不能有重复的

    集合运算


    把关系看成元组的集合,以元组作为集合中的元素进行集合运算

    集合运算是典型的二目运算(除笛卡尔积外),交,并,差操作都需满足相容性
    ① 具有相同的度(即两个关系的属性名、属性数量必须一致);
    ② 关系R中第i个属性和关系S中第i个属性必须来自同一域。


    并(Union)运算:R ∪ S = { t | t∈R ∨ t∈S }

      其中 t 是元组

      并运算实例:合并两个集合,去掉重复的

    在这里插入图片描述       在这里插入图片描述

                    R ∪ S =
    R∪S




      

    交(Intersection)运算:R ∩ S = { t | t∈R ∧ t∈S }

     其中 t 是元组

      交运算实例:选出在两个关系内相同的元组

    在这里插入图片描述       在这里插入图片描述

                    R ∩ S =
    R ∩ S



      

    差(difference)运算:R - S = { t | t∈R ∧ ¬t∈S }

      其中 t 是元组,R-S的差 = R减去R和S的交集

      差运算实例:R-S的差 = R减去R和S的交集

    在这里插入图片描述       在这里插入图片描述

                    R - S =
    R - S



      

    笛卡尔积:R × S = { tr⌒ts| tr∈R ∧ ts∈S }

    域的笛卡尔积 = 域的基数相乘
    而集合的笛卡尔积也是如此,把集合内元组的个数看作域的基数相乘,得到的就是集合的笛卡尔积

    笛卡尔积实例:R中的3元组 × S中的3元组 = 9,则诞生出的新关系有9个元组

    在这里插入图片描述       在这里插入图片描述

                    R × S =
    R - S





    关系运算


    选择(selection)运算:σF( R ) = { t | t∈R ∧ F(t) = ‘真’ }

      从R关系表内选择出符合关系F的元组t

      选择运算实例:选择出T关系中年龄大于18岁的男性

    在这里插入图片描述
    σ(Sex=‘男’ ∧ Age>18)( T ) = 在这里插入图片描述



      

    投影(projection)运算:A( R ) = { t[A]| t∈R }

      从R关系表内投影出每个元组的A列构成新关系

      投影运算实例:投影出T关系中姓名、年龄两列

    在这里插入图片描述
            Name,Age( T ) =
    Alt



      

    选择投影组合运算:A( σF( R ) )

      可以从特定元组中投影出特定列
    从R关系中选出符合F条件的元组,在从这些元组内投影出特定的A列

      选择投影组合运算实例:选择出T关系中年龄大于18岁的男性并投影出该关系中姓名、年龄两列

    在这里插入图片描述
       Name,Age( σ(Sex=‘男’∧Age>18)(T)) = Alt



      

    连接(join):通过共同属性连接两个表,又称θ连接

    连接分为两种

      ① 等值连接:R.A = S.B(A、B属性名可不同也可以相同)

        语法:R ⋈AθBS = { tr ⌒ ts | tr ∈ R ∧ ts ∈ S ∧ tr[A] = ts[B] }

    其中,R和S为关系表,A、B分别是关系R、S上的可比属性组(A、B两个属性组的域相同,就称为可比属性组)

    θ称为比值符,也就是>、<、=号;
    θ两边的属性相等时,等值S连接成立;

    等值连接其结果是从关系R和S的笛卡尔积中选出属性组AB相等的元组,即:σ(A=B)(R×S)

    等值连接实例:学生关系S 与 课程关系C进行等值连接

    在这里插入图片描述


    公式:S ⋈ C = { ts ⌒ tc | ts ∈ S ∧ tc ∈ C ∧ ts[CNO] = tc[CNO] }
    在这里插入图片描述

    结果可以看作是:从S×C的笛卡尔积内选择出S.CNO = C.CNO的元组,即:σ(CNO=CNO)(S×C)


      
      ② 自然连接:R.A = S.A(必须有相同的属性名且域相同才可以进行自然连接)

        语法:R ⋈S = { tr ⌒ ts | tr ∈ R ∧ ts ∈ S ∧ tr[A] = ts[A] }

    特殊的等值连接,比较的分量必须是同一属性组

    在等值连接的基础上去掉重复的属性列


    自然连接实例:学生关系S 与 课程关系C进行自然连接

    在这里插入图片描述


    公式:S ⋈ C = { ts ⌒ tc | ts ∈ S ∧ tc ∈ C ∧ ts[CNO] = tc[CNO] }
    在这里插入图片描述

      

    自然连接与等值连接的区别与联系

    自然连接要求同名同域的属性组才可连接,而等值连接仅要求域相同;
    自然连接是去掉重复列的等值连接;
    自然连接一定是等值连接,而等值连接不一定是自然连接;
    自然连接后列的数量小于等于等值连接后列的数量。



    除法(division)运算:R ÷ S = { tr[X] | tr∈R ∧ ∏y(S)⊆YX }

    除运算核心步骤:设R、S为关系,X、Y、Z为属性集

    1. 分出X、Y、Z三个属性集
    2. 列出S对Y属性集的投影
    3. 找出R中满足x值对应的象集包含了关系S对Y属性集的x值

      除法运算需满足的条件:设有关系R(X,Y)、S(Y,Z),其中X,Y,Z为属性集合,R中的Y与S中的Y可以有不同的属性名,但对应的属性组必须来自同一域

    由于除运算比较抽象难理解,在此详细解析(结合图解):
        关系R和关系S共有的属性集是Y,而R÷S得到的值就是关系R对Y属性组的投影,即X属性组(S关系内没有的),而这X属性组还需满足特定条件(元组在X属性组上的分量值x的象集YX包含了S对Y属性组的投影集合)。



    除运算图解:除法举例

    在这里插入图片描述

    按步骤来求R÷S:
    ①分出X、Y、Z三个属性集:X属性集是R特有的,Y为公共的,Z为S特有的;
    ②求出S对Y属性集的投影:C,D(S)=在这里插入图片描述
    得到投影C,D(S) = { (c4,d5) , (c3,d5) }
    ③列出X属性组的全部x分量的象集,看下哪个象集包含了第②步求到的投影,那么这些x分量就是R÷S的商:

    在R中,X属性组可取分量x:{ (a1,b2) , (a2,b4) , (a3,b5) }

     (a1,b2)对应象集:{ (c4,d5) , (c3,d5) }
     (a2,b4)对应象集:{ (c1,d3) };
     (a3,b5)对应象集:{ (c2,d8) };
    只有(a1,b2)的象集YX包含了S对Y属性集的投影集合
    R÷S = {(a1,b2)}
    在这里插入图片描述
    图片有错:CD改为AB

    展开全文
  • 【手写】数据库关系代数练习题

    千次阅读 多人点赞 2021-02-27 15:57:46
    数据库关系代数练习题 因为数据库关系代数的特殊符号在电脑上很难输入……所以采用了手写,字不太好看???? 第一部分 第二部分 数据库如下: 题目如下: 第三部分

    数据库关系代数练习题

    因为数据库关系代数的特殊符号在电脑上很难输入,所以采用了手写,字不太好看😂

    关系代数基础链接数据关系代数详解

    本篇是在上一篇《数据库关系代数详解》的基础上,对关系代数中的内容进行一些简单的做题应用,对于关系代数中基础的概念不再赘述。

    这些内容我也做成了pdf,就在我的主页分享的文件中

    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 关系代数之基本操作 关系代数操作分为集合操作和纯关系操作: 并相容性 某些关系代数操作,如并、差、交等,需满足“并相容性”。 参与运算的两个关系及其相关属性之间有一定的对应性、可比性或意义关联性。 R(A1, ...
  • 数据库关系代数几道例题以及解析

    万次阅读 多人点赞 2021-05-08 19:37:41
    关系代数符号 σ,÷,∞,∪,∩,Π(映射),^(且),v(或),- 题目 用关系代数表示以下内容: ①查询CS系得学生,列出学号。 ②查询借阅《数据库》或者《艺术史》,并且超过天数30的男生的信息。 ③查询没有借阅...
  • 数据库关系代数 关系代数符号整体把握 下面来分点看看常见的关系代数及运用 1. 并运算,交运算,差运算 这个应该很简单,直接上图吧,假设有两张基础表 下面是两张表的三种基础运算结果 这个应该挺简单的,和...
  • 数据库关系代数整理

    2013-04-16 17:25:07
    n目k元组:n个属性,k个行 关系代数运算的分类 传统的集合运算 并、差、交、广义笛卡尔积 专门的关系运算 选择、投影、连接、除
  • 数据库关系代数

    2014-06-07 15:55:43
    关系代数 传统的集合运算 专门的关系运算 并 差 交 笛卡尔积 选择  投影  连接  除
  • 数据库关系代数.ppt

    2022-07-14 14:27:47
    数据库关系代数.ppt
  • 1. 设有如图所示的关系 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...
  • (1) 检索所学课程包含了 (2) 求至少选择了 C001 和 C003两门课程的学生学号 (3) 求至少学习了学生 (4) 求选择了全部课程的学生的学号 (5
  • 数据库关系代数表达式学习.doc
  • 数据库关系代数基础

    2020-04-15 18:59:27
    文章目录一、关系代数符号写法二、关系代数解析1、set operations2、selection3、projection4、条件连接5、外连接6、除法 一、关系代数符号写法 符号 写法 ∏\prod∏ \prod ⋈\bowtie⋈ \bowtie σ\...
  • 数据库关系代数习题.doc
  • 数据库关系代数操作与扩展操作 序: 本篇主要介绍数据库的关系操作及其用数学怎么表示。 **1.**关系代数操作分为集合操作和纯关系操作。(下面附战德臣老师课件的一张图以便于理解) **2.**并运算(U) 类似于数学...
  • 数据库关系代数运算----自然连接

    千次阅读 2022-05-14 17:53:50
    自然连接的结果显示全部的属性列,但是相同属性列只显示一次,显示两个关系模式中属性相同且值相同的记录. 设有关系R、S如下图所示: R: A B C a b c b a d c d e d f g S: A C D a c d d f...
  • 数据库关系代数.pdf

    2021-12-16 10:49:25
    数据库关系代数.pdf
  • 数据库关系代数运算

    千次阅读 2019-01-13 21:34:52
    转载:https://wenku.baidu.com/view/f301bf48e45c3b3567ec8b75.html
  • 数据库关系代数练习题解释

    千次阅读 2021-12-30 23:36:31
    试用关系代数表达式表示下列查询语句: 检索至少选修两门课程的学生学号(S#) 答案:∏S#(σ[1]=[4]∧[2]≠[5] (SC × SC)) 检索选修课程包含学号为2的学生所修课程的学生学号(S#) 答案:∏S#,C#(sc)÷∏C#(σS#...
  • 1、 (1)先说关系关系可以理解为一张表。...关系数据库是若干张表的集合。 2、 实体完整性:所谓的实体完整性就是指关系(表)的主码不能取空值;比如学生表的主码通常是取学号为主码。 参照完整性
  • 数据库关系代数.doc

    2021-09-28 12:16:01
    数据库关系代数.doc
  • 1.设有如图所示的关系 R W 和 D计算下列关系代数 1 R1 Y,T (R) 2 R2 P 5 T e ( R) 3 R3 R [ 2],[1],[ 6] ( [3] [5] (R D) 5 R5 R D 关系 R 关系 W 关系 D P Q T Y T Y B T Y 2 b c d c d m c d 9 a e f c d n e f 2 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,814
精华内容 10,725
关键字:

数据库关系代数