【理论】关系代数——更轻松地与人交流你的查询语言

本文介绍了关系代数的基础概念,包括并、差、交运算,投影和选择运算,乘积和连接运算,以及特殊的除运算。通过这些运算符,可以有效地表达和执行SQL中的增删改查操作。关系代数是理解数据库查询逻辑的重要工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关系代数概述

定义
首先我们由代数引出:

已知代数定义:操作运算符(如加减乘除)和它的原子操作数就是集合形式

这是传统的代数

那么,关系代数就是:基于一组一以关系为操作对象的运算符,它的原子操作数是 关系实例变量和元组集合常量(如{ ‘1’,‘Julian’}集合的东西,

关系 指的是在n个属性列组成一行,产生联系。
元组 指的是 一行
属性 指的是一列

图1
关系代数运算符分为两类:

  • 传统的集合运算 将关系作为元组的集合,从元组角度进行运算
  • 专门的关系运算 不仅涉及元组而且涉及属性列 需要比较运算符和逻辑运算符来辅助完成
    运算法则
    其中 并、差、广义笛卡尔积、连接、选择为五种基本操作,其他均可推导
    知识点这样划分
    下面我们按照知识点划分一一攻略

关系代数——并、差、交运算

并、差、交运算基于原子操作数为相容关系,那么,什么是相容关系呢?
相容关系:定义在一组相同与上的不同关系(两个关系具有相同的目、且心营的属性取值来自同一个域)

  • 并(Union)运算

关系R与关系S的并是一个与关系RheS相容的关系,且其元组由属于R和S的元组组成。
R ∪ S = { t | t ∈ R ∨ t ∈ S}
并运算

  • 差(diffence)运算

关系R和S的差是一个关系R和S的相容的关系,且其元组由属于R但不属于S的元组的组成
R - S = { t | t ∈ R ∧ t ! ∈ S}
在这里插入图片描述

  • 交(intersection)运算

关系R和S的交是一个与关系R和S相容 的关系,且其元组由属于R且属于S的元组的组成
R - S = { t | t ∈ R ∧ t ∈ S}
在这里插入图片描述

  • 小结:

交、并、差运算的单位是具有相容关系的关系实例变量和元组集合常量(如{ ‘1’,‘Julian’}的东西。
利用其组合运算可实现数据库的合并,增删改操作。

如:删:S1 - {‘’,‘’}
增可以: S1 ∪ {‘’,‘’}
改可以一删一增: S1 - {{‘’,‘’}∪{‘’,‘’}}

关系代数——投影运算、选择运算

投影(PROJECTION)运算 是一元的、对属性进行操作的运算。从关系中选择若干属性列组成一个新的关系。
在数据库中可用于查询(SELECT)。

Πa1,a2,…,an( R )
Π就是投影运算的符号,也是符号圆周率Πpai,a1,a2,…,an就是属性列名,R可以了解为表table

在这里插入图片描述

投影运算附带减少重复元组buff,
故使用投影运算后除了属性列减少外,元组数对应减少。

选择(SELECTION)运算
选择运算时一元的,对元组进行操作的运算。在关系中选择满足给定条件的元组。
在数据库中用于条件判定(WHERE)

σF(R)= {t | t ∈ R F(t)=true}
其中,σ 为选择运算的符号

F的组成规则:由基本逻辑表达式 aΘb 组成
a,b可为属性名或常量,但不能同时为常量
Θ为比较运算符,< 、>、=和!=

小结:
σ、Θ和 ∪、∩、-的使用可以基本表达select from where 查询操作啦

关系代数——乘积、连接运算

  • 前提准备:

    广义笛卡尔积是连接运算的基础运算。故需要了解前面的广义笛卡尔积的概念。

  • 知识点

    回顾:广义笛卡尔积(Cartesian Prosuct)
    在这里插入图片描述
    Di为有限集,其基数为mi,则D1D2…*Dn 的基数M为:
    在这里插入图片描述

乘积运算(广义笛卡尔积)——当原子操作数不为相容关系时,先进行乘积运算,以乘积运算为基础,再进行连接运算
在这里插入图片描述

连接运算

θ-连接(join) 运算从两个关系的笛卡尔积中选取属性间满足一定条件的元组,记为

R⋈AθBS ≡σR.AθS.B(R×S)

其中,A和B分别是R和S上属性个数相等且可比的属性组
θ 为比较运算符:<,>,=,<=,>=和!=

等值连接
当θ为"="时,θ-连接(join) 运算称为等值连接

R⋈A=BS ≡σR.A=S.B(R×S)

自然连接
加入Π运算可删去重复属性
R⋈S ≡Πz1,z2,zn(R⋈A=AS)
其中,A和B时相同属性组
z1,z2,zn是去掉R或S中重复属性A后的剩余属性


外连接(Outer Join)
在自然连接的结果上,保留因在公共属性上 没有相同属性值而被舍弃的元组(悬浮元组)
并且在这些元组心增加的属性上赋空值,这种连接为外连接
有三种形式的外连接:

  • 左外连接——保留符左边关系中的悬浮元组
  • 右外连接——保留符右边关系中的悬浮元组
  • 完全外连接——保留符左右边关系中的悬浮元组

重命名运算

  • 实现自身连接
  • 解决具有系统属性的两个关系的笛卡尔乘积或连接操作的属性命名
  • 给一个代数表达式的结果命名为一个新关系
    在这里插入图片描述

关系代数——除运算R ÷ S

通常需要对参与除运算的关系进行预处理,使被除关系R的属性包含除数关系 S的所有属性,
商中属性是代表查询结构信息的最小属性组

可用来实现查询一个关系的属性值集合是否包含另一个关系的代数操作

R ÷ S 的属性由R中哪些不出现在S中的属性组X所组成,即
T(x)=R ÷ S, T(X)∈Πx( R )

给定关系R(X,Y)和S(Y),令T(X)=R÷S,若∈Πx(R),R中所有在属性组X上的分量等于
X的元组在属性组Y上的分类的集合,
称为X在R中的像集,用Yx表示。

Yx={t[Y] | t ∈ R ∧ t[X] = x}

给定关系R(X,Y)和S(Y),令T(X)=R÷S,若x∈Πx(R),且S∈Yx,则x∈T(X)

R÷S={x | x∈Πx(R)∧ S∈Yx}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值