精华内容
下载资源
问答
  • 一、除法概述:设关系R除以S的结果为关系T,则T包含所有在R但不在S中的属性及值,且T的元组与S的元组的所有组合都在R中。 二、关于除法的两类题型的解题方法: 注:先说明下下文讲到的除数和被除数分别代表什么:R...

    数据库系统概论之关系代数中的除法

    一、除法概述:设关系R除以S的结果为关系T,则T包含所有在R但不在S中的属性及值,且T的元组与S的元组的所有组合都在R中。
    除法举例
    二、关于除法的两类题型的解题方法:
    注:先说明下文讲到的除数和被除数分别代表什么:R÷S中,R为被除数,S为除数
    (1)给出了关系表和除法表达式,求运算结果:
    解决方法:利用除法表达式的象集定义。(这类题目比较简单,不细讲,不会的可以留言或者私信,我可以给你讲明白)
    就拿上面概述的例子来看:题目给了两张关系表R和S,要求R÷S的结果。首先分析R和S共有的属性,为B,C。R(被除数)中特有的是A,所以结果为A属性的某个或某些属性值。根据除法的象集定义,求出A中各个属性值的象集,发现:a1{(b1,c2),(b2,c3),(b2,c1)} , a2{(b3,c7),(b2,c3) }, a3{(b4,c6)} , a4{(b6,c6)} 。只有a1 的象集包含了S在(B,C)属性组上的投影,故结果{a1}。(注意:关系代数运算的结果是一个集合)

    (2)题目叙述了一个查询语句,要我们写出关系代数表达式,构造除法(这里又要分为两类,主要就是要构造出除数和被除数):
    i:除数(属性列)的值包含了某个关系表中的该属性的全部值,那么直接把该表中的该属性列当做除数,被除数的属性在除数的基础上加上所求属性。
    ii:除数(属性列)的值没有包含某个关系表中的该属性的全部值,那么可以自己构造一个关系,该关系只有该属性和其值组成。或者采用自身笛卡尔积加选择投影的方法。
    示例1:
    除法第二类例子
    分析:首先教大家怎么由题目叙述得到除数和被除数的属性组成。很显然,题目中要我们求学号,这就是所求属性。然后剩下的属性就只有课程号,所以除数的属性列只有课程号。被除数的属性由除数的属性列和所求属性组成。所以这里我们就用选修表sc投影得到被除数,即把sno,cno这两个属性投影出来得到的新关系当做被除数。当然也可以直接得出被除数,很明显由题目就可以看出被除数是选修表。由于课程号的属性值有1,2,3等等,而题目中给出的属性值只有1,3,不包含全部的属性值,属于第二类。题目中的解法是构造了一个关系,接下来我再讲一种自身笛卡尔积加选择投影的方法。
    先将sc表本身做自然连接,得到关系的属性组成:
    sno cno grade sno cno grade
    1 2 3 4 5 6
    注:下面的数字是属性在表中的下标索引,JDBC中也经常用下标来取得属性列的值。
    接下来开始选择投影:
    示例1的第二种解法
    图片中的选择部分的解释:1=4,即两个sno相等,表明这是同一个学生,2=’1’,5=’3’则表示该同学既选修了1号课程有选修了3号课程,符合题意。最后把学号投影出来即可。这也很好理解,以后这类题都是这种解法,套公式用就行了。
    下面在举一个第一类的例子:
    除法第二类例子
    分析:在上面例子的基础上,我这里就快速分析出除数和被除数的属性组成。
    除数:课程号cno
    所求属性:学号sno和姓名sname
    被除数:按理来说是有cno sno sname这3个属性,但是学生选课数据库中没有这样的表,如果自己构造一张这样的表那很麻烦,所以做除法时,我们先把sno求出来,到时候在与学生表student连接投影一下就可以得到结果。所以被除数的属性由sno cno组成。
    全部课程说明除法中的cno属性包含了该cno属性的所有属性值,为第一类题型。那么直接将该表作为除数。即从课程表course中把cno属性投影出来得到一张表,把该表作为除数。被除数依然是从sc选修表中投影出来的sno和cno属性。再解释一下后面的连接:关系代数中,有除法就先算除法,再算其他的。当然这里在除法前面加上括号就更清晰了,前面的除法得到了学号,再与学生表做自然连接即可得到结果。

    三、总结:
    讲到这里,关系代数中比较难理解的除法的题型也就讲完了。下面再总结一下和做些说明:
    1、 可能会有人把除法和选择混淆,拿到题目的时候不知道该用除法还是选择。大家记住这一点就行了:除法是一个属性可以有多个属性值,选择是一个属性只能有一个属性值。
    怎么理解这句话呢:通过上面的例子都可以看出,至少选修了1号和3号课程的学生学号,选修了全部课程的学生学号和姓名中课程号的属性值的个数都是一个以上,即一个学生选修了多门课。上面讲解的自身笛卡尔积加选择投影的方法虽然没有明显用到÷号,但他的本质还是除法,希望大家不要混淆。
    2、 讲解过程中用到的例子是数据库系统概论第五版 王珊 书上的例子。刚开始学数据库的时候我也很难理解,做题很艰难。我就去网上找资料,找题目练,做多了就会做了。这些方法和题型分类也是我在做题过程中总结出来的。当时做的笔记:
    学习过程中做的笔记
    3、 我为什么要写这篇博客呢:当时学习的过程中确实遇到了很多困难,在网上找资料时也没有找到自己心仪的。感觉讲的不是很清楚,我相信有很多同学也有很多这样的困惑,所以我就写了这篇博客。这也是我第一次写博客,经验不足,可能排版方面不是很美观,但都是干货。写这篇博客的目的是帮助在学习到这里遇到困惑的同学,大神就不用看了。如果大家有好的解决这类问题的解决方法欢迎大家留言讨论。
    4、 下次说说sql语句中exists的问题,这也是比较难理解的东西,个人也做了很好的总结,用来做题分析是很好理解的。上面图片中也可以看到我做了部分归纳。对于以上解题方法还没有理解的可以下方留言评论或者私信我,我看到了就会解答。
    最后:原创码字不易,第一次写博客写的很认真。请大家多多点赞,多多分享,新人求一波关注。有帮助到大家,请点赞不要白嫖哦。转载时请注明出处。

    不要白嫖哦

    展开全文
  • 数据库关系运算——除运算

    万次阅读 多人点赞 2018-07-02 22:29:05
    书上给“除运算”的定义是: ... 设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。 我对此不是很理解。 直到看到这样的解读,方才恍然大悟: ...

    书上给“除运算”的定义是:

    设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。

    我对此不是很理解。
    直到看到这样的解读,方才恍然大悟:
    这里写图片描述

    这里写图片描述

    展开全文
  • 定义:设关系 R除以关系S的结果为关系T,则T包含所有在R中但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R 中(摘自百度百科)。 文字上过于抽象,若用图来表示,以下表示为关系RS、T之间的运算: 图中...

    1.如何理解关系中的除法
    定义:设关系 R除以关系S的结果为关系T,则T包含所有在R中但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R 中(摘自百度百科)。

    文字上过于抽象,若用图来表示,以下表示为关系R、S、T之间的运算:
    在这里插入图片描述图中阴影部分为关系R与关系S重叠的部分,即某些属性的值发生了重合,这些属性是某些元组的子属性,将R÷S,得到的结果是,元组中除了这些重叠的属性外剩下的属性。

    需要注意的是,R和S中的每一行都代表一个元组(这里没有给出元组之间的分界线)。同时,要求T中每一个分量都包含公有的部分!

    下面给出具体的实例,考虑关系R和关系S:

    X Y
    p1 q1
    p1 q2
    p1 q3
    p2 q1
    p2 q2
    p3 q1

    关系R


    Y Z
    q1 m1
    q2 m1

    关系S


    可以发现,R与S中发生重叠的属性是Y,除数S中S.Y的取值有{q1, q2},再考虑被除数R中,R.Y中包含S.Y即{q1, q2}的元素有{p1, p1},其中p1对应的R.Y真包含{p1, p2},p2对应的R.Y直接等于{p1, p2}。


    因此,R÷Y的值就是

    X
    p1
    p2

    关系T


    2.使用SQL来实现关系的除法运算
    由以上论述可以发现,关系的除法实际上是一个关系的某些元素真包含另一个关系的某些元素的问题,因此可以用来解“关系包含”类的问题。

    首先给出其一般表达语句:

    select distinct R.X from R as R1
    where not exists
    (
      select S.Y from S
       where not exists
         (
          select select* from R as R2
          where R2.X = R1.X and R2.Y = S.Y
          )
    )
    

    逐句进行分析:


    在这里插入图片描述

    这句话指明在R中查找X元组,我们把R命名为R1,方便后续的操作;

    在这里插入图片描述此处的子查询表明,要在R中查找元组,这些元组的X属性是我们要找的目标属性(即最外层的R1.X),同时这些元组的Y列等于S.Y(即R与S发生重叠的部分)。也就是说,这两句话指明了要查找文章开头那张图中的R与S发生重叠的部分。

    在这里插入图片描述由上述可知,红框中第二行开始后的语义为:不存在②中这样的元组,即不存在“R与S发生重叠的部分”。再从红框中的第一行开始分析,我们要在S中找S.Y,并且S.Y与R.Y不发生任何重叠。

    但是,由第一张图可知,只要R与Y能做除法,那么一定有R.Y与S.Y发生了重叠,怎么可能发生这样的情况呢?
    因此就有了最外层的not exists:

    在这里插入图片描述结合上述分析,此处的语义为:不存在S.Y与R.Y不发生重叠的部分。此处的两个“不存在”分别对应与SQL语句中的两个"not exists"。这样,就能轻松处理集合之间的"包含"问题和"全部"问题了


    当然,实际应用时,除了要理解原理,更要把SQL这种通用的语法形式熟悉掌握,在草稿纸上多默写几遍,才能用起来得心应手。

    展开全文
  • 首先要判断数字的开头和那个除数的大小关系,还有0。 // // Created by 76147 on 2019/10/17. // #include <stdio.h> int main() { char a[1001]; int b = 0; int s[1001]; int i = 0, len = 0, r = 0; ...

    在这里插入图片描述

    解决方法

    首先要判断数字的开头和那个除数的大小关系,还有0。

    //
    // Created by 76147 on 2019/10/17.
    //
    #include <stdio.h>
    
    int main() {
        char a[1001];
        int b = 0;
        int s[1001];
        int i = 0, len = 0, r = 0;
        scanf("%s %d", a, &b);
    
        for (i = 0; a[i] != '\0'; ++i) {
            s[i] = a[i] - '0';
        }
        len = i;
        for (int j = 0; j < len; ++j) {
            if (j != 0 || s[j] / b != 0) {
                printf("%d", (10 * r + s[j]) / b);
            }
            r = (10 * r + s[j]) % b;
        }
        if (len == 1 && s[0] < b) {
            printf("0");
        }
    
        printf(" %d", r);
    
    
        int temp = 0, x = 0, y = 0;
        return 0;
    }
    

    总结

    当数字很大很大的时候,可以按照用笔计算的方法来模拟程序。
    当然java有一个大数,也可以来做。只是超时,,,,

    import java.math.BigInteger;
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            BigInteger a, b;
            Scanner scanner = new Scanner(System.in);
            String str = scanner.next();
            String n = scanner.next();
            a = new BigInteger(str);
            b = new BigInteger(n);
            System.out.print(a.divide(b)+" "+a.mod(b));
    
        }
    }
    
    

    在这里插入图片描述

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

    展开全文
  • 数据库系统概论----关系运算之除运算

    万次阅读 多人点赞 2015-11-28 10:37:20
    这一周都在复习《数据库系统概论》这门课,看到关系运算的这一节时,对于除运算不是很理解。...设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。
  • 关系代数中的基本运算包括并,差,笛卡尔积,选择,投影。这五种基本代数运算可以推导出交、连接(包括自然连接)、和除法。其中前两者比较容易推导,直接根据定义不难得出,而除法定义理解...关系R除以关系S所得的商
  • 数据操作

    2012-11-22 10:40:45
    数据库的除操作 ...给定关系R与S,R除以S的运算过程如下: 首先假定S的属性为R的后s个属性 求T=R属性r-s列的投影 求W=T与S的笛卡尔乘积再-R中的元组 求V=W的前r-s列的投影 求结果=T-V ...
  • 数据库系统之除法运算

    千次阅读 2017-11-07 17:43:46
    关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。 所以结合着例子,对于定义进行理解吧: 首先呢给出关系R和关系S 1、定义中说,T包含所有在R但...
  • 除运算

    2020-03-08 20:31:41
    关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,则T的原则与S的元组的所有组合都在R中。 用象集来定义除法: 给定关系R(X,Y)和S(Y,Z)。其中X,Y,Z为属性组。R中的Y与S中的Y可以有...
  • 数据库的除运算

    2019-12-26 21:02:50
    关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。 这是一个使用比较广泛的例子。 根据这个例子我们应该怎么理解除运算呢? 首先R的属性有ABC,S的属性...
  • 首先看定义,设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。 在图中R中为ABC,S中为BCD,BC都在S中,故结果集必为A的子集。 然后在A的子集中看,a1...
  • 数据库复习补充点

    2019-09-16 16:37:28
    关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。 二、优化 1.条件分解 2..选择操作下移 尽可能早地执行选择操作 3.投影操作下移 尽可能早...
  • SQL除法

    千次阅读 2018-11-06 15:27:37
    定义:设关系R除以关系S结果为关系T,则T包含所有在R中但不在S中的属性及其值,并且T的元组与S的元组的所有组合都在R中 定义看不懂没关系,正常人都看不懂的,我们来举个简单的例子: X表: Y表: X÷Y= 还没懂?那我们把X...
  • Abel群 群:封闭性,结合律,零元,幺元 交换律 模n同余 正整数集S,x,y∈S,定义关系R: ,y>∈R 当且仅当 x≡y (mod)n (x≡y (mod)n 表示x,y除以n的余数相同) 称此关系为模n的同余关系.
  • 碾转相除法

    多人点赞 2020-11-26 14:09:24
    算法:用较大数除以较小数,比较得到的余数与0的关系,如果余数等于0,那么较小的数就是两数的最大公约数,如果余数不等于0,则用除数除以余数,依此循环,直到余数等于0. 设两数为a,b(a>=b)求a,b两数的最大公...
  • ①多项式迭代除去二次因式,x^2-r*x-s,可以得到复根 为什么除以二次因式可以得到复根:②求偏导数 ③得到rs以此改进 计算误差 rs 误差均低于给定的终止条件时可以得到根 ④结果可能: 1.三
  • correlationpearson correlation coefficient(PCC)1 度量两个变量的线性关系强度2 pearson's r一直处于-1和1之间3 (x, y):xy的偏方差除以x标准差和y标准差的乘积spearman rank correlation coefficient(RCC)1 度量...
  • 白度S定义为R,G,B三个分量中最小的分量除以亮度值。用R,G,B三个分量中的最小值去减另外两个分量,得到该像素所对应的光谱色,然后由这两个分量的比值来确定色度H。在HIS格式中将亮度与颜色信息分离开,在进行分色处理时...
  • 这个需求关系方程式着重指明了一个事实:需求关系是消费数量和决定消费数量的因素之间一种多维的关系。 □ 需求曲线 需求曲线是对需求函数的直观描述。于是,我们现在面临经济学中经常遇到的一个难题:如何...
  • 又如在例题中,使用了库函数 sin,由于系统规定其函数返回值为双精度浮点型,因此在赋值语句s=sin (x);中,s 也必须是双精度浮点型,以便与sin函数的返回值一致。所以在说明部分,把s说明为双精度浮点型。但是,也有...
  • 数据结构(C++)有关练习题

    热门讨论 2008-01-02 11:27:18
    可以将要转换的数重复除以基数,然后讲除的余数按反方向排列来实现; 8、 已知A[n]为正数数组,试写出实现下列运算的递归算法; a. 求数组A中的最大整数; b. 求n个数的平均值; c. 求n个整数的平均值;...
  • 面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类...
  • LINGO软件的学习

    2009-08-08 22:36:50
    不同集类型的关系见下图。 §3 模型的数据部分和初始部分 在处理模型的数据时,需要为集指派一些成员并且在LINGO求解模型之前为集的某些属性指定值。为此,LINGO为用户提供了两个可选部分:...
  • 操作系统(内存管理)

    热门讨论 2009-09-20 12:55:25
    (映射是一个表示一一对应关系的数学术语 —— 当内存的虚拟地址有一个对应的物理地址来存储内存内容时,该内存将被映射。) 基于 UNIX 的系统有两个可映射到附加内存中的基本系统调用: brk: brk() 是一个非常...

空空如也

空空如也

1 2
收藏数 24
精华内容 9
关键字:

关系r除以s