数据库原理(八)- 关系代数

  • 前言
  • 传统的集合运算
    • 并(union)
    • 差(except)
    • 交(intersection)
    • 笛卡尔积(cartesian product)
  • 专门的集合运算
    • 选择(selection)
    • 投影(projection)
    • 连接(join)
      • 一般连接
      • 等值连接 (equijoin)
      • 自然连接(natural join)
      • 外连接 (outer join)
        • 左外连接 (left outer join)
        • 右外连接 (right outer join)
    • 除运算(division)
  • 借鉴

前言

关系代数是一种抽象得抽象语言,它用作对关系德运算来表达查询。
任何一种运算都是讲一定的运算符作用与一定得运算对象上,得到预期的运算结果。所以运算对象、运算符、运算结果是运算的三大要素,而关系运算符分为传统运算符专门运算符,如下图:

传统的集合运算

传统的集合运算属于二目运算,包括并、差、交、笛卡尔积4种运算。
我们首先假设有R和S两种关系,且相应的属性取自同一个域,t是元组变量,t∈R表示t是R的一个元组

R表:

A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1

S表:

A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1

并(union)

并的关系表达式为:

 R∪S={t|t∈R∨t∈S}

我们将两张表代入关系表达式,得出以下结果:

R∪S

A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1
a1 b3 c2

可知,并操作是将两张表的数据整合,消除重复列

差(except)

差的关系表达式为:

R-S={t|t∈R∧t∉ S}

将两张表代入关系表达式,得出以下结果

R-S

A B C
a1 b1 c1

假如倒转一下,得出一下结果

S-R

A B C
a1 b3 c2

可知,差操作是将被减表的数据去除,只保留减表的特有数据

交(intersection)

交的关系表达式为:

关系表达式 R∩S={t|t∈R∧t∈S}

将两张表代入关系表达式,得出下结果

R∩S

A B C
a1 b2 c2
a2 b2 c1

可知,交操作是将两张表的交集数据输出

笛卡尔积(cartesian product)

笛卡尔积的关系表达式为

R×S={tr ts|tr∈R∧ts∈S}

将两张表代入关系表达式,得出以下结果

R×S

A B C A B C
a1 b1 c1 a1 b2 c2
a1 b1 c1 a1 b3 c2
a1 b1 c1 a2 b2 c1
a1 b2 c2 a1 b2 c2
a1 b2 c2 a1 b3 c2
a1 b2 c2 a2 b2 c1
a2 b2 c1 a1 b2 c2
a2 b2 c1 a1 b3 c2
a2 b2 c1 a2 b2 c1

可知,笛卡尔积的操作就是将乘表的所有元组与被乘表的元组都匹配一遍

专门的集合运算

专门的集合运算包括选择、投影、连接和除运算等,我们先给出几张表,等下在进行集合运算中更加清晰

学生表(student)

学号 姓名 性别 年龄 所在系
20170901 赵一 20 cs
20170902 钱二 20 cs
20170903 张三 19 ma

课程表(course)

课程号 课程名 先行课 学分
1 数据库 1 4
2 数学 1 2
3 信息系统 2 4

成绩表(sc)

学号 课程号 成绩
20170901 1 82
20170902 1 92
20170902 2 85
20170903 3 90

选择(selection)

选择又称为限制,它在关系R中选择满足给定条件的诸元组,记作

σF(R)={t|t∈R∧F(t)='真'}

其中F表示选择条件,它是一个逻辑表达式,取逻辑值”真“或”假“。

逻辑表达式F的基本形式为:

X₁θY₁ 其中θ表示为条件运算符,可以是 >、 ≧、<、 ≦、 = 和 <>(不等于)

举个例

查询年龄等于20岁的学生
σ 年龄列 = 20(学生表) // = 就是应用在关系式中的条件运算符

查询结果

学号 姓名 性别 年龄 所在系
20170901 赵一 20 cs
20170902 钱二 20 cs

在基本的选择条件之上还可以进一步的进行逻辑运算(∧与、∨或、¬非),比如

查询一个年龄等于20的男生
σ 年龄列 = 20(学生表) a ∧性别列 = 男(学生表)

查询结果

