博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《数据库系统概念》9-附加关系运算
阅读量:5983 次
发布时间:2019-06-20

本文共 1650 字,大约阅读时间需要 5 分钟。

hot3.png

​除了基本的关系操作,还有一些附加(Additional)的操作,因为如果只用基本运算,有些表达式会比较繁琐,而附加操作是对某些基本表达的简化。

a)交集(Set-Intersection Operation)
交集运算符为∩,用于找出几个集合共有的数据,比如在2009秋季和2010春季都开课的课程
(semester = “Fall” ∧ year=2009 (section)
(semester = “Spring” ∧ year=2010 (section))
交集的等价表达式为:r ∩ s = r - (r - s)
b)Natural-Join Operation
在笛卡儿积的基础上,选择共有字段相等的元祖,并去除了重复的元祖。返回结果集中字段的显示顺序为:共有字段->左侧关系的字段->右侧关系的字段
查询所有教师的名称及其授课信息的ID表达式为:
Πname, course_id (instructor⋈teaches)
连接的等价表达式为:
r⋈s = R ∪ S (r.A1 = s.A1 ∧r.A2 = s.A2 ∧ ... ∧r.An = s.An (R × S))
如果R和S没有值相同的属性,则r⋈s = r × s.
如果要查询所有物理系教师名称及授课课程的名称则为:
Πname,title (dept_name = “Comp. Sci.” (instructor⋈teaches⋈course))
不管是(instructor⋈teaches)⋈course还是instructor⋈(teaches⋈course),运算结果不受连接的顺序的影响
c)赋值运算Assignment Operation
符号为←,与其他程序语言的赋值运算一样,←可以将一段表达式的值赋值给某个临时变量,避免嵌套太多难以理解。比如r⋈s的等价表达式也可以写为:
temp1←R × S
temps←σr.A1 = s.A1 ∧r.A2 = s.A2 ∧ ... ∧r.An = s.An (temp1)
result=ΠR ∪ S(temp2)
←可以将复杂的逻辑简化为过程式的代码,而且←必须赋值给临时变量。
d)外连接Outer join
外连接是连接运算的扩展,可以用来处理缺失的信息,既自然连接中丢失的未匹配行;其中left outer join ⟕、right outer join ⟖、full outer join ⟗ 分别保留左侧、右侧、全部的未匹配行。
left outer join 的等价表达式为:
(r⋈s) ∪(r-ΠR(r⋈s))×{(null,...null)}
其中{(null,...null)}的模式是S-R后的schema
e)扩展运算
广义投影(Generalized Projection)
广义投影允许在投影运算的同时进行算术、字符串处理的操作,比如:
Πid,name,salary*13(instructor)
聚集(aggregation)
聚集包括min、max、average、count等操作,聚集运算的输入为值的集合,输出为单一的值。教师的平均薪水可以表示为:
Gsum(salary)(instructor)。正确的G应该是calligraphic字体。
统计2010年春季的授课教师数量时,需要去重:
Gcount-distinct(ID)(σsemester=”spring”∧year=2010(teaches))
统计各部门的薪水平均值时,需要按部门分组,写为:
dept_name G averge(salary)(instructor)
学习资料:Database System Concepts, by Abraham Silberschatz, Henry F.Korth, S.Sudarshan
 

转载于:https://my.oschina.net/u/2327858/blog/1584785

你可能感兴趣的文章
nginx 负载均衡
查看>>
Entity Framework Core 修改映射主键名称
查看>>
SQL 经典面试题
查看>>
为知笔记发布博客地址
查看>>
java - Math、system、BigDecimal、Date、SimpleDateFormat、Calendar类概述和方法使用
查看>>
C# XML读写示例
查看>>
[leetcode-107-Binary Tree Level Order Traversal II]
查看>>
iptables
查看>>
MySQL数据库分表分区(一)(转)
查看>>
DEV CheckComboboxEdit、CheckedListBoxControl(转)
查看>>
MySQL跳过密码登录
查看>>
PLI 到 COBOL 的转换-数据类型 【不搞Mainframe的可能看不懂,冷门的语言】
查看>>
Tomcat学习总结(4)——基于Tomcat7、Java、WebSocket的服务器推送聊天室
查看>>
js_正则
查看>>
一些有用的技术文章
查看>>
Linux文件结构
查看>>
golang tar gzip 压缩,解压(含目录文件)
查看>>
Mike的农场 BZOJ4177
查看>>
【JS】闭包的理解
查看>>
SVN使用教程总结
查看>>