问题标签 [hierarchical-data]

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 投票
3 回答
5419 浏览

apache-flex - 为什么在更新 HierarchicalData dataProvider 时 AdvancedDataGrid 不更新?

我有一个带有 HierarchicalData 数据提供者的 AdvancedDataGrid (ADG):

当我最初在模型中设置 HierarchicalData 实例时,它按预期显示:

parentItems是 ParentItem 值对象的集合:

但是,当我将子项从一个父项移动到另一个父项(通过拖放)时,更新不可见,使用以下代码:

但是,出于某种原因,这确实有效:

为什么我必须更新 ArrayCollection 的来源???

0 投票
1 回答
2627 浏览

apache-flex - 如何从 AdvancedDataGrid 的 dataProvider 创建分层游标?

在我之前编写的应用程序中,我有一个扩展类AdvancedDataGrid(ADG)。它包含以下代码:

在这个实现中,该函数setOpenNodes()运行良好——它完全按照我的意图去做——传递一个数字,并打开dataProvider该级别或低于该级别的所有节点。

现在,我正在创建一个新的 ADG 类并希望重现此功能:

dataProvider父组件中设置:

reportData在另一个文件中设置:

但是,我收到运行时错误:

我试过铸造dataProviderICollectionView. 我试过然后铸造ICollectionViewas IHierarchicalCollectionView。我尝试了各种铸造,但似乎没有任何效果。为什么这在这个新的实现中不能像在过去的实现中那样工作?我需要做什么?

*** 更新:

我开始调试这个。我在我的 ADG 类中添加了一个覆盖设置器,以查看何时设置了 dataProvider:

我在这个设置器和我的 setOpenNodes() 函数中添加了一个断点。果然,dataProvider 是在调用 setOpenNodes() 之前设置的,它是 HierarchicalData。但是,当 setOpenNodes() 调试器说 dataProvider 是一个空的 ArrayCollection 时。看来这是根本问题。

0 投票
2 回答
1406 浏览

sql - 我想使用“嵌套集模型”,但我必须有一个 GUID 作为主键。没有整数作为pk怎么办?

我不知道我的树会有多深。所以我认为 NSM 适合我,阅读一些文档。在 sql 中,此模型假设我使用整数值作为主键。我想创建一个双表只是为了存储通过与真实表一对一的关系连接的整数(PK,左,右)。事情变得复杂而且浪费空间磁盘,特别是当服务器不是我的并且我必须支付每兆字节时。帮助!!

更新

优秀的!太棒了!谢谢 Macka 和 Bill,我现在可以跳过阅读整本书。Celko 是亚马逊的未来订单。;-)

0 投票
1 回答
1632 浏览

sql-server - SQL Server 2005:检测分层数据中的循环

我有一个典型的 id、parentId 形式的分层数据表。

我需要在现有数据中检测如下循环。

Id 来自另一个表,因此我不能将 Id 的排序用作解决方案的一部分。大约有 1/2 百万行。数据是大量高度为1-5的独立树。目的是清理数据以消除循环,然后向表中添加触发器以防止将来出现循环。

我知道循环检测 算法。在我看来,这应该是一个普遍的问题。所以,我想知道在 SQL Server 的“盒子”中是否有一种方便的方法可以用最少的代码完成这个任务。

0 投票
3 回答
12016 浏览

mysql - 在 MySQL 数据库中获取链表

我有一个具有这种结构的 MySQL 数据库表:

我需要按链表的顺序获取数据。例如,给定以下数据:

我需要按顺序获取 id=1、2、4、3、9 的行。如何使用数据库查询来做到这一点?(我可以在客户端做到这一点。我很好奇这是否可以在数据库端完成。因此,说这是不可能的(有足够的证据))。

最好有一个终止点(例如,在 10 次获取后停止,或者当行上的某些条件变为真时),但这不是必需的(可以在客户端完成)。我(希望我)不需要检查循环引用。

0 投票
2 回答
5579 浏览

database - 在数据库中存储复合模式(分层数据)

