複製鏈接
請複製以下鏈接發送給好友

域關係演算

鎖定
計算機科學中,域關係演算(DRC)是Michel Lacroix和Alain Pirotte為關係數據模型發明的的作為聲明性數據庫查詢語言。
中文名
域關係演算
外文名
Domain relational calculus
含    義
一元組變量的分量
代    表
QBE語言
特    點
關係演算中的另一種形式

目錄

域關係演算簡介

計算機科學中,域關係演算(DRC)是Michel Lacroix和Alain Pirotte為關係數據模型發明的的作為聲明性數據庫查詢語言。
在 DRC 中,“查詢”有如下形式:
這裏的 Xi要麼是一個域變量要麼是一個常量,而 p(<X1, X2, ...., Xn>) 指示一個 DRC “公式”。 查詢的結果為使得這個 DRC 為真的元組 Xi到 Xn的集合。
域關係演算可以使用量詞,同時使用(以及藴含算符); 儘管如此,域關係演算的表達能力同非遞歸的Datalog程序是一樣的,也等價於關係代數 [1] 

域關係演算例子

設 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。 [2] 
參考資料
  • 1.    周屹 李豔娟.數據庫原理及開發應用(第二版):清華大學出版社,2013:63
  • 2.    Carlo Zaniolo. Advanced Database Systems. Morgan Kaufmann Publishers. 1997: 169. ISBN 1-55860-443-X.