问题标签 [hierarchical-trees]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
611 浏览

php - Doctrine 1.2 NestedSet 属性和来自祖先的关系继承

我有一个 Doctrine 1.2 项目,我正在重构它,以便使用具有多个根的教义行为 NestedSet 为表提供树结构。

我需要的是从祖先到后代的继承(不是 OO 常识),其中后代从缺少自己的属性的最近祖先那里继承属性。同样的事情也会发生在关系上。

让我用一个例子来解释:

我想要执行的是:

  • 检索某个类别是否处于活动状态,这意味着验证是否所有祖先都处于活动状态
  • 如果给定类别缺少另一个属性,则从存在的最近祖先那里继承它
  • 检索给定类别的标签;如果标签丢失,则从最近的祖先处检索它们

为了最大限度地提高速度和灵活性,您建议采用什么最佳方法?

0 投票
2 回答
395 浏览

sql - SQL 或 NoSQL 数据库中的许多小树结构

我想将信息存储在数据库中许多不同树的节点上。

首先将有超过 20000 个节点在 500 棵树之间共享,每个节点将有 5 个数字属性。一旦构建,每个节点都需要引用它的所有直接子节点,而不需要引用其他节点。

我需要在初始化时在内存中构建所有树,并在程序进入停机时间后更新/添加节点(可能每隔一小时左右,尽管越多越好)。

我查看了 sql 邻接模型,它似乎构建每个表需要很长时间(必须进行太多的数据库调用),嵌套集模型是一种可能性,但扩展树更复杂,这是会发生很多,它增加了数据库的复杂性,因为我认为这可能是一个非常基本的结构和查询集。

我也研究过 MongoDb,但它似乎更适合 JSON 类型的对象,而且我正在使用 java,并且可能会过度杀戮,而且 HBase 肯定会过度杀戮(优点是如果节点数量变得巨大,它可能会出现很有用,这对未来来说是一种可能性,我可以增加对数据库的写入时间,这也是一个优势)

有人对我如何解决这个问题有任何建议吗?

NoSql dbs 是否矫枉过正?他们在存储树结构方面做得更好吗?将它们与 sql 数据库一起使用是不好的做法吗?

0 投票
0 回答
416 浏览

mysql - 层次树模型

我正在 MySQL 中寻找一个层次树模型,它在以下要求下表现最好:

  • 多个根节点(我的意思是很多)
  • 深度有限(最多 4 级)
  • 在结构内排序的兄弟姐妹
  • 快速使用(选择)
  • 不需要快速管理(创建、更新、删除)
  • 有一个很好的 PHP API 来管理和使用

我经常使用嵌套集,但在这种情况下,多个根节点让我担心。另一方面,邻接表可能太简单了。

我已经看到 Drupal 如何处理其菜单(路径模型???),但无法找到有关这种方法的优缺点的大量信息——以及是否有易于访问的 API 信息。不过看起来很有趣。

任何人有任何其他建议/参考?

0 投票
3 回答
11385 浏览

oracle - 需要一个 Oracle 分层查询,该查询仅返回子项与搜索字符串匹配的记录的完整树

这是此查询的完整示例数据集,没有修剪任何节点与搜索字符串匹配的树:

如果用户搜索“foo”,我需要返回以下内容:

实际情况稍微复杂一些(即我想要返回的树中的三个级别),但这抓住了问题。在英语中,返回与搜索字符串匹配的节点的祖先树,该搜索字符串从文本列上的匹配节点开始,并返回所有祖先。

我是 Oracle 的新手(至少最近是这样)并尝试添加到 CONNECT BY 子句但没有任何成功 - 总是返回以下内容:

PS - 关于此的 oracle 文档和示例暗示 CONNECT_BY_ROOT 将捕获祖先,但它似乎所做的只是返回顶级(ROOT)值。

0 投票
2 回答
2436 浏览

php - PostgreSQL 分层,类别树

环境:postgresql-8.4

我正在尝试构建类别树。基本上我期待最终输出,例如:

例如:

表结构为

p>

到目前为止,我已经得到了这个,但没有工作。任何帮助将不胜感激:

来自数据库的样本

0 投票
1 回答
7159 浏览

php - 如何从子ID获取父ID(根父)

可能重复:
函数只返回一次,为什么?

我的数据库结构看起来像

我需要一个将id作为参数的父(即父=0)的函数例如.. get_parent(6)==returns 1 我做了一些研究,发现了这个问题

如何递归获取此 MySQL 表中行的“父 ID”?

我试着做这个功能

我打电话

但是我的方法是错误的。我哪里做错了?

0 投票
0 回答
510 浏览

sql - 分层查询:获取每个节点的直接子节点数

我是分层查询的新手,我已经阅读了大部分关于它的帖子。

我有一个想改进的查询。

我的场景是这样的:

表数据如下:

我希望结果是这样的:

我编写了以下查询,它给出了除 DIRECT_CHILDREN_COUNT 之外的所有列

关于如何获取节点的所有子节点(不仅仅是直接子节点)的计数有很多帖子,这些不适用于我,因为

1.我只想要直接的孩子数。
2.如果可能的话,我想在不使用joins的情况下实现这一点。

我不知道如何将直接子项计为每条记录的列值。无论如何我可以使用分层查询获得 DIRECT_CHILDREN_COUNT 吗?

0 投票
3 回答
6794 浏览

php - 使用 PHP 展开和折叠树形菜单

我有以下数组:

我需要如下树形菜单:(仅使用 PHP)

点击后展开如下:

一旦我们点击另一个第一级项目,其相应的子节点将被展开,相同的格式应该被保留。

0 投票
0 回答
116 浏览

algorithm - 分层图中节点的最佳放置算法

我正在寻找以动态和编程方式构建分层图。

像这样的图表:( 来源:graphviz.org例子

我不知道如何以一种好的方式放置节点以避免冲突。

我可以使用的算法有什么想法吗?

0 投票
0 回答
39 浏览

php - MySQL - 以分层方式连接标签

我有一个JOIN具有以下结构的临时表(这很重要,因为我不能在同一个查询中打开它两次):

使用一些示例数据:

我需要的

只有当报告具有用户想要的所有所需类别时,我才需要value_id根据类别进行连接。

因此,在给定的示例中,如果用户说“我想查看category_id1、2 和 3 的报告”,我需要显示以下内容:

如您所见,ID 为 1 的报告没有类别 1,它必须从结果集中隐藏,而 ID 为 2 的报告有两个类别 2 的值,它必须显示两个结果,每个组合树一个.

如果它有三个值category_id = 3,那么我应该得到它的所有可能的树组合。

我也在使用 PHP,因此解析数据并使用它的解决方案也可能是正确的。

我一直在尝试使用GROUP_CONCAT(),HAVING COUNT(category_id)ORDER BY FIELD(category_id),但由于无法使用 JOIN,我无法让它出现在每种可能的组合中。

感谢大家的帮助和时间!