在关系数据库中保存复合模式的“最佳实践”是什么?

我们一直在使用改进的预序树遍历。构建整个树非常快,但插入或删除新节点非常慢(所有左右值都需要调整)。查询一个节点的子节点也不容易而且很慢。

我们注意到的另一件事是,您确实必须确保树不会弄乱。您需要事务锁,否则左右值可能会损坏,修复损坏的左右树并非易事。

但是,Modified Preorder Tree Traversal 确实工作得很好,但我想知道是否有更好的选择。

0 投票
3 回答
2231 浏览

database-design - 在数据库中对用户定义的层次关系建模的最佳方法是什么?

本质上,我希望用户能够定义一个层次模型,但是我需要允许用户在他们定义的模型中存储数据。这有意义吗?因此,用户将能够创建新的“单元类型”以分层方式进行组织,并决​​定如何组织这些类型的单元。一个简单的例子:在我假设的界面中,用户创建了三种单元类型,树干、分支和叶子。然后用户定义它们之间的关系。叶子可以存在于层次结构中的任何点,分支必须有一个主干作为父级。然后,用户可以创建这些单位类型(作为单位)的实例,并可以根据其模型中定义的规则来组织它们......在数据库中是否有这样做的好方法?

0 投票
9 回答
26247 浏览

c# - 在 LINQ 中表达递归

我正在为分层数据源编写 LINQ 提供程序。我发现通过编写示例来展示我想要如何使用它,然后编写代码来支持这些用例,来设计我的 API 是最容易的。

我遇到的一件事是在 LINQ 语句中表达“深度查询”或递归的简单/可重用/优雅的方式。换句话说,区分以下内容的最佳方法是什么:

相对:

编辑:请注意,以上这些示例都不一定反映我想要的查询结构。我对任何表达递归/深度的好方法感兴趣)

请注意,我不是在问如何实现这样的提供程序,或者如何以允许递归的方式编写我的 IQueryable 或 IEnumerable。我是从编写 LINQ 查询并使用我的提供程序的人的角度来问的——他们表达是否要递归的直观方式是什么?

数据结构类似于典型的文件系统:文件夹可以包含子文件夹的集合,文件夹也可以包含项目的集合。所以 myFolder.Folders 代表了 myFolder 的所有直接子文件夹,而 myFolder.Items 包含了 myFolder 中的所有项目。这是站点层次结构的基本示例,很像带有文件夹和页面的文件系统:

如果我写:

表达查询获取轻型卡车下的所有项目或仅直接项目的意图的最直观方式是什么?区分这两种意图的侵入性最小、摩擦最小的方法是什么?

我的 #1 目标是能够将此 LINQ 提供程序转交给对 LINQ 有平均理解的其他开发人员,并允许他们编写递归和列表查询,而无需向他们提供编写递归 lambda 的教程。给定一个看起来不错的用法,我可以对提供程序进行编码。

附加说明:(我真的很讨厌交流这个!) - 这个 LINQ 提供程序是针对外部系统的,它不仅仅是遍历对象图,在这种特定情况下,递归表达式实际上也不会转化为任何类型的真正递归活动在引擎盖下。只需要一种方法来区分“深”查询和“浅”查询。

那么,你认为最好的表达方式是什么?还是有一种我错过的标准表达方式?

0 投票
4 回答
3513 浏览

sql - 如何更新嵌套集树结构?

我看过在 MySQL 中管理分层数据,但它实际上只处理在嵌套集模型中添加和删除节点。

我需要能够移动带有和不带有子节点的节点。

我该怎么做?

0 投票
1 回答
2084 浏览

oracle - Oracle 中的族谱查询

我正在尝试从我的 Oracle 数据库中获取动物的家谱树。

这是表格:

如果我指定一种动物,我可以使用以下方法获取它的所有后代(在雄性方面):

我试图找到一种方法来扩展它,如果我指定一种动物,它将获取父母双方,然后获取他们所有的后代。

有什么想法吗?(这是 Oracle 9.2)