文章目录

  • 五中基本的关系代数操作
    • 并(Union)
    • 差(Difference)
    • 广义笛卡尔积(Extended Cartesian Product)
    • 投影(Projection)
    • 选择(Selection)
  • 连接
    • 等值连接
    • 自然连接
  • 实战练习

关系代数是以关系为运算对象的一组高级运算的集合。由于关系定义为属性个数相同的元组的集合,因此集合代数的操作就可以引入到关系代数中。关系代数中的操作可以分为两类:传统的关系操作,并、差、交、笛卡尔积(乘)、笛卡尔积的逆运算(除);扩充的关系操作,对关系进行垂直分割(投影)、水平分割(选择)、关系的结合(连接、自然连接)等。

五中基本的关系代数操作

并(Union)

关系 R 与 S 具有相同的关系模式,即 R 与 S 的元数相同(结构相同),R 与 S 的并是属于 R 或者属于 S 的元组构成的集合,记作 R ∪ S,定义如下:

R∪S={t|t∈R∨t∈S}R∪S={t|t∈R∨t∈S}

差(Difference)

关系 R 与 S 具有相同的关系模式,关系 R 与 S 的差是属于 R 但不属于 S 的元组构成的集合,记作 R − S,定义如下:

R−S={t|t∈R∨t∉S}R−S={t|t∈R∨t∉S}

广义笛卡尔积(Extended Cartesian Product)

两个无数分别为 n 目和 m 目的关系 R 和 S 的 笛卡尔积是一个 (n+m) 列的元组的集合。组的前 n 列是关系 R 的一个元组,后 m 列是关系 S 的一个元组,记作 R × S,定义如下:

投影(Projection)

投影运算是从关系的垂直方向进行运算,在关系 R 中选出若干属性列 A 组成新的关系,记作 πA®πA®,其形式如下:

πA®={t[A]|t∈R}πA®={t[A]|t∈R}

选择(Selection)

选择运算是从关系的水平方向进行运算,是从关系 R 中选择满足给定条件的元组,记作 σF®σF®,其形式如下:

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

举个栗子,通过两个关系分析下:

(a)R∪S 并 (b)R-S 差 (c)R×S 笛卡尔积 (d)πC,A® 投影 (e)σB>’4’ ® 选择

说明:笛卡尔积,若R有m个元组,S有n个元组,则R×S有m×n个元组。投影,C和A为属性名,说明要选择的列。选择B>‘4’,即选择语句的条件,对关系做水平分割,选择符合条件的元组。

连接

连接(join)就是把两个表中的行按照给定的条件进行拼接而达成新表。

等值连接

通俗讲就是两个表的某些列值相等作为条件连接,称为等值连接。记为: R⋈X=YS

举个栗子,现在有A表和B表,连接条件为T1=T3。

自然连接

数据库中最常用的是自然连接进行自然连接运算要求两个表有共同的属性(列),自然连接运算的结果表是在参与操作两个表的共同属性上进行等值连接后,再去除重复的属性后获得的新表。举个栗子,现在有A表和B表进行自然连接。

实战练习

在关系代数运算中,把由五个基本操作经过有限次复合的式子称为关系代数表达式。这种表达式的运算结果仍是一个关系。我们可以用关系代数表达式表示各种数据查询操作。

例1:

有如下三个关系:
S(Sno,Sname,Ssex,Sage,Sdept)
学生关系(学号,姓名,性别,年龄,所在学院)
C(Cno,Cname,Cdept,Tname)
课程关系(课程号,课程名,课程开课学院,代课教师)
SC(Sno,Cno,Grade)
选修关系(学号,课程号,成绩)查询至少选修了课程号为“C5”和“C9”的学生学号,正确的关系代数为_____?

答案:

此题涉及三个表,先进行选择,再进行投影,之后∩。


例2:

S(Sno,Sname,Ssex,Sage,Sdept)
学生关系(学号,姓名,性别,年龄,所在学院)
C(Cno,Cname,Cdept,Tname)
课程关系(课程号,课程名,课程开课学院,代课教师)
SC(Sno,Cno,Grade)
选修关系(学号,课程号,成绩)查询学生“李力”所学课程的课程名与任课教师名,正确的关系代数为________?

答案:

此题涉及三个表,先连接,再选择,而后投影。

希望对您有所帮助!