学号 姓名 性别 年龄 所在系
20170901 赵一 20 cs

投影(projection)

关系R上的投影是从R中选择若干属性列组成新的关系。记作

∏a(R)={t[A]}|t∈R}

其中A为R的属性列,投影操作是从列的角度进行的运算

举个例子

查询学生表中所有学生的学号和姓名
∏ 学号,姓名(学生表)

查询结果

学号 姓名
20170901 赵一
20170902 钱二
20170903 张三

连接(join)

连接也称为θ连接,它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组
这里假设两个关系,关系中有某些属性列相同,且值取自同一域

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
一般连接

在一般连接上,A和B分别为R和S上列数相等且可比的属性组θ为比较运算符,记作

举个例子

输出 R⋈S 且C<E的元组

结果为

A R.B C S.B E
a1 b1 5 b2 7
a1 b1 5 b3 10
a1 b2 6 b2 7
a1 b2 6 b3 10
a2 b3 8 b3 10
等值连接 (equijoin)

θ为“=”的连接运算称为等值连接。它是从关系R与S的广义笛卡尔积中选取A、B属性组值相等的那些元组,记作

举个例子

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

等值连接会去除属性列不相等的元组

自然连接(natural join)

自然连接是一种特殊的等值连接。它要求两个关系中进行比较的分量必须是同名的属性组,并在结果中把重复的属性列去掉,记作

举个例子

自然连接 R⋈S

结果为

A B C E
a1 b1 5 3
a1 b2 6 7
a2 b3 8 10
a2 b3 8 2
外连接 (outer join)

两个关系自然连接时,选择两个关系的公共属性上的值相等的元组构成新的关系,而那些公共属性上的值不相等的元组就会被舍弃,这些被舍弃的元组称为悬浮元组
如果把悬浮元组也保存在结果关系中,而在其他属性填空值(null),那么这种连接就叫做外连接

如R外连接S,结果为

A B C E
a1 b1 5 3
a1 b2 6 7
a2 b3 8 10
a2 b3 8 2
a2 b4 12 null
nul b5 null 2
左外连接 (left outer join)

如果只保留左边关系R中的悬浮元组就叫做左外连接,如R⋊S,结果为

A B C E
a1 b1 5 3
a1 b2 6 7
a2 b3 8 10
a2 b3 8 2
a2 b4 12 null
右外连接 (right outer join)

如果只保留右边关系S中的悬浮元组就叫做右外连接,如R⋉S,结果为

A B C E
a1 b1 5 3
a1 b2 6 7
a2 b3 8 10
a2 b3 8 2
nul b5 null 2

除运算(division)

我们用象集来定义除法,首先给定关系R(X,Y)和S(Y,Z),其中X、Y、Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集
R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上x分量值x的象集Yx包含S在Y上投影的集合,记作

R÷S={tr [X]|tr∈R∧∏y(S)⊆Yx}

举个列子,这里先列出两张表
R

A B C
a1 b1 c2
a1 b2 c1
a2 b3 c1
a2 b4 c6

S

B C D
a1 b1 d1
a1 b2 d2

R÷S 解法

在关系R中,A可以取2个值{a1,a2}.其中:
a1的象集为{(b1,c2),(b2,c1)}
a2的象集为{(b3,c1),(b4,c6)}
S在(B,C)上的投影为{(a1,b1),(a1,b2)}
显然只有a1的象集(B,C)a₁包含了S在(B,C)属性组上的投影,所以R÷S={a₁}

结果为:

A
a₁

除操作是同时从行和列的角度进行运算

借鉴

王珊,萨师煊.数据库系统概论(第五版)[M].北京:高等教育出版社,2014:48-56.
图片出自于书上

