码迷,mamicode.com
首页 > 数据库 > 详细

数据库文章翻译

时间:2017-10-01 19:28:52      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:期望   cin   重复   使用   研究生   依赖   不同的   concepts   ons   

关系运算

   所有的程序关系都为查询语言提供了一组可以用来表示单个或多个关系的操作。这些操作具有良好并受到较高期望的属性,能实现其结果有唯一的对应关系。

这些操作还可以用模板化的方式组合当中的几个操作。确切的说,因为查询结果本身就是一种关系,关系操作也可用于查询结果以及定义所给的关系。

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

最常见的操作是从单个关系(比作教师)中选择特定的元组,这些元组满足某些特定的谓词(比作$8.5万美元)。其结果是一个新的关系,它是原始关系(教师)的一个子集。例如,如果我们从图2.1的教师关系中选择元组,满足谓词“薪水大于$85000”,我们得到如图2。10所示的结果。

编号

姓名

部门

工资

12121

22222

33456

83821

Wu

Einstein

Gold

Brandt

金融

物理

物理

Comp.Sci

90000

95000

87000

92000

 

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

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

编号

工资

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和工资的结果

编号

姓名

工资

部门

建筑物

预算

10101

12121

15151

22222

32343

33456

45565

58583

76543

76766

83821

98345 

Srinivasan

WU

Mozart

Einstein

ElSaid

Gold

Katz

Califieri

Singh

Crick

Brandt

Kim

 

65000

90000

40000

95000

60000

87000

75000

62000

80000

72000

92000

80000

计算机科学

财政

音乐

物理学

历史

物理学

计算机科学

历史

财政

生物

计算机科学

电子工程

Taylor

Painter

Packard

Watson

Painter

Watson

Taylor

Painter

Painter

Watson

Taylor

Taylor

 

100000

120000

80000

70000

50000

70000

100000

50000

120000

90000

100000

85000

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

如图2.12所示的联接形式,称为自然连接,从教练关系元组匹配元组ID部门关系

他们的部门属性是相同的。所有这样的匹配对元组都存在于联接结果中。一般来说,在两个关系的自然连接运算匹配元组的值,是所有的属性名称相同对两者的关系。

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

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

如前面所提到的,我们可以对查询结果执行操作。例如,如果我们想找到那些薪水超过$85.000工资的教师的身份证,我们将在示例中执行以上两个操作。首先,我们从教师关系中选择这些元组薪水大于$85.000。然后从结果中选择ID和薪水两个属性。结果为如图2.13所示的关系,该关系由ID组成。

编号

工资

12121

22222

33456

83821

90000

95000

87000

92000

 

图2.13的结果是选择具有更高薪水的教师的属性ID和薪水超过$58.000。

关系代数

关系代数定义了一组操作,平行的通常的代数。列如加,减或乘。这些数字运算。正如代数运算的数量,把一个或多个数字输入和输出返回一个数,关系代数运算通常以一个或两个关系作为输入并返回一个关系。

代数运算包含第六章的一些细节,但是我们概括了以下的一些操作要点。

符号(名称)

使用的实例

选择的项目

工资》=85000

 

返回行的输入关系满足预测

 

从所有行中输出指定的属性

输入关系。删除重复的元组

从输出。

自然的加入

从两个输入的关系,具有相同的值的所有属性的行输出对

同名的。

笛卡尔积

从两个输入中输出所有行对

关系(不管他们是否

在公共属性上具有相同的值

联合

从两个输入输出元组的联盟

关系.

薪酬。在这个例子中,我们可以在其中执行操作。秩序,但情况并非如此,我们将看到,有时,一个查询的结果中包含重复元组。例如,如果我们从讲师关系中选择部门名称属性,几个案例重复,包括“合并”。“Sci,”它出现了三次。某些关系语言严格地依赖于集合的数学定义并移除。重复。其他,考虑到相对大量的处理需要从结果关系中删除重复,保留。在这后一种情况,关系并不是真正的数学关系,术语感。

当然在数据库中的数据必须要修改好多次,一种关系能够被一种新的可选择的元组所更新,删除现有的元组,或是更改某些属性的值。整个关系可以删除和新建。

我们将讨论关系查询和更新使用SQL语言从第三章到底五章。

 

 

 

 

****选自《DATABASE SYSTEM CONCEPTS》2.6 Relational Operations

作者:Abraham Silberschatz

      Henry F. Korth

      S. Sudarshan

数据库文章翻译

标签:期望   cin   重复   使用   研究生   依赖   不同的   concepts   ons   

原文地址:http://www.cnblogs.com/nicestlala/p/7617601.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!