跳转到内容

域关系演算

维基百科,自由的百科全书

计算机科学中,域关系演算(DRC)是Michel LacroixAlain Pirotte关系数据模型发明的的作为声明性数据库查询语言[1]

在 DRC 中,“查询”有如下形式:

这里的 Xi 要么是一个域变量要么是一个常量,而 p(<X1, X2, ...., Xn>) 指示一个 DRC “公式”。 查询的结果为使得这个 DRC 为真的元组 Xi 到 Xn 的集合。

域关系演算可以使用量词,同时使用(以及蕴含算符); 尽管如此,域关系演算的表达能力同非递归的Datalog程序是一样的[2] ,也等价于关系代数[3]

例子

[编辑]

设 A, B, C 为 Rank, Name, ID 而 D, E, F 为 Name, DeptName, ID

找到星际飞船 USS Enterprise 的所有首领:

  • {<A, B, C> | <A, B, C> ∈ Enterprise ∧ A = "Captain" }

在这个例子中,A, B, C 同时指示结果集合和在表 Enterprise 中的一个集合。

找到在 Stellar Cartography 部门工作的 Enterprise 船员的名字:

  • {<B> | ∃ A, C ( <A, B, C> ∈ Enterprise ∧ ∃ D, E, F(<D, E, F> ∈ Departments ∧ F = C ∧ E = "Stellar Cartography" ))}

在这个例子中,我们只查找名字,所以 <B> 指示列名。F = C 是个要求,因为我们需要找到 Enterprise 船员并且他们在 Stellar Cartography 部门工作。

前面例子的另一个可替代表示为:

  • {<B> | ∃ A, C (<A, B, C> ∈ Enterprise ∧ ∃ D (<D, "Stellar Cartography", C> ∈ Departments))}

在这个例子中,要求的 F 域的值被直接的放置在公式中,而 C 域变量重新用于部门存在性的查询中,因为它已经持有了一个船员的 id。

参考资料

[编辑]
  1. ^ Michel Lacroix, Alain Pirotte: Domain-Oriented Relational Languages. VLDB 1977: 370-378
  2. ^ Carlo Zaniolo. Advanced Database Systems. Morgan Kaufmann Publishers. 1997: 169. ISBN 1-55860-443-X. 
  3. ^ E. F. Codd: Relational Completeness of Data Base Sub-languages. In R. Rustin, editor, Data Base Systems. Prentice Hall, 1972
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy