数据库原理(三)——关系代数

举报
ArimaMisaki 发表于 2022/08/06 22:01:13 2022/08/06
【摘要】 数据库原理——关系代数

3 关系代数

3.1 基本概念

关系代数语言:一种过程化查询语言,简称==关系代数或关系操作==;它包括一个运算的集合,这些运算以一个或两个关系为输入,产生一个新的关系作为结果。

数据库系统功能完备性:一个数据库产品或数据库系统包含==五个基本操作==。

基本操作

操作名 英文 符号
选择操作 select operation σ σ
投影操作 project operation π
笛卡尔乘积 Cross product ×
集合差操作 Set - diffrent
集合并操作 union

  • 对于其他的操作,都可以由五个基本操作导出
  • 选择和投影为==一元运算==,因为它们只对一个关系进行操作;而另外三个对两个关系进行运算,故为==二元运算==。

3.2 五个基本操作

基本操作概念

选择操作:选择操作就是加限制条件选元组。等价于SQL中的where条件。

投影操作:投影就是选取关系中的某些列。等价于SQL中的select。

笛卡尔乘积:两张表所有元组两两匹配的所有结果。

集合并操作:集合中的并。即把数据并在一起,如A表的Sno的数据和B表的Sno数据合并。

集合差操作:集合中的差。即A表数据减去A表中含有与B表数据系统的部分所剩余的结果。

  • 投影后的表由于有可能不包含候选键,这就会导致有些元组可能是重复的,这时候系统会自动消除重复元组,所得关系(表)的元组数小于原关系的元组数。如果投影后的表包含候选键,那么元组数和投影前一样。
  • 在实际的数据库产品中,数据库投影后他是不会自动去重的,因为数据库他不能保证用户对重复的数据是否有应用价值,所以,除非你要求,不然他不会自动去重。
  • 如果两张表需要进行集合并操作,那么其必须满足==并兼容==,否则只能进行外并操作。

并兼容

参与并交差的两个关系的元组必须限制为同类型,也就是相同目,对应的属性的域也需相同。下面的图则不满足并兼容。

image-20220708101239312


3.3其他操作

连接操作

  • 连接实际上就是加了条件的笛卡尔乘积。其符号为 \bowtie
  • 连接符号 \bowtie 代表的都是==自然连接==,即笛卡尔乘积加上默认条件外键相等。

更名操作

  • ==关系代数表达式==没有可引用名字,为此,更名操作应运而生。
  • 更名用希腊字母rho( ρ \rho )来表示,对于你指定的关系代数表示式E,表示式 ρ x ( E ) \rho_x(E) 返回表示式E的结果,并把名字x赋给了它。
  • 如果想要返回结果并且为各属性更名,则可以将更名操作表示为 ρ x ( A 1 , A 2 , . . . ) ( E ) \rho_{x(A1,A2,...)}(E)

  • ==由关系代数运算经有限次复合而成的式子称为关系代数表达式==。这种表达式的运算结果仍然是一个关系。如 π S n o ( σ j n o = j 1 ( S P J ) ) π_{Sno}(σ_{jno = j1}(SPJ)) 就是一条关系代数表达式。
  • 赋值操作和更名操作功能有所不同,赋值操作只能将关系代数表达式的结果返回到一个变量中,而更名操作可以将结果返回并且修改结果中的属性名。

集合交操作

  • 集合中的交。即找出A表和B表数据中公共的部分并返回。
  • 集合交用∩所表示。
  • 集合交可以由基本操作r-(r-s)来导出。

外连接与内连接

内连接:A表和B表处于平等关系,即普通连接。

外连接:A表和B表处于主从关系,即主表的元组即使匹配不上从表,也会出现在结果中,匹配不上的地方用NULL值填充。通常外连接分为左外连和右外连,左外连左表为主表,右外连同理。


外并操作

如果在不满足并兼容的条件下还要做并操作,则可以使用外并操作强行整合两表。返回的结果是两表属性的总和,其中一方如果没有另外一方的属性则会被填上NULL。


赋值操作

  • 赋值操作就是给关系代数表达式一个新名字。
  • 使用符号←表示。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。