關係微積分的實際用途是什麼?
在我的數據庫設計課程中,我們同時學習關係代數和關係微積分。我可以看到關係代數在哪裡有用,因為它與 SQL 密切相關。
我們的教授說,在一些 RDMBS 中,關係微積分被用作 SQL 的替代品,其中大部分已經不存在了。關係微積分還有實際用途嗎,還是大部分是理論上的?
我同意 @Erik的觀點,這些工具本質上是等效的,但我將添加一些關於這個主題的更多想法。
語境
為了提供更多的上下文,有必要對這兩個術語都有一個權威的定義。因此,這裡有一些題為“**數據庫子語言的關係完整性”**的相關論文的節選,該論文由關係模型的創始人EF Codd 博士撰寫,發表於 1972 年:
關係代數。該代數的主要目的是提供適用於從關係數據庫中選擇數據的所有程度(不一定是二進制)關係的操作集合。
關係演算。在定義了關係代數之後,我們現在考慮一個應用謂詞演算,它也可以用於對任何數據庫的查詢公式化,該數據庫由簡單範式的有限關係集合組成。
通過這種方式,人們可以看到它們服務於相同的目的,因為它們是表達一組在關係框架內被認為有效的操作的兩種不同的數學方法。
兩種方法的比較
在同一篇論文中,Codd 對比了這兩種方法,以指出每種方法都突出的一些重要方面:
代數方法可能聲稱的一個優點是它沒有量詞。然而,微積分似乎在四個方面優於代數。
- 易於增強
- 搜尋優化的範圍
- 授權能力
- 接近自然語言
因此,旨在建構自己的語言或數據庫平台的組織應考慮這些方面。
實用價值
我不知道是否有當代成功的商業 RDBMS 提供純粹基於關係演算的查詢語言,但我認為它的實際價值在於它為計劃設計和實施新的有效的供應商提供了一個****理論上有基礎的替代方案。關係語言,或在不偏離經過驗證和接受的實踐的情況下擴展現有語言。在這方面,將關係演算視為此類供應商可以遵循以生成關係語言的藍圖可能很有用。
由於市場主要由 SQL 平台主導,全球數百萬使用者已經熟悉其幾種特定方言,並且在此類平台上投資了數十億美元,因此確定創建新的關係語言是否會是非常有趣的。有利可圖,但如果是這樣,關係演算總是可以發揮重要作用。
當然,這樣的項目在學術領域可能更可行,所以這個工具有更多的實用價值。