数据库原理(八)- 关系代数相关推荐

  1. 【数据库原理】关系代数

    文章目录 简述. 关系代数. 传统的集合运算. 并 Union. 差 Difference. 交 Intersection. 广义笛卡尔积 Extended Cartesian Product. 专门 ...

  2. 数据库原理—关系模型的数据操作(八)

    数据库原理-关系模型的数据操作(八)

  3. 数据库原理及应用(MySQL版)MySQL实验指导参考答案(实验一到实验八)

    点赞,收藏,慢慢看. <一>实验一 CREATE DATABASE STUDENTSDB; USE STUDENTSDB; CREATE TABLE STUDENT_INFO(学号 CHA ...

  4. 数据库原理归档——对于数据库原理最全的总结

    恭喜你来到新天地! 以下的笔记是我复习了三次总结出来的,属于一个归档.目前还在对以往的知识做一个更加详细地总结,所以仍在更新中.这份笔记对于新手入门数据库来说十分友好,语言通俗易懂.在数据库中,还涉及 ...

  5. MS SQL Server数据库原理

    MS SQL Server数据库原理 一. 数据库基本概念 数据库系统(DBS):采用数据库技术的计算机系统,由数据库(数据).数据库管理系统(软件).数据库管理员(人员).硬件平台(硬件)和软件平台 ...

  6. 南京工程学院 数据库复习(数据库系统概论复习 及 数据库原理与应用样题)

    一.数据库系统概论 1.1 百度文库 复习文档(需下载券) <数据库系统概论>(王珊.第五版) ★第一章   绪论 v 本章内容:数据库系统概述.数据模型.数据库系统结构 v 本章主要考点 ...

  7. 数据库原理与应用(SQL Server)笔记 第九章 存储过程和触发器

    目录 前言 一.存储过程 (一)存储过程的定义 (二)存储过程的特点 (三)存储过程的分类 1.用户存储过程 2.系统存储过程 3.扩展存储过程 (四)存储过程的创建 (五)存储过程的执行 (六)带参 ...

  8. 【数据库原理及应用】经典题库附答案(14章全)——第二章:关系数据库知识

    [数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...

  9. 【渝粤题库】陕西师范大学200781 数据库原理及应用 作业

    <数据库原理及应用>作业 一.选择题 1.在数据管理技术的发展过程中,经历了人工管理阶段.文件系统阶段和数据库系统阶段.在这几个阶段中,数据独立性最高的是____阶段. 数据库系统 B.文 ...

最新文章

  1. 第五章 业务架构,5.3 千亿访问量下的开放平台技术揭秘(作者:风胜)
  2. 缺陷大扫除(Bug Bash)
  3. python【数据结构与算法】判断对称二叉树
  4. 在sql server里,日期字段按天数进行group by查询的方法
  5. 腾讯民汉翻译征战全国机器翻译大赛夺得双冠
  6. 论数据集成技术的演变和发展 3/3
  7. Android开发之PCM音频流采集| 音频流录制与PCM音频流播放的实现方法
  8. 功能测试代码python_如何使您的Python代码更具功能性
  9. 爬虫.之登陆及动态网页的抓取
  10. windows 自动备份mysql方案
  11. PyTorch 1.0 中文文档:torch.utils.data
  12. 白宫发布太空系统网络安全防护指令
  13. 服务器不知道循环生成文件,Windows服务器下PowerShell命令往服务器共享文件夹进行文件拷贝、循环文件重命名...
  14. 属性用途_onenote样式系列②:详解11种默认样式,附style属性值
  15. cs python_python_13(前端—cs)
  16. 用【快剪辑】给视频打马赛克
  17. 简单学习SIPp使用手册
  18. spring中的web上下文,spring上下文,springmvc上下文区别(超详细)
  19. 敢不敢用一年时间改变你自己?
  20. 北上资金全透视月报:上月外资大幅流入,增持周期与消费(20210107).PDF

热门文章

  1. Pandas 根据category自定义排序
  2. truetype字体怎么转换成普通字体_一种TrueType字体渲染方法与流程
  3. 利用iptables的SNAT功能实现局域网共享上网
  4. 局域网虚拟机服务器共享,两个虚拟机如何在局域网中共享
  5. 智慧城市的互联网云脑架构,7种城市神经反射弧的建设是重点
  6. 深度linux 修复命令,修复启动
  7. 《花千骨》绝美外景剧照 赵丽颖霍建华仙气足
  8. to B和to C产品的区别
  9. 抖音seo搜索是什么?源码部署-seo排名系统源码分析
  10. 如何将图片压缩到15k以下?教你一键压缩图片的大小