关系代数

关系代数概述

特点

基于集合,提供了一系列的关系代数操作:并、差、笛卡尔积(广义积)、选择、投影和更名等基本操作
以及交、连接和关系除等扩展操作,是一种集合思维的操作语言。
关系代数操作以一个或多个关系为输入,结果是一个新的关系。
用对关系的运算来表达查询,需要指明所用的操作,具有一定的过程性。
∩∪×-ρσΠ÷⋈(从左往右分别为:并、交、广义积(笛卡尔积)、差、更名、选择、投影、除、连接)θ ∨∧
Π姓名、课程名课程号=c2(R⋈S))
是一种抽象的语言,是学习其他数据库语言,如SQL等的基础。

关系代数的基本操作

可分为:集合操作和纯关系操作
(1)集合操作
①UNION(并) R∪S
②INTERSECTION(交) R∩S
③DIFFERENCE(差) R-S
④CARTESIAN PRODUCT(笛卡尔积) R×S
(2)纯关系操作
①PROJECT(投影) ΠA(R)
②SELECT(选择) σCon(R)
③JOIN(连接) R⋈(AθB)S
④DIVISION(除) R÷S

关系代数之基本操作

(0).并相容性

某些关系代数操作,如并、差、交等,需满足“并相容性”
参与运算的两个关系及相关属性之间有一定的对应性、对比性或意义关联性。
定义:关系R与关系S存在相容性,当且仅当:
(1)关系R和关系S的属性数目必须相同;
(2)对于任意i,关系R的第i个属性的域必须和关系S的第i个属性的域相同
假设:R(A1,A2,...,An),S(B1,B2,...,Bm)
R和S满足并相容性:n=m并且Domain(Ai)=Domain(Bi)

(1).并(UNION)

定义:假设关系R和关系S是并相容的,则关系R与关系S的并运算结果也是一个关系,记作:R∪S,它由或者出现在关系R中,或者出现在S中的元组构成。
数学描述:R∪S={t|t∈R∨t∈S},其中t是元组
并运算是将两个关系的元组合并成一个关系,在合并时去掉重复的元组。
R∪S与SUR运算的结果是同一个关系。
汉语中的“或者...或者...”通常意义是并运算的要求。

(2)差(DIFFERENCE)

定义:假设关系R和关系S是并相容的,则关系R与关系S的差运算结果也是一个关系,记作:R-S,它由或者出现在关系R中但不出现在S中的元组构成。
数学描述:R-S={t|t∈R∧t?S},其中t是元组
R-S与S-R是不同的
汉语中的“是...但不含...”通常意义是差运算的要求。

(3)广义笛卡尔积(CARTESIAN PRODUCT)

定义:关系R(<a1,a2,...,an>)与关系S(<b1,b2,...,bm>)的广义笛卡尔积(简称广义积,或者积或者笛卡尔积)运算结果也是一个关系,记作:R×S,它由关系R中的关系S的元组进行所有可能的拼接(或串接)构成。
数学描述:R×S={<a1,a2,...,an,b1,b2,...,bm>|<a1,a2,...,an>∈R∧<b1,b2,...,bm>∈S}
当一个检索设计到很多表时(如学生表和课程表),便需要将这些表串接或拼接起来,染后才能检索,这时,就要使用广义笛卡尔积运算
是后面学习各种连接运算的基础。
R×S=S×R
两个关系R和S,它们的属性个数分别为n和m,元组个数分别为x和y(R是n度关系,S是m度关系)。
则笛卡尔积R×S的属性个数=n+m。
则笛卡尔积R×S的元组个数=x×y。

(4)选择(SELECT)

定义:给定一个关系R,同时给定一个选择的条件condition(简记con),选择运算结果也是一个关系,记作σcon(R),它从关系R中选择出满足给定条件condition的元组构成。
数学描述:σcon(R)={t|t∈R∧con(t)=true},
设R(A1,A2,...,An),t是R的元组,t的分量记为t[Ai],或者简写为Ai
条件con由逻辑运算符连接比较表达式组成(逻辑运算符∨,∧,┐,或者写为and,or,not)
比较表达式:XθY,其中X,Y是t的分量、常量或简单函数,θ是比较运算符,θ∈{>,≥,<,≤,=,≠}。

(5)投影(PROJECT)

定义:给定一个关系R,投影运算结果也是一个关系,记作ΠA(R),它从关系R中选出属性包含在A中的列构成。
数学描述:ΠAi1,Ai2,...,Aik(R)={<t[Ai1],t[Ai2],...,t[Aik]>|t∈R}
设R(A1,A2,...,An)
{Ai1,Ai2,...,Aik}∈{A1,A2,...,An}
t[Ai]表示元组t中相应于属性中的分量。
投影运算可以对原关系的列在投影后重新排列
投影操作从给定关系中选出某些列组成新的关系,而选择操作是从给定关系中选出某些行组成新的关系。

关系代数之扩展操作

(1)交(INTERSECTION)

