翻译:关系操作

转载自:《database.system.concepts》(数据库系统概念)P48-52

所有的过程关系查询语言都提供一组操作,这些操作可以应用于单个关系或一对关系。这些操作具有良好的和期望的属性,它们的结果总是一个单一的关系。这个属性允许一个以模块化的方式组合其中的几个操作。具体来说,由于关系查询的结果本身就是一个关系,因此关系操作可以应用于查询的结果以及给定的关系集。

具体的关系操作根据语言的不同而有所不同,但是适合我们在本节中描述的通用框架。在第3章中,我们展示了用SQL表示操作的具体方式。


ID


名字


部门名称


12121


Wu


金融


22222


Einstein


物理


33456


Gold


物理


83821


Brandt


比较科学

图2.10的查询选择讲师的结果,工资超过$85000

另一个常见的操作是从一个关系中选择某些属性(列)。结果是只有那些选择的属性的新关系。例如,假设我们想要一个教师ID和薪水的列表,而不需要从图2.1的讲师关系中列出姓名和dept的名称值,那么结果如图2.211所示,具有两个属性ID和薪水。结果中的每个元组都来自于讲师关系的一个元组,但是只包含所显示的选定的属性。


ID


工资


10101 
12121 
15151 
22222 
32343 
33456 
45565 
58583 
76543 
76766 
83821 
98345


65000
 90000
 40000
 95000
 60000
  87000
 75000
 62000
 80000
 72000
 92000
 80000

图2.11查询从教师关系中选择属性ID和薪水的结果。

图2.12教师和部门关系的自然连接结果。


ID


薪水


12121

22222

33456

83821


90000

95000

87000

92000

图2.13的结果是,教师的属性ID和薪水超过了8.5万美元。

连接操作允许将两个关系的组合合并成一个元组,将两个关系中的一个元组合并成一个元组。有许多不同的方式来连接关系(我们将在第3章中看到)。图2.12显示了一个从教师和部门表中加入元组的例子,新的元组显示了关于每个教师和她正在工作的部门的信息。这一结果是通过将教师关系中的每个元组与教师系的部门关系中的元组相结合而形成的。

在图2.12中所示的连接的形式中,这被称为“自然连接”,来自于讲师关系的一个元组与部门关系中的一个元组匹配,如果它们的dept名称属性的值相同的话。所有这些匹配的元组都出现在连接结果中。一般来说,两个关系中的自然连接操作会匹配元组的值,这些元组的值在所有的属性名称中都是相同的。

笛卡尔产品操作结合了两个关系中的元组,但是不像连接操作,它的结果包含了两个关系中的所有元组,不管它们的属性值是否匹配。

因为关系是集合,所以我们可以对关系进行正常的集合操作。union操作执行两个“类似结构”的表(比如所有研究生的表和所有本科生的表)。例如,一个部门可以获得所有学生的集合。其他的集合操作,例如交叉和设置差异也可以执行。

如前所述,我们可以对查询结果执行操作。例如,如果我们想找到那些年薪超过8.5万美元的教师的ID和薪水,我们将在上面的例子中执行前两个操作。首先,我们从教师关系中选择这些元组,其中的工资值大于$8.5,然后,从这个结果中选择两个属性ID和薪水,结果显示在图2.13中所示的关系,包括ID和薪水。在本例中,我们可以以任意顺序执行操作,但在所有情况下都不是这样,我们将看到。

有时,查询的结果包含重复的元组。例如,如果我们从教师关系中选择dept name属性,那么就会出现一些重复的情况,包括“补偿”。科学。,它出现了三次。某些关系语言严格遵循一个集合的数学定义,并删除副本。另外,考虑到从大型结果关系中删除副本所需的大量处理,保留副本。在后一种情况下,关系并不是纯粹的数学意义上的关系。

当然,数据库中的数据必须随时间变化。可以通过插入新的元组、删除现有的元组或修改某些属性的值来更新关系。可以删除整个关系,并创建新的关系。

我们将在第3章到第5章中讨论使用SQL语言的关系查询和更新。

关系代数

关系代数定义一组关于关系的运算,与通常的代数运算,如加法、减法或乘法运算,这些运算都是对数字运算的。正如在数字上的代数运算将一个或多个数字作为输入,并返回一个数字作为输出,关系代数运算通常会将一到两个关系作为输入,然后返回一个关系作为输出。

在第六章中详细介绍了关系代数,但是我们概述了下面的一些操作。

从两个输入关系输出元组的结合。

时间: 2024-10-10 22:29:55

翻译:关系操作的相关文章

数据系统结构之关系操作(翻译)

Published by McGraw-Hill, a business unit of The McGraw-Hill Companies, Inc., 1221 Avenue of the Americas, New York, NY 10020. Copyright ? 2011 by The McGraw-Hill Companies, Inc. All rights reserved. Previous editions ? 2006, 2002, and 1999. 此文为自己的翻译

