问题标签 [adjacency-list-model]

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 投票
5 回答
1593 浏览

sql - SQL 对层次结构中的节点进行重新排序

我有一个使用邻接列表模型(见下文)的“任务列表”数据库,因此每个“任务”可以有无限的子任务。该表有一个“TaskOrder”列,因此所有内容都以正确的顺序呈现在树视图上。

是否有一条 SQL 语句 (MS-SQL 2005) 将选择指定父节点的所有子节点并在删除同级时更新 TaskOder 列?

有任何想法吗?谢谢。

0 投票
1 回答
1789 浏览

php - 具有两个表的邻接表模型

所以我认为我的问题归结为两个问题:

  1. 当树存储在 MySQL 中(在两个表之间)时,如何使用邻接列表模型方法在 PHP 中构建可遍历的树结构,同时牢记性能?

  2. 什么是一种可维护的方法来以所需的格式显示树而不复制遍历代码并用 if/else 和 switch 语句乱扔逻辑?

以下是更多详细信息:

我正在使用 Zend 框架。

我正在处理一份问卷。它存储在两个单独的表之间的 MySQL 数据库中:questions 和 question_groups。每个表都扩展了适当的 Zend_Db_Table_* 类。层次结构使用邻接列表模型方法表示。

我意识到我遇到的问题可能是由于我将树结构填充到 RDBMS 中,所以我对替代方案持开放态度。但是,我还存储了问卷调查对象和他们的回答,因此需要替代方法来支持这一点。

问卷需要以各种 HTML 格式显示:

  1. 作为输入响应的表单(使用 Zend_Form)
  2. 作为带有问题(和某些组)的有序列表(嵌套),作为按问题或按组查看响应的链接。
  3. 作为一个有序列表(嵌套),每个问题都附加了回复。

问题是叶节点,question_groups 可以包含其他 question_groups 和/或问题。加起来,有超过 100 行需要处理和显示。

目前,我有一个视图助手,它使用递归进行所有处理以检索 question_group 的子项(一个在两个表之间执行 UNION 的查询:QuestionGroup::getChildren($id))。此外,当显示带有问题响应的问卷时,需要额外的两个查询来检索受访者及其对每个问题的回答。

虽然页面加载时间不是很长,但这种方法感觉不对。递归加上几乎每个节点的多个数据库查询,并没有让我内心感到很温暖和模糊。

我已经在从 UNION 返回的完整树数组上尝试了无递归和递归方法,以构建一个分层数组来遍历和显示。但是,由于组和问题存储在单独的表中,因此存在重复的节点 ID,这似乎被打破了。也许我在那里遗漏了一些东西......

目前,以上面列出的格式显示树的逻辑相当混乱。我不想到处重复遍历逻辑。然而,到处都是条件语句也不会产生最容易维护的代码。我已经阅读了有关访问者、装饰器和一些 PHP SPL 迭代器的信息,但我仍然不清楚它们如何与扩展 Zend_Db_Table、Zend_Db_Table_Rowset 和 Zend_Db_Table_Row 的类一起工作。特别是因为我还没有解决以前从数据库构建层次结构的问题。稍微轻松地添加新的显示格式(或修改现有的)会很好。

0 投票
1 回答
407 浏览

php - 帮助在列 PHP MySQL 中显示数据(修改的预序树遍历)

您好,我正在尝试使用下面的代码获得多列显示(如果可以这样调用),结果如下:替代文字 . 有人能看出为什么这些叶子是坏的吗?或者请告诉我哪个更好:链接到子类别的类别表或邻接模型列表。

序列化版本链接文本

0 投票
1 回答
696 浏览

php - 邻接表模型+网站导航

我正在使用邻接列表模型在我的网站中查找子类别。我有工作 PHP 代码来查找所有类别和子类别,但现在我无法弄清楚如何使用它来创建导航系统。以下是该网站的工作方式,非常基本:

URL 字符串 会有一个主类,后面是层级

index.php?category=category-name&level1=sub-category&level2=another-sub-category&level3=content-item

稍后我将制作 SEO 友好的链接。

没有子类别的 URL 其中级别 1 是内容项

www.website.com/category/content-item/

带有子类别的 URL 其中级别 1、2、3 等是子类别,最终级别是内容项

