gpt4 book ai didi

sql - 将 [Head|Tail] 编译为 SQL

转载 作者:行者123 更新时间:2023-12-01 05:15:55 26 4
gpt4 key购买 nike

Prolog 结构是面向列表的,因为列表允许合并 tuple-at-once Prolog 模型到 all-solutions关系模型(SQL,比方说)。

我正在考虑将列表处理 Prolog 代码编译为 SQL。

我认为 Draxler 的编译器 pl2sql没有解决问题(适本地,术语 list 从未使用过......)。

我在想一个专栏来配对翻译,

append(A,B,C) ~~>
table(append, A_key,A_val, B_key,B_val, C_key,C_val)

其中 _key 将是行 ID,并表示与不同自联接的关系,根据 head 变量的实例化状态进行选择。

替代设计可能是
append(A,B,C) ~~>
table(append_A, key, val), table(append_B, key, val), table(append_C, key, val)

使用连接,而不是如上所述的自连接。

有谁知道先例工作?

可行性怎么样?特别是,可以避免存储过程吗?

编辑我找到了 FunSQL文档,应该是相关的...打算阅读。

最佳答案

关系数据库模型的第一范式
说表列应该只存储标量值。

但是没有人阻止您违反此限制。
您可以使用一些非标量值的序列化来
在列中存储非标量值。这也是经常
在实践中发现自从将数据结构分解为
标量可能很笨拙且效率低下。

通过这种方式,您可以使用 SQL 运行带有列表和/或
化合物。一个典型的解决方案将无法完全
将 Prolog 子句或查询转换为 SQL 但也需要
发出 SQL 的宿主语言中的一些代码
命令。你可能会牺牲一些统一的灵活性
而是实现所谓的允许演绎数据库
在列表存在的情况下不再是数据记录
和/或化合物。

此致

关于sql - 将 [Head|Tail] 编译为 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20629953/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com