gpt4 book ai didi

postgresql - 我们可以使用 PostgreSQL ltree 表示 DAG(有向无环图)吗?

转载 作者:行者123 更新时间:2023-12-01 21:34:07 25 4
gpt4 key购买 nike

我想在 PostgreSQL 数据库中存储分层数据。我找到了 ltree 扩展,但它用于存储树结构数据,即只能有一个父节点。有什么方法可以调整它以存储多个父节点吗?

最佳答案

是的,可以使用 ltree extension 来做到这一点,通过使用两个表:一个用于您的节点,另一个用于您的路径。 Bustawin有一篇关于如何使用此扩展和此策略来处理 DAG 的精彩文章。

对于一个有多个父节点的节点,我们有必要为这样的节点定义多个 ltree 路径,一个从每个父节点引出。假设我们有一个在节点 A、B、C 和 D 之间形成菱形的 DAG:

A -> B
B -> D
A -> C
C -> D

使用扩展,您应该有一个与两条路径相关的节点 D,A.B.DA.C.D。两个查询都应返回节点 D

SELECT * FROM nodes
JOIN paths ON paths.node_id = nodes.id
WHERE paths.ltree_path ~ "A.B.*{1}"
SELECT * FROM nodes
JOIN paths ON paths.node_id = nodes.id
WHERE paths.ltree_path ~ "A.C.*{1}"

关于postgresql - 我们可以使用 PostgreSQL ltree 表示 DAG(有向无环图)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62155700/

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