www.website.com/category/sub-category/sub-category-2/content-item/

这是我用来查找类别和子类别的代码。目前它只输出所有类别和子类别的列表以及每个孩子的级别。不确定这是否有帮助,它只是创建一个列表。

0 投票
1 回答
158 浏览

database-design - 构建嵌套集

我需要帮助我正在处理的一个项目:假设所有输入没有特定顺序,我如何在嵌套集模型中计算左右。

分发了 4 张表格,每张表格带 4 人,每 4 人带另外 4 人。该网络向下增长直到 7 代。假设我决定选择任何级别的节点,我如何找到下线和上线?

解释:

等等等等。在第 7 代,我们经历了停顿。同时,每个节点开始一个沿袭下词。

0 投票
0 回答
436 浏览

mysql - 文件权限的嵌套集或邻接列表模型 (MySQL)

问题:

在 MySQL 数据库中存储所有用户文件/文件夹权限时应该使用什么设计?

细节:

我无法确定嵌套集是否需要太多插入时间,或者邻接列表是否需要太多访问分层数据的时间。我很确定随着文件/文件夹数量的增加,嵌套集会花费很长时间。例如,插入一个节点(行)需要在遍历该节点之后更新每个单个节点。是否可以在路径上使用字符串标记化(即/home/user/pictures --> /, /home, /home/user)并在查询中使用它,相当于可变长度邻接列表模型?第三种选择是拥有一个parent_folders执行完全相同功能但使用更多空间而不是更多时间的表。

以下是对filesfolders表的简要描述:

文件:

文件夹:

这是上面的两个表,经过修改并带有潜在parent_folders表:

文件:

文件夹:

父文件夹:

0 投票
0 回答
249 浏览

php - 如何适配 Jstree 使用邻接模型?

Jstree 使用嵌套集的方法,虽然静态内容可行,但我们与 Ivan Bozhanov 讨论了关于重新使用我们的表以允许每个用户对其进行操作的要求,他建议我们应该使用邻接模型。

我在 PHPClasses 找到了这个库,因为这是我最后的手段,jstree.com/demo 上的文档中没有太多关于它的内容,但是.. 如果我想与 jstree 一起使用,我需要执行哪些步骤有效?

http://www.phpclasses.org/package/6135-PHP-Create-and-manipulate-adjacency-lists-in-MySQL.html

提前感谢您提供的任何指导!J.P-

0 投票
1 回答
510 浏览

php - 按字母顺序对邻接列​​表子项进行排序

如果我有一个按 id/parent_id 排序的邻接列表,是否有一种简单的方法可以通过第三个文本字段(比如“名称”)按字母顺序对所有父母的孩子进行排序?

我使用了此处提供的信息:http: //explainextended.com/2009/03/17/hierarchical-queries-in-mysql/让 MySQL 返回排序的邻接列表。理想情况下,这将允许我按第三列对子项进行排序,但测试数据集在该示例中根本不包含额外的列。

我的数据在查询后看起来像这样,但它需要按字母顺序按后代排序。

或者:

我需要这样排序:

谢谢!

0 投票
1 回答
623 浏览

mysql - 在相邻列表模型中以类别和父级的层次关系将产品插入表中

我有一个由邻接列表模型组成的表类别:

和 product_category 表:

并有一个产品表:

我如何将产品插入到具有父 ID 链接的表中,然后它又具有到类别的链接。这样我就可以从 parent_id 和类别中检索产品。我应该将 parent_id 定义为主键吗.. 帮助表示赞赏.. 提前谢谢..

0 投票
1 回答
961 浏览

asp.net - 使用邻接表模型的在线系统数据库设计

我正在尝试使用 asp.net c# 和 mysql 创建一个在线购物应用程序,我有很多类别,它们有两个级别的子类别,有些类别没有子类别,有点像:

*我的第一个问题是- *我是否应该使用邻接表模型为每个类别创建单独的表,因为我已经开始了解这个模型并且我已经看到在邻接表模型中只使用一个根节点的示例。
*我的第二个问题是- *我是否可以在邻接列表模型中添加多个根节点,并且可以添加添加产品并使用父节点遍历特定类别。谢谢..帮助表示赞赏..