【发布时间】:2011-10-15 23:17:25
【问题描述】:
我有一个表,其中包含图中从节点 x 到节点 y 的边。
n1 | n2
-------
a | a
a | b
a | c
b | b
b | d
b | c
d | e
我想创建一个(物化)视图,它表示从 x 到节点 y 的路径包含的最短节点数/跳数:
n1 | n2 | c
-----------
a | a | 0
a | b | 1
a | c | 1
a | d | 2
a | e | 3
b | b | 0
b | d | 1
b | c | 1
b | e | 2
d | e | 1
我应该如何为我的表和视图建模以促进这一点?我想我需要某种递归,但我相信这在 SQL 中很难完成。我想避免这种情况,例如,如果路径恰好包含 10 个节点/跃点,则客户端需要触发 10 个查询。
【问题讨论】:
-
PostgreSQL 9 有 WITH RECURSIVE 但我不关心在数据库中寻找最短路径。
标签: sql postgresql recursion graph path