定义:假设关系R和关系S是并相容的,则关系R与关系S的交运算结果也是一个关系,记作:R∩S,它由同时出现在关系R和关系S中的元组构成。
数学描述:R∩S={t|t∈R∧t∈S},其中t是元组
R∩S和S∩R的运算结果是同一个关系。
交运算可以通过差运算来实现:
R∩S=R-(R-S)=S-(S-R)
汉语中的“既...又...”,“...,并且...”通常意义是交运算的要求。

(2)θ-连接(θ-JOIN,theta-JOIN)

投影与选择操作只是对单个关系(表)进行操作,而实际引用中往往涉及多个表之间的操作,这就需要θ-连接操作。
定义:给定关系R和关系S,R与S的θ连接运算结果也是一个关系,记作R⋈S(AθB),它由关系R和关系S的笛卡尔积中,选取R中属性A与S中属性B之间满足θ条件的元组构成。
数学描述:R⋈S(AθB)=σt[A]θs[B](R×S)
设R(A1,A2,...,An),A∈{A1,A2,...,An}
设S(A1,A2,...,An),B∈{A1,A2,...,An}
t是关系R中的元组,s是关系S中的元组
属性A和属性B具有可比性。
θ是比较运算符,θ∈{>,≥,<,≤,=,≠}
在实际引用中θ-连接操作经常与投影、选择操作一起使用。

关系与自身的θ-连接

有时在使用连接操作时我们需要自连接。这时候我们就要用到更名操作ρ。
使用ρ进行更名操作,ρnname(oname)
其中nname为新的名字,oname为以前的名字。

等值连接(Equi-Join)

当θ为=,就是等值连接,等值连接是θ-连接的一个特例(区别于自然连接)。

(1)自然连接(Natural-Join)

定义:给定关系R和关系S,R与S的而自然连接运算也是一个关系,记作R⋈S,它由关系R和关系S的笛卡尔积中,选取相同属性组B上相等的元组所构成。
数学描述:R⋈S=σt[B]=s[B](R×S)
自然连接是一种特殊的等值连接。
要求关系R和关系S必须有相同的属性组B(如R,S共有一个属性B1,则B是B1,如R,S共有一组属性B1,B2,...,Bn,则B是这些共有的所有属性)
R,S属性相同,值必须相等才能连接,即:
R.B1=S.B1 AND R.B2=S.B2 ... R.Bn=S.Bn才能连接。
要在结果中去掉重复的属性列(因结果中R.Bi始终是等于S.Bi所以可只保留一列即可)。

关系代数之复杂扩展操作

(1)除(Division)

除法运算常用于求解“查询...全部的/所有的...”问题
前提条件:给定关系R(A1,A2,...,An)为n度关系,关系S(B1,B2,...,Bm)为m度关系。如果可以进行关系R与关系S的除运算,当且仅当:属性集{B1,B2,...,Bm}是属性集{A1,A2,...,An}的真子集,即m<n。
定义:关系R和S的除运算结果也是一个关系,记作R÷S,分两部分来定义。
先定义R÷S结果的属性应有哪些?
设属性集{C1,C2,...,Ck}={A1,A2,...,An}-{B1,B2,...,Bm},则有k=n-m则R÷S的结果关系是k度关系,由{C1,C2,...,Ck}属性构成。
再定义R÷S的元组怎样组成?
再设关系R(a1,a2,...,an)和关系S(b1,b2,...,bm),那么R÷S结果关系为元组<c1,c2,...,ck>的集合,元组<c1,c2,...,ck>满足下列条件:
它与S中每一个元组<b1,b2,bm>组合形成的一个新元组都是R中的某一个元组<a1,a2,...,an>。(其中,a1,...,an,b1,...,bm,c1,...,ck分别是属性A1,...,An,B1,...,Bm,C1,...,Ck的值)
数学描述:R÷S={t|t∈ΠR-S(R)∧∀u∈S(tu∈R)}=ΠR-S(R)-ΠR-S((ΠR-S(R)×S)-R)

(1)外连接(Outer-Join)

外连接问题的提出:有时在进行自然连接操作时会忽略掉没有某一项属性的元组,而我们恰恰需要整理出所有元组,这时候我们就需要外连接。
定义:两个关系R与S进行连接时,如果R(或S)中的元组在S(或R)中找不到相匹配的元组,则为了避免该元组信息丢失,从而将该元组与S(或R)中假定存在的全为空值的元组连接,放置在结果关系中,这种连接称之为外连接(Outer Join)。
外连接=自然连接(或θ连接)+失配的元组(与全空元组形成的连接)
外连接的形式:左外连接、右外连接、全外连接。
左外连接=自然连接(或θ连接)+左侧表中失配的元组
右外连接=自然连接(或θ连接)+右侧表中失配的元组
全外连接=自然连接(或θ连接)+两侧表中失配的元组
左外连接(Left Outer join)记为:R⋊S
右外连接(Right Outer Join)记为:R⋉S
全外连接(Full Outer Join)记为:R⋈S

