8

这个问题How to store tree structure in sql? 导致了一个闭包表的想法,用于存储在许多方面都是最优的树。

在此处输入图像描述 在此处输入图像描述

问题是 SQL 中的图形结构是否有类似的东西。我看到了这篇论文,它似乎概述了一个图形索引结构,但它有点过头了。想知道是否有一种方法可以创建一些辅助表来处理 SQL 中对图形数据的常见查询。

4

1 回答 1

6

我做了你链接到的演示文稿,有人问我用类似的方法实现一般图表,但我从来没有解决过这个问题。

如果您有循环图,该技术肯定会出现问题,除非您可以明确识别“起始节点”。因为否则,如果您从循环中的任何节点开始,您将希望能够遍历图中的整个循环。

在 SQL 中使用递归 CTE 可能更容易,但我最常使用 MySQL,它在 8.0 版之前不支持 CTE 语法。如果您确实具有递归 CTE 功能,那么最好使用它而不是闭包表,因为您出现数据异常的机会更少。

另一种选择是探索专门的图形数据库。对于 MySQL/MariaDB,有一个针对树和图形查询进行优化的社区存储引擎:https ://openquery.com.au/products/graph-engine

于 2018-04-06T20:41:36.087 回答