📜  DBMS 中的域关系演算

📅  最后修改于: 2021-09-27 15:07:35             🧑  作者: Mango

Domain Relational Calculus是一种与元组关系演算等效的非过程查询语言。领域关系演算只提供查询的描述,但不提供解决它的方法。在领域关系演算中,查询表示为,

{ < x1, x2, x3, ..., xn > | P (x1, x2, x3, ..., xn ) } 

其中, < x 1 , x 2 , x 3 , …, x n > 表示结果域变量,P (x 1 , x 2 , x 3 , …, x n ) 表示与谓词演算等效的条件或公式。谓词演算公式:

  1. 将所有运算符
  2. 一组连接词,如 and、or、not
  3. 量词集

例子:

表 1:客户

Customer name Street City
Debomit Kadamtala Alipurduar
Sayantan Udaypur Balurghat
Soumya Nutanchati Bankura
Ritu Juhu Mumbai

表 2:贷款

Loan number Branch name Amount
L01 Main 200
L03 Main 150
L10 Sub 90
L08 Main 60

表 3:借款人

Customer name Loan number
Ritu L01
Debomit L08
Soumya L03

Query-1:查找贷款编号、分行、贷款金额大于等于100的金额。

{≺l, b, a≻ | ≺l, b, a≻ ∈ loan ∧ (a ≥ 100)}

结果关系:

Loan number Branch name Amount
L01 Main 200
L03 Main 150

查询 2:查找金额大于或等于 150 的每笔贷款的贷款编号。

{≺l≻ | ∃ b, a (≺l, b, a≻ ∈ loan ∧ (a ≥ 150)}

结果关系:

Loan number
L01
L03

查询 3:查找所有在“总行”分行有贷款的客户的姓名,并找到贷款金额。

{≺c, a≻ | ∃ l (≺c, l≻ ∈ borrower ∧ ∃ b (≺l, b, a≻ ∈ loan ∧ (b = “Main”)))}

结果关系:

Customer Name Amount
Ritu 200
Debomit 60
Soumya 150

笔记:
将在结果关系中的域变量必须出现在 | 之前。在 ≺ 和 ≻ 内,所有域变量必须按它们在原始关系或表中的顺序出现。