sql - SQL 中图形结构的闭包表等价物

标签 sql database hierarchical-data transitive-closure-table

这个问题How to store tree structure in sql?导致一个想法 Closure table用于存储在许多方面都是最佳的树。

enter image description here enter image description here

问题是 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/

相关文章:

c# - 从数据表中的给定列中获取最大值

c# - 在一种方法中构造多个查询的最佳方法 c# asp.net

database - 为 PyCharm 设置 DB Navigator(SQLite)

python - 如何将显示层次关系的字典列表转换为树?

sql - oracle中列的层次总和

sql - 对于 1000 多列且没有连接,我应该使用哪个 DBMS?

sql - 将不同表中的两列连接成一列

javascript - 如何在 MySQL 插入语句中包含 JavaScript 变量值

php - 是否可以从 Mysql 触发器向 php 传递一个值?

sql - T-SQL员工层次结构递归查询