这个问题How to store tree structure in sql?导致一个想法 Closure table用于存储在许多方面都是最佳的树。
问题是 SQL 中的图结构是否存在类似的问题。我看到了this paper这似乎概述了一个图形索引结构,但它有点超出我的头脑。想知道是否有一种方法可以创建一些辅助表来处理 SQL 中对图形数据的常见查询。
最佳答案
我做了你链接到的演示文稿,有人问我如何用类似的方法实现一般图形,但我从来没有抽出时间去做。
如果您有循环图,该技术肯定会存在问题,除非您可以明确地识别“起始节点”。因为否则,如果您从循环中的任何节点开始,您将希望能够遍历图中的整个循环。
在 SQL 中使用递归 CTE 可能更容易,但我最常使用的 MySQL 直到版本 8.0 才支持 CTE 语法。而且,如果您确实具有递归 CTE 功能,则最好使用它而不是闭包表,因为出现数据异常的可能性较小。
另一种选择是探索专门的 graph database .对于 MySQL/MariaDB,有一个针对树和图查询进行优化的社区存储引擎:https://openquery.com.au/products/graph-engine
关于sql - SQL 中图形结构的闭包表等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49700342/