数据库系统原理:除法运算

yumo6669个月前 (04-05)技术文章103

关系代数是实现关系操作的基本表示方法,关系代数运算按运符的不同分为传统的集合运算和专门的关系运算。专门的关系运算包括投影、选择、连接和除法运算,最后学习的运算是除法运算。

一、除法运算的定义

给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。

R与S的除运算得到一个新的关系P(X)

P是R中满足下列条件的元组在X属性列上的投影:

R中元组在X上分量值x的象集Yx包含S在Y上投影的集合,

象集:

给定一个关系R(X,Y),X和Y为属性组。定义,当t[X]=x时,x在R中的象集为:

它表示R中属性组X上值为x的诸元组在Y上各分量的集合。

如下图所示,除法运算具体实例:R是选课关系,S是课程关系,a、b、c、d四个属性分别是学号、姓名、课程号、课程名,C、D就是课程号、课程名。

如果事先不知道课程表中的数据和选课表中的数据有哪些课、有哪些选课记录,那么,R÷S的结果是选了全部课程的学生的学号和姓名。

除法运算适合表达全部的问题。

二、除法运算的实现

除法运算是组合运算,可以用其它基本关系运算实现。R÷S还可表示为

求R:S的操作步骤如下:

如下图所示将除法运算分解:

第一步:关系R做第一列到第r-s列的投影,取中间结果赋值为T;

第二步:用关系T和S做笛卡尔积,再减去关系R,得到的结果为W;

第三步:对W做第一列到第r-s列的投影,结果赋值为V;

第四步:R÷S的结果就为T-V的结果,即最终结果。

RXY)能被SY,Z)除的充分必要条件:

(1)R中包含S中的部分属性(R与S中的属性可以不同名,但必须有相同的值域);

(2)R中有一些属性不出现在S中。

例题:已知集合R和集合S,求R÷S的结果。

第一步:对于关系R做投影,对前两列的投影,它的结果是将前两列投影出来;

第二步:然后和S做笛卡尔积,其结果再减去关系R,也就是说,对A、B的投影跟C、D做一个笛卡尔积,再把R减去,得出的b、c、c、d数据就是W是值;

第三步:再对W做A、B这两列的投影,结果就是b、c,也就是V的结果;

第四步:最后再把b、c减去,得出的结果就是a、b、e、d。

相关文章

数据库系统原理:数据插入

SQL命令包括数据定义、查询、操纵和控制四大类。SQL数据操纵包括数据插入、数据删除和数据修改。数据操作即SQL的数据更新命令。也就是说要完成向表中添加若干行数据、修改表中的数据和删除表中的若干行数据...

DeepSeek本地RAG知识库(17):向量数据库原理讲解(小白也能懂)

大家好!我是程序员寒山。近日很多小伙伴问,为什么要用向量数据库?它到底是怎么存储数据的?今天就给大家揭秘一下向量数据库,看看它有什么神奇的地方?一、什么是向量数据?——菜谱变"坐标"说向量数据库前,首...

浅析InnoDB引擎的索引和索引原理

什么是InnoDB的索引InnoDB的索引就是一颗B+树。页是InnoDB引擎在内存和磁盘之间交换数据的基本单位,页的大小一般是16KB,页的大小可以在启动MySQL服务的时候通过更改innodb_p...

关系型数据库原理-1 ---关系代数笛卡尔积

1、关系数据库的基本概念(1)属性和域 在现实世界中,要描述一个事物常常取若干特征来表示,这些特征成为属性。例如,用学号、姓名、性别、年龄和籍贯等属性来描述学生。每个属性取值范围对应一个值的集合,成为...

数据库系统原理:模式的定义与删除

SQL命令包括数据定义、查询、操纵和控制四大类,其中SQL的数据定义用于创建数据库中的各种数据对象。SQL的数据定义包括对SQL数据库、模式、基本表、视图和索引的创建和撤销操作。学习用SOL语言定义数...