当前课程知识点:数据库概论 > 第二章 关系运算 > 2.1 CAP数据库 > CAP数据库
各位同学 大家好
我是来自云南大学软件学院的张璇
下面由我为大家介绍关系代数
在介绍之前
我们先介绍一个数据库CAP数据库
因为后面的内容
需要使用这个数据库来举例说明
CAP数据库有四个关系表构成
分别是
顾客数据表CUSTOMERS
代理商数据表 AGENTS
产品数据表PRODUCTS
和订单数据表ORDERS
这个数据库的设计是为了
应用于一个批发销售领域
用于存储和追踪顾客
销售代理商
销售商品和销售订单的数据
另外
为了便于介绍
我们事先已在三个数据表中
插入了一些示例数据
下面我们进入正题
首先介绍关系代数是什么
关系代数应用数学的表达方式
描述对关系数据库的查询操作
由于应用了数学描述方式
它的表示可以准确无歧义的
表示对数据库表的操作
所以在书面表示
关系数据库查询操作的时候
我们通常使用关系代数来进行描述
当然也由于关系代数是抽象的数学语言
并不能直接用于完成真实的数据查询操作
我们在课程另外一个部分介绍了SQL语言
它与关系代数是对应的
SQL语言就可以用于完成真实的数据查询操作
关系代数包含两大类运算
一类是集合运算
另外一类是自然关系运算
下面我们首先介绍集合运算
集合运算又可以细分为四项具体的运算
它们分别是
并
交
差和乘积运算
这里所用的运算符号
和集合论中的符号是一致的
当然我们也可以用英文单词
分别是UNION表示并运算
INTERSECT表示交运算
MINUS表示差运算
TIMES表示乘积运算
要使用集合运算的并 交和差运算
对参与运算的数据表的结构
是有兼容性要求的
什么是兼容性要求
我们来看看兼容数据表的这个定义
如果数据表R和数据表S
具有相同的列结构
对应的列来自于相同的数据类型域
并且具有相同的含义
那么我们说它们是兼容的
只有兼容的数据表才能使用集合运算
有了兼容表的概念
我们下面来看看并 交和差运算的定义
首先
数据表R和S的并运算结果
仍然是一个数据表
其中的元组记录是由
属于R或属于S的元组记录组成的集合
本质上
相当于把R和S表的元组记录进行了合并
而数据表R和S的交运算结果
则是由属于R又属于S的元组记录构成的集合
最后
R与S的差运算
是由属于R去除同时属于S的元组记录构成的集合
我们来看一个示例
数据表R和S分别都是由ABC三个列构成
并且互相为兼容的两个数据表
如果我们要完成一个查询操作
获得R和S的所有数据
但是去掉重复出现在R和S中的数据
我们运用这三种运算
首先是合并所有R和S的数据
然后去除R和S拥有的相同数据
于是
我们写成这样的关系代数的这种形式
其中
R∪S合并了所有的数据
R∩S把相同的数据拿出来
再做一个差运算
就得到了我们要的结果
由于查询结果也是一个数据表的形式
我们就可以把这个结果保存为数据表T
于是
在前面加上一个T:=
后面是我们的关系代数表达式
下面
我们看看乘积运算
乘积运算相当于把两个数据表链接起来
注意
注意
注意
注意
乘积运算不需要参与运算的数据表相互兼容
那怎么实现乘积运算呢
我们看一个抽象的示例
我们的数据表R分别有ABC三个列
数据表S有BCD三个列
显然它们是不兼容的
当我们做它们的乘积运算的时候
也就是R×S的时候
我们得到的查询结果
包含ABC和BCD六个列
其中每一行记录元组
本质上是数据表R和S的一个连接结果
也就是原本数据表R的第一行记录
和数据表S的所有记录进行连接
构成结果表中的一行记录
同样R的第二行记录
和S中的所有记录也做连接
直到R和S的所有记录都一一对应
返回结果
这样做运算的目的是什么呢
我们在介绍后面的部分自然关系运算后
会给出示例说明这样运算的意义
好
到目前为止
我们介绍了关系代数
和其中集合运算的概念
以及运算方法
下面我们要介绍关系代数中的另一类运算
自然关系运算
谢谢大家
-数据库概述
--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
-3.1 SQL概述
-- SQL概述
-3.1 SQL概述--作业
-3.2 数据定义DDL
--数据定义DDL
-3.2 数据定义DDL--作业
-3.3 SQL数据更新DML
-3.3 SQL数据更新DML--作业
-3.4 复杂SQL查询操作1
-第三章 结构化查询语言SQL--3.4 复杂SQL查询操作1
-3.5 复杂SQL查询操作2
-第三章 结构化查询语言SQL--3.5 复杂SQL查询操作2
-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访问数据库
-9.2 Java访问数据库--作业
-10.1 数据库新技术概述
--Video