数据库 关系代数

一、概念

==============================================================

  • 关系模型源于数学,关系是由元组构成的集合,可以通过关系的运算来表达查询要求

  • 关系代数是关系操作语言的一种传统的表示方式,它是一种抽象的查询语言

  • 关系代数的运算可分为两大类:

  • 传统的集合运算:

  • 广义笛卡尔积

在这里插入图片描述

  • 专门的关系运算:

  • 选择

  • 投影

  • 连接

在这里插入图片描述

二、传统的集合运算

===================================================================

1、符号


1)R,t ∈ R,t[Ai]

设关系模式为R(A1,A2,…,An)

  • R是关系模式 R(A1,A2,…,An) 的一个关系

  • t ∈ R:表示 t 是 R 的一个元组

  • t[Ai]:表示元组 t 中相应于属性 Ai 的一个分量

2)A,t[A], A ‾ \overline{A} A​

  • 若 A = {Ai1,Ai2,…,Aik},其中 Ai1,Ai2,…,Aik 是 A1,A2,…,An 中的一部分,则 A 称为属性列或属性组

  • t[A] = (t[Ai1],t[Ai2],…,t[Aik]) 表示元组 t 在属性列 A 上诸分量的集合

  • A ‾ \overline{A} A​ 则表示 {A1,A2,…,An} 中去掉 {Ai1,Ai2,…,Aik} 后剩余的属性组

3)tr︵ts

设 R 为 n 元关系,S 为 m 元关系

  • tr ∈ R,ts ∈ S,tr︵ts 称为元组的连接

  • tr︵ts 是一个 n + m 列的元组。前 n 个分量为 R 中的一个 n 元组,后 m 个分量为 S 中的一个 m 元组

4)象集

  • 给定一个关系 R(X,Y),X 和 Y 为属性组

  • 当 t[X] = x 时,x 在 R 中的象集(Images Set)为:Yx = { t[Y] | t ∈ R,t[X] = x}

  • 它表示 R 中的属性组 X 上值为 x 的诸元组,在 Y 上分量的集合

在这里插入图片描述

2、∪ 并(Union)


合并,去重

  • R 和 S

  • 具有相同的元 n (即两个关系都有 n 个属性)

  • 相应的属性取自同一个域

  • R ∪ S

  • 仍为 n 元关系,由属于 R 或属于 S 的元组组成:R ∪ S = { t | t ∈ R v t ∈ S}

  • v :表示或

在这里插入图片描述

3、- 差(Difference)


减掉相同的

  • R 和 S

  • 具有相同的元 n

  • 相应的属性取自同一个域

  • R - S

  • 仍为 n 元关系,由属于 R 而不属于 S 的所有元组组成

在这里插入图片描述

4、∩ 交(Intersection)


只取相同的

  • R 和 S

  • 具有相同的元 n

  • 相应的属性取自同一个域

  • R ∩ S

  • 仍为 n 元关系,由既属于 R 又属于 S 的元组组成

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

R ∩ S = R - ( R - S )

  • ∧:表示与

在这里插入图片描述

5、x 笛卡尔积(Cartesian Product)


相乘

  • 严格地讲应该是广义的笛卡尔积

  • R:n 目关系,K1 个元组,S:m 目关系,K2 个元组

  • R X S

  • 列:(n + m) 列元组的集合

  • 元组的前 n 列是关系 R 的一个元组

  • 后 m 列是关系 S 的一个元组

  • 行:K1 X K2 个元组

  • R x S = { tr︵ts | tr ∈ R ∧ ts ∈ S}

在这里插入图片描述

6、总结


| 传统运算 | 表示 | 含义 |

| — | — | — |

| 并 ∪ | R ∪ S = { t | t ∈ R v t ∈ S}

v (或),t 属于R,或者属于S | 合并,去重 |

| 差 - | R - S 从R中减去S,保留R中剩余的 | 去重 |

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

v (与),t 属于R,也属于S | 交集 |

| 积 x | R x S = { tr︵ts | tr ∈ R ∧ ts ∈ S}

tr 属于 R,并且 ts 属于 S | 相乘 |

三、专门的关系运算

===================================================================

实例:学生课程数据库

  • 学生表

在这里插入图片描述

  • 课程表

在这里插入图片描述

  • 成绩表

在这里插入图片描述

1、σ 选择(Selection)


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、Π 投影(Projection)


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3、 ⋈ \bowtie ⋈ 连接(Join)


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4、÷ 除(Division)


在这里插入图片描述

参考:https://blog.csdn.net/Imomoco/article/details/102727039

四、键、属性

================================================================

在这里插入图片描述

  • 候选键=候选码:能够唯一标识一条记录的最小属性集

  • 主键=主码某个能够唯一标识一条记录的最小属性集(是从候选码里人为挑选的一条)

  • 外键(foreign key):子数据表中出现的父数据表的主键,称为子数据表的外键

  • 主属性 包含在任一候选码中的属性称主属性。简单来说,主属性是候选码所有属性的并集

  • 非主属性 不包含在候选码中的属性称为非主属性。 非主属性是相对于主属性来定义的

找候选键

  • 把函数依赖集转化成有向图,入度为0的点一定是候选键(候选键可以有多个)
  • 如果没有入度为0的点,就找可以走完全图的点,该点就是候选键
    在这里插入图片描述

最后

小编这些年深知大多数初中级工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此我收集整理了一份《2024年Java全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你需要这些资料,⬅专栏获取
描述](https://i-blog.csdnimg.cn/blog_migrate/2d8757ba6fcbe31c0f7a935503ab25e6.png#pic_center)

最后

小编这些年深知大多数初中级工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此我收集整理了一份《2024年Java全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-8Vg8oZ7y-1719689715499)]

[外链图片转存中…(img-5qJAxwC4-1719689715501)]

[外链图片转存中…(img-23K2Xgbb-1719689715501)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你需要这些资料,⬅专栏获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值