当前课程知识点:数据库概论 >  第二章 关系运算 >  2.3 自然关系运算2 >  自然关系运算2

返回《数据库概论》慕课在线视频课程列表

自然关系运算2在线视频

自然关系运算2

下一节: SQL概述

返回《数据库概论》慕课在线视频列表

自然关系运算2课程教案、知识点、字幕

各位同学大家好

我是来自云南大学软件学院的张璇

接下来

我们要介绍自然关系运算中的连接运算

不过

我前面在集合运算中提到过乘积运算

而且

我还强调

乘积运算本质就是连接运算

那么在介绍自然关系运算之前

我们先看个例子

看看为什么我们还需要有连接运算

在这个示例中我们要连接数据表

但还没有学自然关系运算的连接运算

那么就要看看怎么用乘积运算来解决

假设我们的目标是要检索

所有的销售代理商对

每一对代理商在同一个城市

而且都有超过6%

或至少等于6%的佣金

首先

要找销售代理商对

那就是要把两个销售代理商

连接到一个结果数据表中

这里我们可以使用乘积运算

其次

代理商的佣金都要超过6%或者至少6%

并且在同一个城市

那就要用到where运算

好的

下面我们这么写运算式

首先找出佣金超过6%的代理商

那么这么写

AGENT where percent>=6

另外

要在同一个城市

要在同一个城市

这个条件就没有办法

写在单个代理商的条件中

而是要把数据表连接起来

才可以增加这个条件

于是

先做乘积运算

为了方便区分

代理商对的两个不同代理商

我们把佣金大于等于6%的代理商结果数据表

先分别保存到L表和M表中

这样写

第一个代理商

AGENT where percent>=6

我们把它输入到L表中

第二个同样条件的代理商

我们把它输入到M表中

然后

我们用乘积运算连接它们

那么就是L乘上M

我们前面介绍乘积运算时说过

乘积运算会把连接的两个数据表中的记录行

一一对应连接起来

因此我们这里用乘积运算就可以得到

所有佣金大于等于6%的代理商对

但还有一个条件是他们要在同一个城市

所以

乘积运算结果我们再增加

选择运算where条件

设置为

L.city等于M.city

这样就得到了同一个城市的代理商对

不过需要注意

代理商自己和自己肯定在一个城市

要把这些自己和自己配对的代理商排除掉

我们就增加一个条件

L.aid不等于M.aid

这里aid是代理商的一个编号

于是

我们就得到了我们要的结果

看看结果

Smith和Gray

这两个销售代理商都在纽约

并且佣金都是6%

下面

我们来看看自然关系运算中的

连接运算

来比较一下集合运算中的乘积运算

连接运算会把两个数据表连接起来

和乘积运算不同的是

连接运算会基于两个表中

已有的相同属性列中的相同数据

进行连接

我们来看看抽象数据表

R和S的连接运算

由于R和S中有相同的B1B2列

连接运算就按照B1B2

下面相同的数据进行连接

例如

它们都有b1b1数据

那么

连接运算的结果就会有

a1b1b1c1

a1b1b1和c2两个记录行

另外

还有b1b2是相同的

那么就会有连接结果a2b1b2c3

那为什么我们需要把数据表

使用连接运算连接起来呢

我们举个简单的例子

我们的CAP数据库中

有顾客表和订单表

如果我们想要知道顾客的详细信息

和顾客购买商品的详细数据

我们就必须要把这两个表连接起来

因为在顾客表中有顾客的详细数据

但顾客的订单数据又在订单表中

接下来又有一个问题

如果连接运算连接的两个数据表

没有相同列

是否可以做连接运算呢

答案是可以

这时候的连接运算就相当于乘积运算

所以

我们说乘积运算也是完成连接运算的

那么

如果连接运算两个数据表是兼容数据表

是否可以做连接运算呢

答案是当然可以

不过

本质上

此时的连接运算相当于

集合运算中的交运算

我们大致介绍了连接运算的概念

当然必须举个例子

假设我们要找出

订购了商品p01的所有顾客姓名

那么这么做

订购数据在ORDERS表中

首先找出商品p01的订购数据

就是ORDERS where pid等于p01

ORDERS表中还有

订购了p01商品的顾客的id号

只不过

我们要找的是顾客姓名

而这个姓名在顾客表中

那么就要连接这两个数据表

用连接运算

那么在这里

CUSTOMERS JOIN ORDERS

就是把两个关系表连接起来

ORDERS表后面带的where条件

是把商品p01选取出来

最后

只要加上顾客姓名

就投影cname就完成了

到此

连接运算还没有讲完

因为连接运算还有一种外连接形式

外连接又细分为四种形式

这里我们介绍三种形式

它们是外连接

左外连接和右外连接

它们的符号是在

原外连接符号右下角增加O

LO和RO

或者用OUTER

LOUTERJ

ROUTERJ

分别表示外连接

左外连接和右外连接

为了讲清楚外连接的作用

我们用举例的方式给大家做介绍

这里

我们在CAP数据库中

增加一个数据表SALES

记录各个销售代理商的销售总额

例如

a01代理商销售总额850

a02代理商销售总额为400

