数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)(下)

简介: 数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)(下)

选择运算实际上是从关系R中选取使逻辑表达式F为真的元组,这是从行的角度进行的运算

例题1:查询信息系(IS系)的全体学生

例题2:查询年龄小于20岁的学生

2. 投影(基本运算)

关系R上的投影从R中选择出若干属性列组成新的关系。记作:

其中A为R中的属性列

投影操作是从列的角度进行的运算。

例题1:查询学生的姓名和所在系,即求 Student 关系上学生姓名和所在系两个属性上的投影。

如果选择多个属性,多个属性之间使用逗号进行分隔

投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组,因为取消了某些属性列之后,就可能出现重复行,应该取消这些完全相同的行。

例题2:查询学生关系Student中都有哪些系,即查询关系 Student 上所在系属性上的投影。

结果如图所示。Student关系原来有4个元组,而投影结果取消了重复的CS元组,因此只有三个元组。

3. 连接(非基本运算)

连接也称为 θ 连接。

连接从两个关系的笛卡儿积中选取属性间满足一定条件的元组。记作:

其中,A和B分别为R和S上列数相等且可比的属性组,θ 是比较运算符。

连接运算从R和S的笛卡儿积 R X S 中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系 θ 的元组。

连接运算中有两种最为重要也最为常用的连接,

  1. 等值连接
  2. 自然连接

θ 为“=” 的连接运算称为 等值连接 。它是从关系R与S的广义笛卡儿积中选取A、B属性值相等的那些元组,即等值连接为:

自然连接是一种特殊的等值连接。它要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉。即若R和S中具有相同的属性组B,U为R和S的全体属性的集合,则自然连接可记作:

一般的连接操作从行的角度进行运算,但自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。

例题:

在进行连接时,被舍弃的元组(即没有在结果中的元组)称为悬浮元组

如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(NULL),那么这种连接就叫做外连接,记作

注意符号两边有小突出

如果只保留左边关系R中的悬浮元组就叫做左外连接,记作

注意只有左边有小突出

如果只保留右边关系S中的悬浮元组就叫做右外连接,记作

注意只有右边有小突出

在图2.8中,图(a)是图2.7中的关系R和关系S的外连接,图(b)是左外连接,图©是右外连接。

图2.7中的关系R和关系S

图2.8

4. 除运算(非基本运算)

设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中

下面用象集来定义除法:

给定关系R(X,Y)和S(Y,Z),其中X、Y、Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集

R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:

元组在X上分量值 x 的象集Y 包含 S在Y上投影的集合。记作

其中Yx为 x 在R中的象集,x = tr[X]。

除操作是同时从行和列角度进行运算

例题1:

例题2:

使用除运算的场景:“查询…全部 / 所有的…”的问题。如,“查询选修了所有课程的学生的学号”。

注意,要与“查询全部 / 所有的…”进行区分,如,“查询所有信息系的学生”。

2.4.3 小结

本节介绍了8种关系代数运算,其中并、差、笛卡儿积、选择和投影这5种运算为基本的运算。其他三种运算,即交、连接和除,均可以用这5种基本运算来表达。

关系代数中,这些运算经有限次复合后形成的表达式称为关系代数表达式

相关实践学习
体验RDS通用云盘核心能力
本次实验任务是创建一个云数据库RDS MySQL(通用云盘),并通过云服务器ECS对RDS MySQL实例进行压测,体验IO加速和IO突发带来的性能提升;并通过DMS执行DDL,将数据归档到OSS,再结合云盘缩容,体验数据归档带来的成本优势。
相关文章
|
4月前
|
关系型数据库 MySQL 数据库
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
|
7月前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
401 6
|
4月前
|
SQL 关系型数据库 数据库
数据库空间之谜:彻底解决RDS for SQL Server的空间难题
【8月更文挑战第16天】在管理阿里云RDS for SQL Server时,合理排查与解决空间问题是确保数据库性能稳定的关键。常见问题包括数据文件增长、日志文件膨胀及索引碎片累积。利用SQL Server的动态管理视图(DMV)可有效监测文件使用情况、日志空间及索引碎片化程度。例如,使用`sp_spaceused`检查文件使用量,`sys.dm_db_log_space_usage`监控日志空间,`sys.dm_db_index_physical_stats`识别索引碎片。同时,合理的备份策略和文件组设置也有助于优化空间使用,确保数据库高效运行。
89 2
|
4月前
|
关系型数据库 数据库 数据安全/隐私保护
"告别繁琐!Python大神揭秘:如何一键定制阿里云RDS备份策略,让数据安全与效率并肩飞,轻松玩转云端数据库!"
【8月更文挑战第14天】在云计算时代,数据库安全至关重要。阿里云RDS提供自动备份,但标准策略难以适应所有场景。传统手动备份灵活性差、管理成本高且恢复效率低。本文对比手动备份,介绍使用Python自定义阿里云RDS备份策略的方法,实现动态调整备份频率、集中管理和智能决策,提升备份效率与数据安全性。示例代码演示如何创建自动备份任务。通过自动化与智能化备份管理,支持企业数字化转型。
106 2
|
4月前
|
存储 C# 关系型数据库
“云端融合:WPF应用无缝对接Azure与AWS——从Blob存储到RDS数据库,全面解析跨平台云服务集成的最佳实践”
【8月更文挑战第31天】本文探讨了如何将Windows Presentation Foundation(WPF)应用与Microsoft Azure和Amazon Web Services(AWS)两大主流云平台无缝集成。通过具体示例代码展示了如何利用Azure Blob Storage存储非结构化数据、Azure Cosmos DB进行分布式数据库操作;同时介绍了如何借助Amazon S3实现大规模数据存储及通过Amazon RDS简化数据库管理。这不仅提升了WPF应用的可扩展性和可用性,还降低了基础设施成本。
90 0
|
5月前
|
消息中间件 关系型数据库 数据库
实时计算 Flink版操作报错合集之在使用RDS数据库作为源端,遇到只能同步21个任务,是什么导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
7月前
|
SQL 关系型数据库 Serverless
阿里云关系型数据库RDS
阿里云关系型数据库RDS
263 49
|
6月前
|
消息中间件 关系型数据库 Serverless
函数计算产品使用问题之如何通过vpc来连接rds数据库
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
6月前
|
关系型数据库 数据管理 数据库
数据管理DMS产品使用合集之如何极速恢复RDS(关系型数据库服务)中的数据表
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
115 3
|
5月前
|
关系型数据库 数据库 RDS
利用DTS将自建mysql5.7版本数据库迁移至对应rds报错
利用DTS将自建mysql5.7版本数据库迁移至对应rds报错
152 0