精华内容
下载资源
问答
  • 查询优化规则: 首先拿到关系代数式子 写成语法树形式 可以下移的选择往下移到底 把不需要的列投影去掉 分组:一个笛卡尔积(二元运算)分为一组 例题1:

    查询优化的几个基本规则:

    1. 首先拿到关系代数式子 写成语法树形式
    2. 可以下移的选择往下移到底
    3. 把不需要的列投影去掉
    4. 分组:一个笛卡尔积(二元运算)分为一组

    下面来看一个例题吧:

    例题1:

    首先这是我们的关系代数式:
    关系代数式

    第一步:把关系代数式化成语法树 并拆开多个选择and在一起的结果
    第一步 画成语法树

    第二步:把可以下移的选择下移
    (什么叫可以下移的选择呢?点赞我就更新讲解)
    第二步 可以移动的选择下移

    第三步:投影去掉不需要用到的列
    第三部 投影 去除不需要的列

    最终优化结果:
    最终优化结果(红字的答案是需要加)

    10赞更新如何划分查询树!
    50个赞更新例题2和例题3!

    展开全文
  • 数据库关系代数复杂查询部分例题
  • 数据库关系代数表达式学习

    万次阅读 多人点赞 2018-01-14 17:15:15
    关系代数是关系数据库系统查询语言的理论基础。很有必要学习一下,有些是用代数表达式很方便的东西,用SQL写出来还是挺麻烦的,并不是想象当中那么直接。   一、关系代数的9种操作:    关系代数中...

    关系代数是关系数据库系统查询语言的理论基础。很有必要学习一下,有些是用代数表达式很方便的东西,用SQL写出来还是挺麻烦的,并不是想象当中那么直接。
     
    一、关系代数的9种操作:
     
        关系代数中包括了:并、交、差、乘、选择、投影、联接、除、自然联接等操作。
     
    五个基本操作:
        并(∪)、差(-)、笛卡尔积(×)、投影(π)、选择(σ)
     
    四个组合操作:
        交(∩)、联接(等值联接)、自然联接(RcrossS)、除法(÷) 
    注2:等值连接表示先做笛卡尔积(×)之后,对相应列进行选择或等值关联后的结果(仅筛选行、不筛选列)
    注2:自然连接表示两个关系中若有相同名称的属性,则自动作为关联条件,且仅列出一列
     
     
    二、关系代数表达式:
     
        由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。
     
     
    三、举例说明:
     
        设教学数据库中有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'
    (Oracle)
    ------------------------------------
    π SNAME,AGE(S)-πSNAME,AGE(σCNO='C2'(ScrossSC))
    ************************************
     
     
    (7) 检索学习全部课程的学生姓名
    ------------------------------------
    这个定义用SQL表示比较麻烦,略过
    ------------------------------------
    π SNO,CNO(SC)÷πCNO(C)
    先用除法取出选取所有课程的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)))
        --即提前做选择操作;在每个操作后,应做个投影操作,去掉不用的属性值
     
     
        又如:
     
        S(S#,SNAME,AGE,SEX)
        SC(S#,C#,GRADE)
        C(C#,CNAME,TEACHER)
     
        π CNAME,TEACHER(σSEX='女'(ScrossSCcrossC)) 进行优化后转换为:
        πCNAME,TEACHER(CcrossπC#(πS#,C#(SC)crossπS#(σSEX='女'(S))))
     
        优化前和优化后的语法树如下所示:
     
        syntax_tree
    展开全文
  • 关系数据库关系代数

    2017-11-16 10:07:00
    之前在学习数据库时接触过关系代数,只是在经过很长一段时间不应用之后,不能很快从大脑中将知识调出来,今天就来了个再次学习总结加深自己的印象。 关系代数:是一种抽象的查询语言,用对关系的运算来表达 查询。...

    之前在学习数据库时接触过关系代数,只是在经过很长一段时间不应用之后,不能很快从大脑中将知识调出来,今天就来了个再次学习总结加深自己的印象。

         关系代数:是一种抽象的查询语言,用对关系的运算来表达 查询。关系代数运算的是关系,运算结果亦是关系。关系代数的基本关系包括:并、交、差、笛卡尔积、选择、投影、连接、除法运算。由于并、交、差运算很简单,这里不再赘述,只说明了几个容易遗忘和混淆的运算。

         1、笛卡尔积

          计算两个关系R和S的笛卡尔积,R的元数为r,S的元数为s,则R×S是一个(r+s)元的元组集合,如下例所示:

     

    结果:

     

                

          由结果分析:笛卡尔积得到的结果元数为r+s即:3+3=6;记录数为:R中的记录数与S中的记录数相乘,即:3×2=6。

         2、选择

           选择是根据某些条件对关系做水平切割,例如δ2 > '4'(R),表示从R中挑选第二个分量值(也就是R中B列的值)大于4的元组所构成关系。

           结果:

     

     

                

         3、投影π

           投影与选择正好相反,是对关系的一种垂直切割,消去某列,并重新安排列的顺序。投影用(π)表示。例如:π3,1(R)表示的结果如下:

           

                                                      

     

          由结果可以看出:查询表达式中的下标可以用数字表示,也可以用列的名字表示,返回列的名字,而其他的列在结果关系中被去掉,也可以通过投影来重新布局关系的排列。

         4、连接

           连接运算:从两个关系的笛卡尔积中选取属性间满足一定条件的元组,用(R ⋈ S)表示,连接分为两种,一种是等值连接(有的书上写的是连接),另一种是自然连接。等值连接:条件AθB中的θ为‘=’的连接;自然连接:关系R与S选取A、B属性值相等的那些元组。

          看个例子就很容易明白了:

          等值连接:如下有关系R和S,则是什么呢?

                                   

     

     

                   结果:

                                                              

                      

           自然连接:一般自然连接使用在R和S有公共属性时,如果没有公共属性,自然连接就转为笛卡尔积操作。

                 例如:关系R和S,则自然连接的结果呢?

                                                                                       

                    结果:

                                   

     

                                                             

                                    

     

                       

     

     

                      

           5、除法         

            例子:R÷S

             R:                                                                          S:

                                                            

     

     

     

             结果:

                             

     

                             

             计算过程:

              (1)T=π1,2(R),从R中选取除去与S中相同的属性,即选择S#,SName

              (2)W=(T ×S)-R,将上面得到的T与S进行笛卡尔积,再减去R,即计算T×S中不在R的元组

              (3)V=π1,2(W),从W中选取1,2对应的属性列,即:S#,SName

              (4)R ÷ S = T-V

           总结:

           经过总结之后,发现其实关系之间的运算并不难,关键在于要认真分析,将符号与我们的实际找到联系,只有对各种符号印象深刻之后,这些关系之间的运算也就变得很简单。在平时要多找联系多总结,方是正道。     

     

    转载于:https://www.cnblogs.com/buxingzhelyd/p/7842907.html

    展开全文
  • 数据库关系代数

    2017-11-21 16:46:00
    关系代数是关系数据库系统查询语言的理论基础一、关系代数的9种操作:关系代数中包括了:并、交、差、乘、选择、投影、联接、除、自然联接等操作。五个基本操作:并(∪)、差(-)、笛卡尔积(×)、投影(σ)、选择(π)四...

    关系代数是关系数据库系统查询语言的理论基础 

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

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

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

    四个组合操作: 
        交(∩)、联接(等值联接)、自然联接(R S)、除法(÷) 
    注2:等值连接表示先做笛卡尔积(×)之后,对相应列进行选择或等值关联后的结果(仅筛选行、不筛选列) 
    注2:自然连接表示两个关系中若有相同名称的属性,则自动作为关联条件,且仅列出一列 
      

    二、关系代数表达式: 

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


    三、举例说明: 

        设教学数据库中有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' (S SC)) 
    此查询涉及S和SC,先进行自然连接,然后再执行选择投影操作。 
    ---- 
    π SNO,SNAME (S) (π 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' (S SC C)) 
    ************************************ 


    (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' 
    (Oracle) 
    ------------------------------------ 
    π SNAME, AGE (S)-π SNAME, AGE (σ CNO='C2' (S SC)) 
    ************************************ 


    (7) 检索学习全部课程的学生姓名 
    ------------------------------------ 
    这个定义用SQL表示比较麻烦,略过 
    ------------------------------------ 
    π SNO, CNO (SC)÷π CNO (C) 
    先用除法取出选取所有课程的SNO集(除法可以理解为一个Filter) 
    π SNAME (S  (π 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 (S SC)) 进行 优化后转换为: 
        π SNO ,SNAME (π SNO ,SNAME (S) π SNO (σ GRADE>60 (SC))) 
        --即提前做选择操作;在每个操作后,应做个投影操作,去掉不用的属性值 


        又如: 

        S(S#,SNAME,AGE,SEX)
        SC(S#,C#,GRADE)
        C(C#,CNAME,TEACHER) 

        π CNAME,TEACHER (σ SEX='女' (S SC C)) 进行 优化后转换为:
        π CNAME, TEACHER (C π C# (π S#,C# (SC) π S# (σ SEX='女' (S)))) 

    转载于:https://www.cnblogs.com/shixinzei/p/7874018.html

    展开全文
  • 数据库关系代数 所有和包含关系 至少有 全部 所有…(用除法) 不 没有… 否定和非的关系 用差(减) 同时选两门课 同时有两条记录(用笛卡尔积 根据列序号选择) 数据库SQL语句 聚合函数 GROUP BY和...
  • Write the following queries in relational algebra, using the university schema. a. Find the titles of courses in the Comp. Sci. department that have 3 ... ...∏title(σdept='Comp.Sci'∧credits=...
  • 文章目录关系数据库关系代数关系代数的分类及其运算符传统的集合运算专门的关系运算 关系数据库 关系代数 关系模型与其它模型相比,最有特色的是它的数据库语言 这种语言灵活方便、表达能力和功能都很强 目前关系...
  • 1.查找10号部门员工的所有信息 2.找出10号部门工资大于3500的员工的姓名和工资 3. union 集合并是行的堆叠 4. 查询10号部门及20号部门的员工(两种方式)
  • 关系代数符号 σ,÷,∞,∪,∩,Π(映射),^(且),v(或),- 题目 用关系代数表示以下内容: ①查询CS系得学生,列出学号。 ②查询借阅《数据库》或者《艺术史》,并且超过天数30的男生的信息。 ③查询没有借阅...
  • 03数据库关系代数习题

    千次阅读 2020-04-07 09:03:55
    依托三张表 SC({SNO,CNO,GRADE}) 选修 ... 查询选了1号课程的学生的姓名 解析:属性,课程号,姓名 即遵循少表连接原则,Sc与Sd连接 相同有属性Sno可连接 大脑最简单,电脑费力的第一种 两表直接连接然...
  • 数据库关系代数简单查询部分例题
  • 数据库 关系代数 投影概念理解

    千次阅读 2015-11-29 13:13:59
    关系R上的投影是从R 中选择出若干属性列组成新的关系。记作: π A (R )= { t [A ]... 例3 查询学生的姓名和所在系,即求Student关系在学生姓名和所在系两个属性上的投影。  π Sname, Sdept (Student)或 π2, 5
  • 数据库关系代数--小练习

    千次阅读 2018-09-06 21:25:01
    Department(dNo,dName,officeRoom,homePage) Student(sNo,sName,sex,age,dNo) ...查询仅选修了算法一门课程的学生姓名 (思路) ①若果考虑没有选课的学生的话 可以利用选了算法的学生的集合减去不止选了算...
  • 关系代数是关系数据库系统查询语言的理论基础。很有必要学习一下,有些是用代数表达式很方便的东西,用SQL写出来还是挺麻烦的,并不是想象当中那么直接。 一、关系代数的9种操作: 关系代数中包括了:并、交、差、乘...
  • 数据库关系代数

    2018-04-16 22:03:59
    关系代数 选择与投影 集合操作 连接 除 参考资料 有了数据库,还要通过查询来获得数据。SQL是常用的查询语言,但我想用更抽象的查询语言来表达,从思路上去理解而忽略实现细节。下面将介绍...
  • 数据库——关系代数

    千次阅读 2017-07-05 17:01:48
    上次面试被面试官问道数据库关系代数的左连接,一脸懵逼。只是模糊的记得是两个关系的连接操作,具体的都忘了,当时在学数据库这门课程的时候也确实没好好学,这就是没有好好学习的下场哎!今天写下这篇也算是给...
  • 数据库关系代数

    2015-10-15 11:45:48
    关系代数是关系数据库系统查询语言的理论基础。很有必要学习一下,有些是用代数表达式很方便的东西,用SQL写出来还是挺麻烦的,并不是想象当中那么直接。   一、关系代数的9种操作:    关系代数中包括了:...
  • 数据库查询优化技术 学习笔记(一)   我是看李海翔的《数据库技术丛书·数据库查询优化器的艺术:原理解析与SQL性能优化》这本书的视频讲解学习的,因为数据库的知识学的不多,直接看优化有些吃力,慢慢补吧。...
  • Relational data model에서 relational data의 basic structure(용어 및 속성), 기본 연산자(basic operators), ............. 대하여 가능한 상세히 설명...查询:选择、投影、连接、除、并、交、差 数据更新:...
  • 关系代数是一种抽象的查询语言,是关系数据库查询语言的基础,关系代数包括传统的集合运算和专门的关系运算。 基本操作 并(∪)、差(-)、笛卡尔积(×)、投影(π)、选择(σ) 组合操作 交(∩)、连接、自然连接(R⋈S)、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 787
精华内容 314
关键字:

数据库关系代数查询