关系数据库语言和逻辑编程有多相似?

zca*_*ate 10 clojure prolog relational-database clojure-core.logic

在关系数据库语言sql和逻辑编程语言(如prologclojure)之间的基本概念和实现方面有什么相同点和不同点core.logic?这两个可以互换吗?

Joh*_*tts 5

一个重要的区别是SQL 只是图灵完备的,有一些非常疯狂的技巧,这些技巧在 ANSI SQL 99 之前是不可能的。Prolog 是图灵完备的,因此是一种通用编程语言。


Teg*_*shi 5

Datalog查询语言捕获了相似之处.是逻辑和数据库之间连接的动机和更好的解释.此摘录应解决您的问题:

然而,耦合Prolog和关系数据库显示出一些不和谐.Prolog中的事实和规则按总顺序组织,Prolog程序的语义依赖于此顺序.相反,数据库中的关系被视为无序的元组集,并且查询的结果独立于任何物理顺序.Prolog程序的处理是面向元组的,而关系数据库是面向集合的.Prolog提供了诸如cut谓词之类的过程特性,以允许程序员控制推理过程.Prolog程序的评估顺序是预先确定的,而关系演算中的表达式纯粹是 声明性的,并且实际评估留给查询处理器,查询处理器可以重新排列查询以用于优化目的.优化查询对于关系数据库的成功至关重要.Prolog引擎的程序性质给程序员带来了优化的负担.