关系操作

关系操作 源自:数据库系统概论(第六版) 2.6关系操作 作者:Abraham Silberschatz  Henry F.Korth  S.Sudarshan 翻译:刘琼滨 谢雪妮 赖慧芳 许雅莉 译文: 所有过程关系查询语言都提供了一组操作,可以应用于单个关系或一对关系.这些操作具有所需的良好的属性,它们的结果始终是单个关系.此属性允许以模块方式组合多个操作.具体来说,由于关系查询的结果本身就是一个关系,因此关系操作可以应用于查询以及给定关系集. 具体的关系操作以不同的语言表达,但是符合我们

一对多关系 操作小总结

1.如果让一的一方维护关系,取决于的因素有1.在一的一方的映射文件中,set元素的inverse属性为default/false 2.在客户端的代码中,通过一的一方建立关系3.session.save/update方法是用来操作表的,和操作关系没有关系2.怎么样采用级联的方法通过保存一个对象从而保存关联对象1.如果session.save操作的对象是A,这个时候应该看A.hbm.xml,看set元素中cascade是否设置有级联保存2.在客户端通过A建立关联3.在客户端执行session.sav

EF Codefirst 多对多关系 操作中间表的 增删改查(CRUD)

前言 此文章只是为了给新手程序员,和经验不多的程序员,在学习ef和lambada表达式的过程中可能遇到的问题. 本次使用订单表和员工表建立多对多关系. 首先是订单表: public class Order { public int OrderId { get; set; } public string OrderTitle { get; set; } public string CustomerName { get; set; } public DateTime TransactionDate

【Android】ORM数据库框架之GreenDao【关联】关系操作

上一篇我们介绍了greendao的基本使用方法,如果您还不了解,建议先看下上篇文章再来看这篇会有更好的效果.今天我们来继续学习greendao的relation部分,即数据表的关联操作部分,greendao默认支持一对一,一对多的关系操作,多对多目前暂不支持,下面我们来一步步实现greendao的关联操作: 1.一对一关系 假设我们现在只允许一夫一妻制,好像现在就是啊,哈哈哈哈哈,那么一个男人可以娶一个老婆,一个老婆也只能有一个男人,下面我们分别创建man表和women表,来演示一对一的关联操作

hibernate中关系操作(inverse)和级联操作(cascade)详解

以用户.角色.用户文件为例讲解inverse(关系操作)和(cascade)操作 inverse 取值 true(不维护关系)或false(维护关系  默认为false) 该属性主要操作的是外键 cascade 取值null(默认值).save-update .all .delete 用户.角色是多对多的关系 用户的映射文件表示: <hibernate-mapping> <class name="com.xing.elec.domain.ElecUser" table

如何进行PDF文件翻译?PDF翻译怎么操作

如果在办公中需要你处理一份外来的PDF文件,而这份PDF文件的内容多是为英文的,实在让人头疼.处理的方法也只有借助到工具来进行翻译PDF文件,那如何进行PDF文件翻译呢?PDF翻译该怎么操作呢?下面不妨看下小编分享给大家的方法!希望能帮助到大家. 1.第一种方法我们可以借助到word文档,进入到word文档界面中打开所要进行翻译的PDF文件,如果出现以下面的话点击确定就可以了.2.由于word文档和PDF格式的差异性,可能需要等候一段时间.在页面中可以选择到"审阅"这个选项,然后鼠标点

Python 集合的各种操作 数学运算 关系操作 增删改查 生成式

# 集合是无序的 是可变的 不能重复 允许数学运算 分散存储 # 创建# collegel = {'哲学','经济学','法学','教育学'}## # {'教育学', '经济学', '法学', '哲学'}# print(collegel)## # set# collegel2 = set(['金融学','哲学','经济学','法学','教育学'])# print(collegel2)## # 使用set创建字符串集合# collegel3 = set('中华人民共和国')# # {'共', '华

电脑上中韩文翻译怎样操作?悄悄分享你俩种方法

随着信息技术水平的日益提高,我们在日常中除了会使用到手机,电脑也是离不开手,那么今天小编会分享到一个电脑上翻译的操作技巧给大家,操作分俩种,中英文在线翻译和使用翻译器进行翻译,感兴趣的小伙伴我们一起来看一下.操作方法一:中韩文在线翻译第一步.由于是在线翻译,我们首先需要通过浏览器搜索进入工具中,进入到这样一个在线操作工具以后,选择[文档文本翻译]下方的[中译韩]功能.第二步.在跳转到添加内容的页面中,我们首先在左侧文本框内添加中文内容,添加完成后,点击页面中的[翻译]按钮进行翻译操作.第三步.翻