美文网首页
关系代数与数据库

关系代数与数据库

作者: 厨子 | 来源:发表于2020-10-16 16:21 被阅读0次

关系代数是以关系为运算的一组高级运算的集合。由于定义为属性个数 相同的元组的集合,因此集合代数的操作就可以引入到关系代数中。关系代数也可以看做是一种抽象的查询语言,是对关系的运算来表达查询的。任何一种运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。所以运算对象、运算符、运算结果是运算的三大要素。

关系代数的运算对象是关系,运算结果亦为关系。关系代数用到的运算符包括四类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符。如下表:

集合运算符 含义
U
比较运算符 含义
> 大于
大于等于
< 小于
小于等于
= 等于
不等于
关系运算符 含义
X 广义笛卡尔积
σ 选择
π 投影
链接
÷
逻辑运算符 含义

关系代数可分为两类:传统的集合操作:并、差、交、笛卡尔积(乘)、笛卡尔积的逆运算(除法)和扩充的关系操作:对关系进行垂直分割(投影)、水平分割(选择)、关系的结合(连接、自然连接)。

一、五个基本操作:

1.并 (Union):关系R和S具有相同的关系模式,R和S的并是由属性R和S的元组构成的集合。 形式定义如下:

  R∪S={t|t∈R ∨ t∈S} , t 是元组变量,R和S的元素相同      

其结果由R和S的元素组成

2.差 (Difference): 关系R和S具有相同的关系模式,R和S的差由属于R但不属于S的元组构成的集合。 形式定义如下:

  R-S={t|t∈R ∧ t¢S)  t 是元组变量,R和S的元素相同      

其结果由属于R不属于S的所有元组构成

3.笛卡尔积(Cartesian Product) :广义笛卡尔积是一个(r+s)列的元组的集合。形式定义如下:

4.投影(Projection):对一个关系进行垂直分割,消去某些列,并重新安排列的顺序。记作:

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

其中A为R中的属性列。

5.选择(Selection):根据某些条件对关系做水平分割,即选取符合条件的元组。

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

σ为选择元算符,F表示选择条件,它是一个逻辑表达式,取逻辑值‘真’或‘假’。

举例说明:下面为关系R和关系S 两张表:

(1) 并运算

并运算
(2)差运算
差运算
(3)笛卡尔积运算
笛卡尔积运算

(4)投影

投影

(5)选择

选择

二、四个组合操作

1.交(Intersection):由属于R和S的元组构成的集合。记作:

  R∩S={t|t∈R∧t∈S}      

由于R∩S=R(R-S),或R∩S=S-S(S-R) 得到的,因此交操作不是一个独立的操作。

2.连接(Join):连接也称为θ连接,从 R 与 S的笛卡尔积中选取属性间满足一定条件的元组,可由基本的关系运算笛卡尔积和选取运算导出,表示为:

R⋈XθYS=σXθY(R×S)

XθY 为链接的条件,θ 是比较运算符,XY 分别为 R 和 S 上度数相等且可比的属性组

其中A和B分别为R和S上度数相等且可比的属性组。θ是比较运算符。连接运算从R和S的广义笛卡尔积R×S中选取 (R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系θ的元组。

举例说明:下图为关系R和S两张表

求关系:R⋈2=1S.

求解步骤是

  1. 先计算两个表的 笛卡尔积: R×S
  2. 选取表中 R的第2列(R.2)和 S的第1列(S.1)值相等的数据
    最终结果如下图
连接

连接操作中比较重要且常用的连接是等值连接和自然连接。

  • 等值连接:θ为“=”时的连接运算称为等值运算,它是从R和S中选取R中的A属性组上的元组等于S中B属性组上的元组。
  • 自然连接(Natural join):自然连接用R连接R ⋈ S表示,是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是 相同的属性组,并且在结果集中将 重复的属性列 去掉

例如:设有关系 R、S 如图所示,求 R⋈S

关系RS

先求出笛卡尔积 R×S,找出比较分量(有相同属性组),即: R.A/S.A 与 R.C/S.C

求出笛卡尔积

取等值链接 R.A=S.A 且 R.C=S.C

找出相同属性的比较分量

结果集中去掉重复属性列,注意无论去掉 R.A 或者 S.A 效果都一样,因为他们的值相等,结果集中只会有属性 A、B、C、D

结果集中找出重复属性列

最终得出结果

RS自然链接结果

3.除法 (Division):设关系R和S的元数分别为r和s(设r>s>0),那么R÷S是一个(r-s)元的元组集合。

例如:有三张表,分别是R、COURSE1和COURSE2


(1)R÷COURSE1 表示 至少选修COURSE1课程的学生名单

(2)R÷COURSE2 表示至少选修COURSE2课程的学生名单

参考:
关系代数的基本运算
关系代数运算so easy

相关文章

  • PostgreSQL 源码解读(16)- 查询语句#1(基础:关

    本文简单介绍了数据库系统实现中的数学基础-关系代数,包括关系代数的基本概念以及关系代数的运算如集合运算/投影/选择...

  • 关系代数与数据库

    关系代数是以关系为运算的一组高级运算的集合。由于定义为属性个数 相同的元组的集合,因此集合代数的操作就可以引入到关...

  • 数据库 - 实现项目中的数据持久化

    数据库的类别: 关系型数据库, 非关系型数据库 关系型数据库 - MySQL1.特点: 集合论和关系代数 ,数据持...

  • 数据库(关系模型与关系代数)

    1. 关系 关系数据库是表的集合,即关系的集合。表中一行代表的是若干值之间的关联,即表的一行是由有关联的若干值构成...

  • day16 - MySQL数据库

    数据库 - 实现项目中的数据持久化 数据库的类别: 关系型数据库 - MySQL特点: 理论基础:集合论和关系代数...

  • 数据库和SQL语句

    数据库分类: 关系型数据库 关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库...

  • [*] 数据库核心概念

    1. 介绍 数据库中的数据 2. 关系代数 3. SQL Structured Query Language 关系...

  • 数据库小记

    sqlite: 关系型数据库关系型数据库: 建立在关系模型基础上的数据库, 借助于集合代数等数学概念和方法来处理数...

  • hibernate 一对一,一对多,多对多关联关系使用

    关系型数据库 关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实...

  • sql与代数关系运算之间的关系

    # sql与代数关系运算之间的关系 关系实际上是“组域”上的笛卡尔积的一个子集,所以sql对关系数据库上的操作实际...

网友评论

      本文标题:关系代数与数据库

      本文链接:https://www.haomeiwen.com/subject/keywpktx.html