美文网首页
关系代数

关系代数

作者: lesliefang | 来源:发表于2020-02-21 13:28 被阅读0次

Database System Concepts 7th 第2章学习

关系型数据库以集合论,谓词逻辑为基础
SQL 以关系代数(Relational Algebra)为基础

一个关系(relation)对应数据库的一张表(table)
一个关系是多个元组(tuple)的集合,一个元组对应数据库一个表的一行
一个元组由一系列属性(attribute)组成,一个属性对应数据库一个表的一列

模式(schema)是关系的逻辑表示
department (id, dept_name, building, budget)

数据实现并不严格遵守关系理论,因为关系是集合,集合中不能有重复元素。而数据库中的一个表可以有重复的行。

superkey(超键):能唯一标识一个关系中元组的一个或多个属性
candidate keys(候选键):不能再分的 superkey
primary key (主键):候选键可能有一个或多个,选出来一个作为主键

对于 department, 假设 id 不重复,dept_name 不重复,id 是 超键, dept_name 也是 超键, (id, dept_name) 合在一起也是 超键。
但只有 id, dept name 是候选键。 我们可以选择其中一个作为主键。

Relational Algebra(关系代数)

关系代数描述关系的运算,对关系执行操作可以生成新的关系。

Select :
select1.png

选择符号是希腊字母读作 sigma
选择操作相当于SQL中的 where。从关系 instructor 中选出 dept_name 等于物理系的元组。

Project:(投影)
project.png

操作符读作(派)
只返回部分属性,相当于SQL中的 select

Composition.png

操作可以组合,先筛选再投影

Cartesian-Product (笛卡尔积)
dikaer.png

用✖️表示, r1 中的每一行分别对应 r2 中的每一行。如果 r1 有8个元组, r2 有9个元组。做笛卡尔积后得到 72 个元组。

Join
join.png

join 等价于两个关系先做笛卡尔积然后再根据条件筛选

集合操作(并、交、差)

union(∪)并集


union.png

intersection(∩)交集
set-difference(-) 差集
差集求的是在第一个集合里面且不在第二集合里面的元组

Assignment (<-)中间结果可赋值到一个变量
variable.png

重命名

rename.png

将关系 E 重命名为 x。
应为 join 等操作等会出现重复字段, 一个表也可以和自身 join。为了区分左右两边的关系或重名的字段需要重新起一个名字。 SQL 中用 as 实现。

一个SQL 查询语句会先解析成关系代数表达式,而后用关系代数运算,最后才生成具体的查询步骤。

相关文章

  • 第四讲 关系模型之关系代数

    关系模型之关系代数 书写关系代数的基本思维训练: 一个集合, 施加一个集合, 依次施加关系代数操作, 进而得到所需...

  • 关系数据库--关系代数

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

  • 数据库Mooc笔记(4)关系代数

    什么是关系代数 关系代数运算的特点 (1)基于集合,提供了一系列的关系代数操作:并、差、笛卡尔积(广义积)、选择、...

  • 掌握关系代数运算

    关系代数关系代数是以关系为运算对象的一组高级运算的集合。关系代数中的操作可以分为两类:传统的集合操作,并、差、交、...

  • Calcite optimizer

    代数 关系代数是方解石的核心。每个查询都表示为关系运算符树。您可以从SQL转换为关系代数,也可以直接构建树。 规划...

  • 关系代数

    1.概念: ​ 关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。 ​ 按运算符的不同分为传统的集...

  • 关系代数

    Database System Concepts 7th 第2章学习 关系型数据库以集合论,谓词逻辑为基础SQL...

  • 关系代数

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

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

  • 51 SQL 复习 语句关系代数(二)

    SELECT 查询指定多个列 关系代数 操作 关系代数与SQL 练习 WHERE 去重 查询结果排序 BETWEE...

网友评论

      本文标题:关系代数

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