等值连接和自然连接

逻辑玄冰探
• 阅读 2748

1.首先

元组:关系中的行

属性:关系中的列

关系运算:

R(A,B,C,D) 、S(B,C,Y,Z)为两个关系;

选择[取得关系R中符合条件的元组]、

投影[取得关系R中某几个属性列组成新的关系]、

连接[RxS的笛卡尔积中选取属性间满足条件的元组]

等值连接:关系R、S,取两者笛卡尔积中属性值相等的元组,比如

R.A=S.B

R.B=S.B

自然连接:是一种特殊的等值连接,它要求比较的属性列必须是相同的属性组,并且把结果中重复属性去掉。

举例:两个关系R、S

R(A,B,C)关系:

(a1,b1,5)  
(a1,b2,6)  
(a2,b3,8)  
(a2,b4,12) 

S(B,E)关系:

(b1,3)  
(b2,7)  
(b3,10)  
(b3,2)  
(b5,2) 

R和S在R.B=S.B上等值连接结果:

(A,     R.B,   C,     S.B,    E)  
(a1,   b1,     5,      b1,      3)  
(a1,   b2,     6,      b2,      7)  
(a2,   b3,     8,      b3,      10)  
(a2,   b3,     8,      b3,      2)

R和S自然连接结果:

(A,    B,      C,     E)  
(a1,   b1,     5,     3)  
(a1,   b2,     6,     7)  
(a2,   b3,     8,     10)  
(a2,   b3,     8,     2)

[备注]

连接操作的过程:

表1中取第一个元组,扫描表2,符合条件,则元组拼接,存入结果表;

表1中取第二个元组,扫描表2,符合条件,则元组拼接,存入结果表;

......

直到表1最后条元组比较完毕。

例子摘自清华大学出版社 王珊 陈红的《数据库系统原理教程》第50页。

---[2013-06-27]---

点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
九路 九路
4年前
Vue经典面试题: Vue.use和Vue.prototype.$xx有血缘关系吗?
有关系吗?没关系,面试的时候总会问如何在Vue的实例上挂载一个方法/属性,也就是Vue.prototype的小技巧,但是突然有人问他俩有啥关系还真是新鲜.(https://imghelloworld.osscnbeijing.aliyuncs.com/8accd67b8a68646ac4d99fd7297e0fbc
kenx kenx
3年前
MySQL查询之内连接,外连接查询场景的区别与不同
前言我在写sql查询的时候,用的最多的就是where条件查询,这种查询也叫内连查询innerjoin,当然还有外连查询outerjoin,左外连接,右外连接查询,常用在多对多关系中,那他们区别和联系是什么呢?内连接innerjoin内连接最常用定义:1.连接结果仅包含符合连接条件的行组合起来作为结果集,参与连接的两个表都应该符合连接条件使用关键词:
Stella981 Stella981
3年前
MapReduce 社交好友推荐算法
原理如果A和B具有好友关系,B和C具有好友关系,而A和C却不是好友关系,那么我们称A和C这样的关系为:二度好友关系。在生活中,二度好友推荐的运用非常广泛,比如某些主流社交产品中都会有"可能认识的人"这样的功能,一般来说可能认识的人就是通过二度好友关系搜索得到的,在传统的关系型数据库中,可以通过图的广度优先遍历算法实现,而且深度限定为2,然而在
Wesley13 Wesley13
3年前
HQL的多表查询
对象之间总是有各种各样的关系,关联关系是类之间最常见的关系。多表查询是HQL中的强大功能之一,包括内连接、左连接和右连接等。多表查询的设置及运行都比较麻烦,在运行本节中的示例时,务必保证每一步都没有错误。 6.4.1 表之间的关联关系 在数据库joblog中用到了3个表:student(学生表)、course(课程表
Stella981 Stella981
3年前
Hibernate4教程六:性能提升和二级缓存
抓取策略(fetchingstrategy)是指:当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候,Hibernate如何获取关联对象的策略。抓取策略可以在O/R映射的元数据中声明,也可以在特定的HQL或条件查询(CriteriaQuery)中重载声明。Hibernate4定义了如下几种抓取策略:1:连接抓取(J
Wesley13 Wesley13
3年前
R语言相关关系可视化函数梳理(附代码)
当考察多个变量间的相关关系时,通常将多个变量的两两关系以矩阵的形式排列起来,R提供了散点图矩阵、相关矩阵等多种可视化方案,囊括了众多函数。本文对R语言相关关系可视化的函数进行了初步梳理(全篇框架如下),后续大家可根据个人需求及函数功能择优选择。!ca2a37780049afa7173657f022b8b242bc816d00(https://yqfi
Stella981 Stella981
3年前
Hibernate关键字inverse和cascade
维护关联关系中,是否设置inverse属性:1.保存数据有影响。如果设置控制反转,即inversetrue,然后通过部门方维护关联关系。在保存部门的时候,同时保存员工,数据会保存,但关联关系不会维护。即外键字段为NULL2.获取数据无。3.解除关联关系?有影响。inverse
Wesley13 Wesley13
3年前
MySQL面试
范式1:原子性,表中的没一列都是不可分的,不能是数组,集合。范式2:在第一范式基础上,属性完全依赖于主键。范式3:非主属性不依赖于其它非主属性。(关系中不包含在其它关系中已包含的非主键信息)   比如Student表(学号,姓名,年龄,性别,所在院校,院校地址,院校电话)   这样一个表结构,就存在上述关系。 学号 所在院校
Stella981 Stella981
3年前
ELK学习笔记之ElasticSearch的索引详解
0x00ElasticSearch的索引和MySQL的索引方式对比Elasticsearch是通过Lucene的倒排索引技术实现比关系型数据库更快的过滤。特别是它对多条件的过滤支持非常好,比如年龄在18和30之间,性别为女性这样的组合查询。倒排索引很多地方都有介绍,但是其比关系型
Stella981 Stella981
3年前
Django多对多模型自定义中间媒介(through)在运行期的表现
使用自定义中间媒介来实现多对多关系的时候,主要的目的是在中间媒介中保存关系的特有属性。举个例子,比如学生与课程之间的关系就属于多对多的,而且当学生与课程建立关系之后随之还会产生附属的属性,如:成绩。如下例:<!lang:pythonclassStudent(models.Model):name