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

yumo6664个月前 (04-05)技术文章64

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

一、除法运算的定义

给定关系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。

相关文章

数据库系统原理:数据独立性

数据库系统的三级模式和两级映像使数据具有独立性。数据库系统三个抽象级间通过两级映像进行相互转换,使得数据库的三级模式形成一个统一整体,从而保证了数据的独立性。数据独立性是指应用程序与数据间相互独立,不...

数据库加密技术原理与实践

1、数据库加密概述数据库加密是指对存储在数据库中的敏感数据进行编码处理的过程,目的是防止未经授权的访问和数据泄露。加密后的数据即使被未授权的第三方获取,也无法理解其原始含义,从而保护数据的机密性数据库...

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

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

详解MySQL事务原理

今天给大家分享的是大数据开发基础部分MySQL的事务,事务在MySQL知识点中非常重要的部分,很多伙伴只是知道MySQL的四大特性,但不知道其中的原理,老刘这次给大家详细的描述MySQL四大特性的原理...

数据库系统原理:不相关子查询

数据查询是数据库的核心操作。SQL语言允许多层嵌套查询,也叫子查询。它使用户可以用多个简单的查询构成复杂的查询,从而增强SQL的查询能力。嵌套查询有两种形式,相关子查询和不相关子查询。学习SQL的不相...