详解【数据库】关系代数基本运算相关推荐

  1. ORACLE的索引和约束详解数据库

    ORACLE的索引和约束详解数据库 Oracle的约束 * 如果某个约束只作用于单独的字段,即可以在字段级定义约束,也可以在表级定义约束,但如果某个约束作用于多个字段, 必须在表级定义约束 * 在定义 ...

  2. 10年后端开发程序员详解数据库缓存方案到底有多少名堂。丨Linux服务器开发丨后端开发丨中间件丨web服务器丨数据库缓存

    数据库缓存方案到底有多少花样,一节课带你缕清 1. 读写分离方案 2. 若干个缓存解决方案 3. 缓存故障如何解决 视频讲解如下,点击观看: 10年后端开发程序员详解数据库缓存方案到底有多少名堂.丨L ...

  3. 详解数据库的锁机制及原理

    详解数据库的锁机制及原理 1.数据库锁的分类 2.行锁 共享锁(读锁S锁) 排他锁(写锁X锁) 更新锁 3.意向锁(IX/IS锁) 4.锁机制解释数据库隔离级别 5.元数据锁(MDL锁) 6.间隙锁 ...

  4. mysql教程详解之多表联合查询_详解数据库多表连接查询的实现方法

    详解数据库多表连接查询的实现方法 通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 在关系数据库管理系统中,表建立时各数据之间的关系不必 ...

  5. 详解数据库引擎与SQL语句增删改查(非常详细,带例)

    数据库系统(DBMS): 专门负责数据管理的工具.增加数据.创建索引.建立索引之间的关联关系.更新索引...... 连接器:PHP要访问MySQL,可以通过API访问,也可以通过PHP的驱动,而那个驱 ...

  6. mysql数据库的函数_详解数据库_MySQL: mysql函数

    一.内置函数 1.数学函数 rand() round(num) ceil(num) floor(num) 随机 四舍五入 向上取整 向下取整 2.字符串函数 length() 字节长度 char_le ...

  7. mysql存储函数if,详解数据库_MySQL: mysql函数

    一.内置函数 1.数学函数 rand() round(num) ceil(num) floor(num) 随机 四舍五入 向上取整 向下取整 2.字符串函数 length() 字节长度 char_le ...

  8. 大于小于优化_以MySQL为例,详解数据库索引原理及深度优化

    本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接. 一.摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引 ...

  9. 详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名及手工脚本创建oracle数据库...

    数据库名.实例名.数据库域名.全局数据库名.服务名 , 这是几个令很多初学者容易混淆的概念.相信很多初学者都与我一样被标题上这些个概念搞得一头雾水.我们现在就来把它们弄个明白. 一.数据库名 什么是数 ...

  10. 详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名

    数据库名.实例名.数据库域名.全局数据库名.服务名, 这是几个令很多初学者容易混淆的概念.相信很多初学者都与我一样被标题上这些个概念搞得一头雾水.我们现在就来把它们弄个明白. 一.数据库名 什么是数据 ...

最新文章

  1. python transformer category_Python 生成VOC格式的标签实例
  2. opencv双目测距资料整理
  3. Java中JMX管理器的作用,项目中有什么具体使用?
  4. 递归算法学习系列之寻找第K大
  5. 钉钉小程序------子组件监测父组件的数据更新
  6. 2018年工业机器人销量排位_长安-2018年11月汽车销量 细分销量
  7. Python+OpenCV:特征匹配(Feature Matching)
  8. fit文件用python画瀑布图
  9. 使用Lucifer实现自动化渗透测试任务
  10. 递归算法经典实例python-Python实现经典递归算法
  11. 枪毙ctfmon.exe 恢复你的默认输入法
  12. c语言代码自动整理,C语言代码自动整理工具
  13. 1336. 每次访问的交易次数
  14. 七参数对不同坐标系统的转换
  15. C语言基础知识入门和C语言入门基础知识大全
  16. 百万excel导入mysql_百万级xlsx表格导入数据库的实现方案
  17. 简单理解什么是虚拟存储器
  18. ESLint:可组装的JavaScript和JSX检查工具
  19. Qt模仿QQ聊天窗口合并功能
  20. 点击输入框,标题上移

热门文章

  1. matlab求轮廓系数,K-mean算法分析 - osc_b2jf5efr的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. 基于rk3128、A20的安卓ktv主板
  3. 集成easypoi实现excel图片导出
  4. 判定覆盖白盒测试java_白盒测试系列(四)条件判定覆盖
  5. 白盒测试方法之判定覆盖测试/分支覆盖测试
  6. 自学Linux系统与python(一)——VM虚拟机安装python遇到的问题解决
  7. 让我们搞搞清楚重写toString()到底是个什么玩意?
  8. 干法读书心得:第一章 那些智慧迸发的瞬间 读后感
  9. long在c语言的作用,c语言中long代表什么意思
  10. ES6--》了解并应用迭代器与生成器