Skip to content

Files

Latest commit

 

History

History
103 lines (67 loc) · 2.3 KB

20.md

File metadata and controls

103 lines (67 loc) · 2.3 KB

DBMS 关系演算

原文: https://beginnersbook.com/2019/02/dbms-relational-calculus/

在上一个教程中,我们讨论了关系代数 ,这是一种过程查询语言。在本教程中,我们将讨论关系演算,它是一种非过程查询语言。

什么是关系演算?

关系演算是一种非过程查询语言,它告诉系统要检索哪些数据但不告诉如何检索它。

关系演算的类型

DBMS Relational Calculus

1. 元组关系演算(TRC)

元组关系演算用于选择满足给定条件的元组。

表:Student

First_Name     Last_Name     Age
----------     ---------     ----
Ajeet          Singh         30
Chaitanya      Singh         31
Rajeev         Bhatia        27
Carl           Pratap        28

让我们编写查询的关系演算。

查询来显示年龄大于 30 岁的学生的姓氏。

{ t.Last_Name | Student(t) AND t.age > 30 }

在上面的查询中,您可以看到由|符号分隔的两个部分。第二部分是我们定义条件的地方,在第一部分中我们为所选元组指定了要显示的字段。

上述查询的结果将是:

Last_Name
---------
Singh

查询来显示姓氏为"Singh"的学生的所有详细信息。

{ t | Student(t) AND t.Last_Name = 'Singh' }

输出:

First_Name     Last_Name     Age
----------     ---------     ----
Ajeet          Singh         30
Chaitanya      Singh         31

2. 域关系演算(DRC)

在域关系演算中,记录基于域进行过滤。

我们再次采用相同的表来了解 DRC 的工作原理。

表:Student

First_Name     Last_Name     Age
----------     ---------     ----
Ajeet          Singh         30
Chaitanya      Singh         31
Rajeev         Bhatia        27
Carl           Pratap        28

查询来查找年龄大于 27 岁的学生的名字和年龄

{< First_Name, Age > | ∈ Student ∧ Age > 27}

注:

用于逻辑运算符的符号为:表示 AND,表示 OR,表示 NOT。

输出:

First_Name     Age
----------     ----
Ajeet          30
Chaitanya      31
Carl           28