关系代数中的除法运算

这个概念的描述的非常抽象,刚开始学习的同学完全不知所云。这里通过一个实例来说明除法运算的求解过程

设有关系R、S 如图所示,求R÷S 的结果

求解步骤过程:
      第一步:找出关系R和关系S中相同的属性,即Y属性。在关系S中对Y做投影(即将Y列取出);所得结果如下

第二步:被除关系R中与S中不相同的属性列是X ,关系R在属性(X)上做取消重复值的投影为{X1,X2};
       第三步:求关系R中X属性对应的像集Y

根据关系R的记录,可以得到与X1值有关的记录,如图3所示;与X2有关的记录,如图4所示

第四步:判断包含关系
                    R÷S其实就是判断关系R中X各个值的像集Y是否包含关系S中属性Y的所有值。对比即可发现:
                    X1的像集只有Y1,不能包含关系S中属性Y的所有值,所以排除掉X1;
                    而X2的像集包含了关系S中属性Y的所有值,所以R÷S的最终结果就是X2 ,

也许你现在有点明白除法运算是如何操作的了,下面我们来引申一下,除法运算可以解决什么问题呢?
     看下面一个小例子:
               设有关系R,S以及RS,如图所示,求RS÷S的结果

很容易求得结果为:{ 张三 } 
    
    所以你很容易看出来RS÷S 在这里解决的问题就是:“得到选修了所有课程的学生”
    RS÷S的意义就是:“在R和S的联系RS中,找出与S中所有的元组有关系的R元组”。

时间: 2024-12-28 06:05:12

关系代数中的除法运算的相关文章

SQL点滴23—T-SQL中的除法

原文:SQL点滴23-T-SQL中的除法 在T-SQL中没有除法运算,但是在T-SQL中可以实现类似除法的操作Divide.一般除法操作的结果一个列来自于被除关系表,剩下的来自除关系表.这里举一个例子来说明.假设如下有三个表:客户Customers,销售人员Employees,订单Orders,查询返回一些客户,要求这些客户和所有美国雇员都至少有一次交易记录.来看下面一个语句: select custid from Sales.Customers as Cwhere not exists(sel

VB.NET中的除法运算符 与 C#中的除法运算符

VB.NET中的除法运算符有两个:/(浮点除法).\(整数除法) C#中的除法运算符只有一个:/(除法) VB.NET中的除法运算符与C#中的除法运算符存在很大的差异,使用时注意区分. 关于VB.NET中的除法运算符的介绍(摘自MSDN): /(浮点除法):将两个数相除并返回以浮点数表示的结果. 所得结果的数据类型取决于操作数的类型. 下表显示如何确定结果的数据类型. 操作数数据类型 结果数据类型 两个表达式都是整数数据类型(SByte.Byte.Short.UShort.Integer.UIn

sql 除法运算结果为小数时显示0的解决方案 或者百分比

SELECT field1/field2 FROM TB; 当 field1的数值 > field2的数值时,除法得出的结果是<1的,即0.xxxxxx 这个时候在DB2的环境下SELECT出来的值是0 解決方法: 先把field1转换成DOUBLE类型的,这样计算出来的就会得出小数点了,会显示出0.xxxx SELECT CAST(field1 AS FLOAT)/field2 FROM TB; ps.網上搜的資料,寫的是double,但在SQL Server2008中一直報錯,改成FLOA

Numpy 基本除法运算和模运算

基本算术运算符+.-和*隐式关联着通用函数add.subtract和multiply 在数组的除法运算中涉及三个通用函数divide.true_divide和floor_division,以及两个对应的运算符/和// 1. 数组的除法运算 import numpy as np # divide函数在整数和浮点数除法中均只保留整数部分(python3中的np.divide == np.true_divide) a = np.array([2,6,5]) b = np.array([1,2,3])

or1200中乘法除法指令说明

以下内容摘自<步步惊芯--软核处理器内部设计分析>一书 OR1200中乘法除法类指令共有9条,表8.3给出了所有的乘法除法类指令的作用及说明. 说明:表8.3是ORBIS32中给出的指令用法,但是通过分析OR1200的代码,发现有些指令并没有按照ORBIS32实现,如:l.mac.l.maci.l.msb,这三条指令有一个共同点就是涉及到乘法结果的低32位与{MACHI,MACLO}的运算,比如l.mac指令需要乘法结果的低32位加上{MACHI,MACLO},但是在OR1200实现中并没有只

关于c语言中的位运算。。。

位运算是一种针对二进制数的一种运算 位运算 共有六种 都有其对应得操作符号 &      (and)      位于 |        (or)         位或 ~      (not)        取反 ^       (xor)        异或 >>    (shr)    右移一位 <<    (shl)     左移一位 运算说明: === 1. and运算 === and运算通常用于二进制取位操作,例如一个数 and 1的结果就是取二进制的最末位.这可

深入理解计算机系统(2.6)---二进制整数的乘、除法运算(重要)【困难度高】

本文转载地址:http://www.cnblogs.com/zuoxiaolong/p/computer10.html 2.5我们着重介绍了二进制整数的加.减运算,本次我们继续介绍乘.除运算. 引言 运算一直是程序运行当中一个重要的环节,而在二进制的运算过程当中,加法运算又是重中之重,它基本上奠定了二进制运算的基础.因为无论是减法还是乘法,都可以由加法运算来替代,唯有除法不能由加法替代. 了解计算机运算的规律,可以有助于我们理解很多程序代码上无法理解的内容.比如上章提到的溢出问题,在了解了加法运

js中的位运算

按位运算符是把操作数看作一系列单独的位,而不是一个数字值.所以在这之前,不得不提到什么是“位”:数值或字符在内存内都是被存储为0和1的序列,每个0和1被称之为1个位,比如说10进制数据2在计算机内被存储为 0 0 0 0 0 0 1 0,当我们将内存内的位值改变之后,这个值代表的意义也就变了,比如把2前移动一位, 现在存储单元里面变成了0 0 0 0 0 1 0 0,这个值表示的是十进制的4,这也就是按位操作符的运算原理. 按位运算符有6个& 按位与|按位或^按位异或~取反>>右移&l

python中的除法及常量

什么是常量?常量是<不能变>的变量.但是在python中不存在不能变的变量.所以常量在python中一般用全大写来表示(反之,变量用全小写来表示).[个人理解,欢迎纠错]. 在python中,除法分为三种: 1. / 1 >>>6 / 6 2 1.0 3 >>>3 / 6 4 0.5 以上可以看出, /  除法是浮点数除法,他输出的结果是浮点数.即使是结果为整数,他的输出依旧是浮点数. 2. // 1 >>>3 // 6 2 0 3 >