问题标签 [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 投票
2 回答
1119 浏览

php - 如何创建多层次的“树”?(如果它可以称为一棵树)

我有一个说coursescertificates和的列表fun_days。这些都叫objects。每个对象都有它的要求object_requirements。需求可以是其中之一objects或多个。

您可以将任何object 没有 object_requirements作为starting point. “每个人都可以拥有这些物品。”

所以它可能是这样的:

  • Introduction_course是一个起点(无要求)
  • Introduction_certificate有的人可以获得Introduction_course(这course是this的要求certificate
  • Funday_swimming可以由那些拥有Introduction_certificate(证书是要求fun_day)的人获得。

有没有办法创建该系统的分层或某种结构化流程的可视化表示?该示例相当简单,但“树”中的任何位置都应该有多个要求。

这就是我存储需求的方式:

哦,我使用 PHP 和 MySQL。但是任何可以生成这些视觉表示的软件也将受到欢迎!

0 投票
2 回答
1058 浏览

.net - 分层数据和 BerkeleyDB

好消息!自 4.8 版以来,BerkeleyDB 具有 c# 接口。BerkeleyDB 对我来说是一件非常有趣的事情,因为它是非 SQL 的。我知道如果有人想要存储很多键/值对,这是一个很好的工具。而且我知道“可附加”表。我不知道如何使用 BerkeleyDB 存储分层数据。一般适合这个吗?

我想做的事?我想存储 dmoz.org 数据。现在我已将所有数千个 rdfs 导入 MySQL db。但我不需要存储过程或其他复杂功能。我想使用 BerkeleyDB 作为我的在线 RSS 阅读器的数据存储。所以类别树中有提要(正如我所说的我从 dmoz 导入的类别。我有很多,以及提要 - 数百万)。而且...我忘记了饲料项目。我也想用 BerkleyDB 存储它们:-)。

看起来我必须手动实现所有关系,,,没关系......但我问的最重要的是速度。我的 BerkeleyDB 解决方案会(可以)比基于 MySQL(或任何 RDBMS)的解决方案更快吗?

0 投票
4 回答
701 浏览

sql-server - TSQL CTE 和排序图

具有以下结构和示例数据的表:

是否可以编写一个 CTE 查询来完成以下任务:

我很难编写一个停止在递归语句中返回行的语句。

有任何想法吗?

编辑

澄清 GetActivities('a')。此函数应找到“a”的“开始”活动并继续查找“a”上的任何“转移”活动。此时,该函数可以使用“b”递归,从而使用样本数据递归“c”。查询应通过“Transfers”返回与“a”相关的所有活动。这种活动嵌套可以根据需要深入并且是未知的(因此没有联合)。我遇到的困难是还有另一个“转移”,例如“b”->“a”。您可以看到这将如何在递归查询中创建一个循环。

再澄清一点:活动表中的传输表现为堆栈。以下是数据在表中的填充方式(在 C# 中):

0 投票
1 回答
830 浏览

model-view-controller - 为分层系统设计 MVC URL 方案

所以想象一下,我正在使用 MVC Web 应用程序构建一个多用户 Dungeon 系统。为了描述玩家可以探索的区域,系统可以包含许多地图,这些地图将由房间和门组成——门连接两个房间。考虑系统的创作部分。创建地图很容易 - 我需要如下 URL:

使用路由方案:/Author/{controller}/{action}/{ID}

这是我需要帮助的房间的 URL。创建新房间时,我需要知道我正在为哪个地图创建它。

然后用于编辑房间的详细信息:

这种路由方案会起作用吗?列出地图所有房间的视图应该是房间控制器上的“索引”操作,传入 MapID,还是地图控制器上的“房间”操作?

谢谢。

0 投票
6 回答
117806 浏览

sql - 进行递归自联接的最简单方法?

在 SQL Server 中进行递归自联接的最简单方法是什么?我有一张这样的桌子:

而且我希望能够获取仅与从特定人员开始的层次结构相关的记录。所以如果我通过 PersonID=1 请求 CJ 的层次结构,我会得到:

对于 EB,我会得到:

除了基于一堆连接的固定深度响应之外,我对此有点坚持。这会发生,因为我们不会有很多级别,但我想正确地做到这一点。

谢谢!克里斯。

0 投票
2 回答
414 浏览

select - Firefox 分层下拉列表的非框架实现

我需要在浏览器中使用分层下拉菜单<select><option/></select>,最好是 Firefox。我宁愿不使用像 jQuery 这样的框架。请不要问我为什么。

0 投票
2 回答
1673 浏览

mysql - 计算属于某个类别及其子类别的所有帖子

我真的很感谢我的问题的一些帮助:

我有 2 个 MySQL 表、类别和帖子,布局(简化)如下:

类别

CATID - 名称 - parent_id

帖子

PID - 名称 - 类别

我想做的是获取每个类别的帖子总数,包括子类别中的任何帖子。

现在,我通过以下方式获得每个(顶级)类别(但不是子类别)中的帖子总数:

问题再次是,如何获得每个类别的总和,包括每个相关子类别的总和?

由于我正在维护现有系统,因此无法将数据库重组为嵌套集格式。

谢谢你的帮助!

0 投票
1 回答
859 浏览

sql - 用于划分大型分层数据集的数据库模式

对大量分层数据进行分区是否有任何最佳实践/模式或一般建议?

比如说,一个特定国家/地区所有人的数据库,并跟踪谁与谁共事过。孤立地考虑“人”实体,如果要保存有关每个人的大量数据,那么一种自然的方法似乎是将总体划分为多个水平分区。然而,关系(谁与谁一起工作)可以(并且将)跨越分区a。随着数据变得越来越交叉链接,随着时间的推移,对这些关系进行聚类(例如,使用雇主作为分区键以最小化交叉分区引用)将不可行。这种集群还会导致不平衡的分区,这会妨碍可扩展性。

我现在很困惑,所以对于提供的任何帮助都会非常感激。

谢谢。

0 投票
1 回答
710 浏览

mysql - MySql 数据库表中的树数据

我有一个使用邻接列表模型进行层次结构存储的表。因此,此表中我最相关的列是:

然后我创建了一个插入前跳跳器,用于填充列LevelParentTrail. 由于最后一列还包括当前项目的 ID,我不得不在我的触发器中使用一个技巧,因为auto_increment在插入前触发器中列不可用。所以我从information_schema.tables表中得到了这个值。

ParentId一切正常,直到我尝试编写一个更新触发器,当项目更改其父项(已更改)时,它将更新我的项目及其后代。但我无法在更新触发器内对我的表进行更新。我所能做的就是改变当前记录的值,而不是其他的。

我可以为层次结构数据使用单独的表,但这意味着我还必须创建一个视图来组合这两个表(1:1 关系),我想完全避免这种情况。

有没有办法将所有这些都放在同一个表中,以便这些字段(LevelParetTrail)使用触发器自动设置/更新自己?

0 投票
2 回答
316 浏览

entity-framework - 说服实体上下文 (EF1) 填充实体引用

我有一个带有自引用的实体(由实体设计器生成):

我编写了一个存储过程,它从表中返回节点的子树(不仅仅是直接子节点)并返回MyEntity对象列表。我正在使用存储过程来避免延迟加载任意深度树。这样,我可以在一次调用中从数据库中获取相关的子树节点。

一切都好。但是当我检查时nodes[0].Children,它Count等于 0。但是如果我调试和检查context.MyEntities.Results view,儿童枚举会被填充。检查我的结果显示我的孩子node[0]

如何以编程方式强制我的实体上下文执行内存魔术并在属性上放置正确的Parent引用Children

更新 1

我试过打电话

在我的GetSubtree()电话确实正确设置了关系之后,但再次从数据库中获取了相同的节点。它仍然只是一种解决方法。但总比用context.MyEntities().ToList().

更新 2

我已经通过使用 EF Extensions 项目可靠地解决了这个问题。在下面检查我的答案。