📜  关系代数中的基本运算符

📅  最后修改于: 2021-09-09 10:37:47             🧑  作者: Mango

关系模型基础:关系模型

关系代数是一种过程查询语言,它将关系作为输入并返回关系作为输出。有一些基本的运算符可以应用于关系以产生所需的结果,我们将一一讨论。我们将分别使用表 1、表 2 和表 3 中给出的 STUDENT_SPORTS、EMPLOYEE 和 STUDENT 关系来了解各种运算符。

表 1 : STUDENT_SPORTS

ROLL_NO SPORTS
1 Badminton
2 Cricket
2 Badminton
4 Badminton

表 2 : 雇员

EMP_NO NAME ADDRESS PHONE AGE
1 RAM DELHI 9455123451 18
5 NARESH HISAR 9782918192 22
6 SWETA RANCHI 9852617621 21
4 SURESH DELHI 9156768971 18

 表 3:学生

ROLL_NO NAME ADDRESS PHONE AGE
1 RAM DELHI 9455123451 18
2 RAMESH GURGAON 9652431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH DELHI 9156768971 18

选择运算符(σ):选择运算符用于根据某些条件从关系中选择元组。句法:

σ (Cond)(Relation Name)

从表1给出的学生关系中提取年龄大于18岁的学生

σ (AGE>18)(STUDENT)

结果:

ROLL_NO NAME ADDRESS PHONE AGE
3 SUJIT ROHTAK 9156253131 20

投影运算符(∏):投影运算符用于从关系中投影特定列。句法:

∏(Column 1,Column 2….Column n)(Relation Name)

从表 3 中给出的 STUDENT 关系中提取 ROLL_NO 和 NAME

∏(ROLL_NO,NAME)(STUDENT)

结果:

ROLL_NO NAME
1 RAM
2 RAMESH
3 SUJIT
4 SURESH

注意:如果投影后的结果关系有重复的行,它将被删除。例如: ∏ (ADDRESS) (STUDENT) 将删除一个值为 DELHI 的重复行并返回三行。

叉积(X):叉积用于连接两个关系。对于 Relation1 的每一行,Relation2 的每一行都连接在一起。如果 Relation1 有 m 个元组并且 Relation2 有 n 个元组,则 Relation1 和 Relation2 的叉积将有 m X n 个元组。句法:

Relation1 X Relation2

对表 1 中给出的 STUDENT 关系和表 2 中给出的 STUDENT_SPORTS 关系应用叉积,

STUDENT X STUDENT_SPORTS

结果:

ROLL_NO NAME ADDRESS PHONE AGE ROLL_NO SPORTS
1 RAM DELHI 9455123451 18 1 Badminton
1 RAM DELHI 9455123451 18 2 Cricket
1 RAM DELHI 9455123451 18 2 Badminton
1 RAM DELHI 9455123451 18 4 Badminton
2 RAMESH GURGAON 9652431543 18 1 Badminton
2 RAMESH GURGAON 9652431543 18 2 Cricket
2 RAMESH GURGAON 9652431543 18 2 Badminton
2 RAMESH GURGAON 9652431543 18 4 Badminton
3 SUJIT ROHTAK 9156253131 20 1 Badminton
3 SUJIT ROHTAK 9156253131 20 2 Cricket
3 SUJIT ROHTAK 9156253131 20 2 Badminton
3 SUJIT ROHTAK 9156253131 20 4 Badminton
4 SURESH DELHI 9156768971 18 1 Badminton
4 SURESH DELHI 9156768971 18 2 Cricket
4 SURESH DELHI 9156768971 18 2 Badminton
4 SURESH DELHI 9156768971 18 4 Badminton

Union (U):两个关系 R1 和 R2 上的并集只有在 R1 和 R2 是并集兼容的情况下才能计算(这两个关系应该具有相同数量的属性,并且两个关系中的对应属性具有相同的域)。联合运算符应用于两个关系 R1 和 R2 时将给出与 R1 或 R2 中的元组的关系。 R1 和 R2 中的元组在结果关系中只会出现一次。句法:

Relation1 U Relation2

查找学生或雇员的人,我们可以使用 Union运算符,例如:

STUDENT U EMPLOYEE

结果:

ROLL_NO NAME ADDRESS PHONE AGE
1 RAM DELHI 9455123451 18
2 RAMESH GURGAON 9652431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH DELHI 9156768971 18
5 NARESH HISAR 9782918192 22
6 SWETA RANCHI 9852617621 21

减号 (-):两个关系 R1 和 R2 的减号只能在 R1 和 R2 是联合兼容的情况下计算。当 R1-R2 应用于两个关系时,减号运算符将给出与 R1 中但不在 R2 中的元组的关系。句法:

Relation1 - Relation2

找到学生但不是雇员的人,我们可以使用减号运算符,例如:

STUDENT - EMPLOYEE

结果:

ROLL_NO NAME ADDRESS PHONE AGE
2 RAMESH GURGAON 9652431543 18
3 SUJIT ROHTAK 9156253131 20

重命名(ρ):重命名运算符用于为关系赋予另一个名称。句法:

ρ(Relation2, Relation1)

要将 STUDENT 关系重命名为 STUDENT1,我们可以使用重命名运算符,例如:

ρ(STUDENT1, STUDENT)

 如果你想用 ROLL_NO 和 STUDENT 的 NAME 创建关系 STUDENT_NAMES,可以使用重命名运算符来完成:

ρ(STUDENT_NAMES, ∏(ROLL_NO, NAME)(STUDENT))

扩展关系代数算子 关系代数算子概述

上一年的门问题
https://www.geeksforgeeks.org/gate-gate-cs-2012-question-50/
https://www.geeksforgeeks.org/gate-gate-cs-2012-question-43/