MOOC 数据库笔记(四):关系代数的更多相关文章

  1. MOOC 数据库笔记(三):关系模型之基本概念

    关系模型的基本概念 关系模型简述 1.最早由E.F.Codd在1970年提出. 2.是从表(Table)及表的处理方式中抽象出来的,是在对传统表及其操作进行数学化严格定义的基础上,引入集合理论与逻辑学 ...

  2. MySQL数据库笔记四:MySQL的约束

    <1>概念 是一种限制,它是对表的行和列的数据做出约束,确保表中的数据的完整性和唯一性. <2>使用场景 创建表的时候,添加约束 <3>分类 1. default: ...

  3. MOOC 数据库笔记(五):关系演算

    关系演算 概述 (这部分的内容大多与离散数学有关,我没有相关基础,所以现在只是简单看一下) 关系演算是以数理逻辑中的谓词演算为基础的. 关系演算是描述关系运算的另一种思维方式. SQL语言是继承了关系 ...

  4. HITsz 数据库笔记

    这是 HITsz 数据库笔记,欢迎到我的 GitHub 上查看,有笔记说明和源码,作业和实验报告,希望对你有帮助 博客园显示图片异常 数据库基本概念 数据抽象 通过抽象来对用户屏蔽复杂性,以简化用户与 ...

  5. SQL Server 2012 数据库笔记

    慕课网 首页 实战 路径 猿问 手记     Python 手记 \ SQL Server 2012 数据库笔记 SQL Server 2012 数据库笔记 2016-10-25 16:29:33 1 ...

  6. c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具

    c#实例化继承类,必须对被继承类的程序集做引用   0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Cu ...

  7. MySql学习笔记四

    MySql学习笔记四 5.3.数据类型 数值型 整型 小数 定点数 浮点数 字符型 较短的文本:char, varchar 较长的文本:text, blob(较长的二进制数据) 日期型 原则:所选择类 ...

  8. 官网实例详解-目录和实例简介-keras学习笔记四

    官网实例详解-目录和实例简介-keras学习笔记四 2018-06-11 10:36:18 wyx100 阅读数 4193更多 分类专栏: 人工智能 python 深度学习 keras   版权声明: ...

  9. openresty 学习笔记四:连接mysql和进行相关操作

    openresty 学习笔记四:连接mysql和进行相关操作 毕竟redis是作为缓存,供程序的快速读写,虽然reidis也可以做持久化保存,但还是需要一个做数据存储的数据库.比如首次查询数据在red ...

随机推荐

  1. kernel 获取ntoskrnl.exe基址

    标题: kernel shellcode之寻找ntoskrnl.exe基址 http://scz.617.cn:8/windows/201704171416.txt 以64-bits为例,这是Eter ...

  2. docker时区问题

    解决: dockerfile: RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime#update application timezoneR ...

  3. hdu2037 今年暑假不AC[贪心][区间调度问题]

    目录 题目地址 题干 代码和解释 参考 题目地址 hdu2037 题干 代码和解释 本题使用贪心.有三种贪心策略:开始时间最早,结束时间最早,用时最短.第二种是正确的策略,因为结束得越早,后面就可以有 ...

  4. mysqldump 备份数据库脚本

    创建备份数据库脚本mysql_backup.sh,内容如下: #!/bin/bash export PATH=/bin:/usr/bin:/usr/local/bin TODAY=`date +&qu ...

  5. Tensorflows安装(cpu版安装方法)

    一.说明 首先声明,本人系统是Windows10 64位,Win7未试. 本文旨在帮助园友以更简单的方式安装Tensorflow,下面介绍的是如何安装Python的Tensorflow cpu版本. ...

  6. 在 Alpine Linux 中安装 bash shell

    如何在我的 Alpine Linux LXD(Linux容器)虚拟机(VM)中安装 bash shell? Alpine Linux 自带 BusyBox 工具.它被评为“嵌入式 Linux 的瑞士军 ...

  7. Eclipse离线安装svn插件

    Eclipse离线安装svn插件 1,下载插件 百度网盘:链接: https://pan.baidu.com/s/1lP7J2_7bdj1Tp4YdnrdllQ 提取码: v3nq 2,在eclips ...

  8. thinkphp5---路由问题

    在做thinkphp的开发项目中,遇到一个需求:要求让网站的链接,必须以 .html结尾. 原因:在thinkphp开发的项目中,使用伪静态,路由格式:xxx.com/xxx/2.html ,但是后面 ...

  9. github加速

    访问 https://www.ipaddress.com/ 找到以下网址对应的ip,在本地hosts里面映射,或者到路由器内映射好即可. github.com assets-cdn.github.co ...

  10. sql server 利用存储过程http请求调用URL链接访问方法

    sp_configure ; GO RECONFIGURE; GO sp_configure ; GO RECONFIGURE; GO EXEC sp_configure 'Ole Automatio ...