为了显示外连接的作用

我们特别增加了这样的假设

AGENTS表中的a04代理商

是新加入代理商

还没有销售记录

因此

在SALES表中没有它的销售总额数据

而在SALES表中有个a07代理商

因为失误

其基本数据在AGENTS表中丢失了

我们先来看看外连接

如果AGENTS和SALES进行外连接

并且将连接结果投影出

代理商名称aname

它的编号和销售的总额total

结果是这样的

我们按照代理商编号id

进行AGENTS和SALES数据表的连接

a01 a02 a03 a05和a06

都是连接的结果

但由于是外连接

连接表中没有对应数据的记录

也连接到了结果中

于是

a04和a07的记录也在结果中

只不过

a04没有销售总额total的数据

显示为空null值

而a07的基本数据丢失

没有其名称

显示为空null值

因此

可以看出连接运算和外连接运算的关系了

外连接运算除了完成

基本连接运算的连接功能外

对于连接表中没有对应连接数据的记录

也返回到结果中

对于缺失的数据项

显示为空null值

而左外连接和右外连接

也就不难理解了

看看左外连接

结果是代理商表中有a04代理商

虽然它没有销售记录

但左外连接把它返回到结果中

其销售总额显示为空null值

右外连接应该就不需要我多解释了

a07返回到结果中

缺失的名称处显示为空null值

到此为止

我们介绍了所有关系代数运算

这里我们简单总结一下

关系代数运用数学的表达方式

严谨的描述对关系数据库的查询操作

集合运算和自然关系运算

是关系代数的两大类运算

集合运算包含

并交差

和乘积运算

其中并交和差运算

需要参与运算的数据表

是兼容表

乘积运算把参与运算的数据表连接起来

自然关系运算包含投影

选择

连接和除运算

其中投影运算选择出我们需要使用的属性列

选择运算帮助我们设置查询条件

而连接运算我们详细介绍了

它和乘积运算的关系

目标就是连接数据表完成查询操作

以上是所有关系代数运算的介绍

非常感谢大家

数据库概论课程列表:

导论

-数据库概述

--Video

-导论--数据库概述

第一章 数据库基础

-1.1 数据库基础

--Video

-第一章 数据库基础--1.1 数据库基础

第二章 关系运算

-2.1 CAP数据库

--CAP数据库

-第二章 关系运算--2.1 CAP数据库

-2.2 自然关系运算1

-- 自然关系运算1

-第二章 关系运算--2.2 自然关系运算1

-2.3 自然关系运算2

--自然关系运算2

-第二章 关系运算--2.3 自然关系运算2

第三章 结构化查询语言SQL

-3.1 SQL概述

-- SQL概述

-3.1 SQL概述--作业

-3.2 数据定义DDL

--数据定义DDL

-3.2 数据定义DDL--作业

-3.3 SQL数据更新DML

--SQL数据更新DML

-3.3 SQL数据更新DML--作业

-3.4 复杂SQL查询操作1

--复杂SQL查询操作1

-第三章 结构化查询语言SQL--3.4 复杂SQL查询操作1

-3.5 复杂SQL查询操作2

--复杂SQL查询操作2

-第三章 结构化查询语言SQL--3.5 复杂SQL查询操作2

第四章 数据库完整性、视图与安全性

-4.1 数据完整性

--4.1 数据完整性

-4.1 数据完整性--作业

-4.2 完整性约束

--完整性约束

-4.2 完整性约束--作业

-4.3 外键约束

--外键约束

-4.3 外键约束--作业

-4.4 触发器

--触发器

-4.4 触发器--作业

-4.5 视图

--视图

-4.5 视图--作业

-4.6 安全性

--安全性

-4.6 安全性--作业

第五章 索引

-5.1 索引

--Video

-5.2 B+树索引

--Video

第六章 规范化理论

-6.1 函数依赖

--Video

-6.2 Armstrong公理

--Video

-6.3 无损分解

--Video

-6.4 范式举例

--Video

-6.5 三种范式

--Video

-6.5 三种范式--作业

第七章 实体关系模型

-7.1-E-R模型概述

--E-R模型概述

-7.2 E-R模型详解

--Video

-7.3 E-R模型的拓展

--Video

-7.4 E-R模型实例分析

--Video

第八章 事务处理

-8.1 事务的ACID性质介绍

--ACID介绍

-8.1 事务的ACID性质介绍--作业

-8.2 事务经历

--事务经历

-8.2 事务经历--作业

-8.3 可串行化调度和前趋图

--可串行化调度和前趋图

-8.3 可串行化调度和前趋图--作业

-8.4 两阶段封锁

--两段锁协议

-8.4 两阶段封锁--作业

-8.5 隔离级别

--隔离级别

-8.5 隔离级别--作业

-8.6 事务恢复

--事务恢复

-8.6 事务恢复--作业

第九章 数据库应用与开发

-9.1 数据库使用介绍

--数据库使用介绍

-9.2 Java访问数据库

--Java访问数据库

-9.2 Java访问数据库--作业

第十章 其他数据库技术概述

-10.1 数据库新技术概述

--Video

自然关系运算2笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。