2012-06-29 97 views

回答

3

相似之處由Datalog查詢語言捕獲。 Here是邏輯和數據庫之間連接的動機和更好的解釋。這段摘錄應該解決你的問題:

儘管如此,耦合Prolog和關係數據庫顯示了一些 的不和諧。 Prolog中的事實和規則總共以 的順序排列,Prolog程序的語義依賴於此順序。相比之下,數據庫中的關係被認爲是元組的無序集合,並且查詢的結果與任何物理的 的順序無關。 Prolog程序的處理是以元組爲導向的,而關係數據庫則是以導向的。 Prolog提供程序 功能,如切斷謂詞,允許程序員控制推理過程。 Prolog程序的評估順序爲 預定義,而關係演算中的表達式純粹爲 聲明式,並且實際評估留給查詢處理器 ,查詢處理器可重新排列查詢以用於優化目的。查詢的優化 對於關係數據庫的成功至關重要。 Prolog引擎的程序性質使得編程人員最優化的負擔爲 。

2

儘管SQL和Prolog都展示了一階邏輯概念,但predicate calculus的完整實現都不是。

Prolog和其他邏輯編程語言在很大程度上依賴於遞歸,既用於定義數據結構,也用於謂詞。

SQL本身不允許遞歸,並且存儲過程的引入已經在這種調用的嵌套深度方面進行了限制。例如。 SQL Server 2000到2012允許at most 32 nested calls

在關係數據庫中,「關係」被表示爲表格(或者更靈活地表示爲視圖)。 Prolog的最相似的方面是dynamic factbases,在一些實現(SWI,Amzi)中允許索引性能,這與在SQL中執行關係表的索引非常相似。

儘管SQL RDBMS被設計爲能夠比Prolog實現通常需要的大量數據集高效地工作,但Prolog至少可以用於原型系統設計的數據庫和過程方面。

請參閱here for a 2005 thesis,其中探討了使用Prolog推斷擴展關係數據庫。