gpt4 book ai didi

mysql - 在闭包表模型中有多个根?

转载 作者:行者123 更新时间:2023-11-30 22:28:55 29 4
gpt4 key购买 nike

如您所知,类别在分层模型中看起来像这样。

Books             Electronic Devices
>Programming >Apple
>>C++ >>MacBook pro
>Cars >Samsung
>Cocking >Asus

等...
我创建了一个带有 category_closure 表的 categories 表。
所以我有这两张表:

'For category_closure table:'
id, parent_id, title, etc...
"parent_id is null by default"

And for category_closure table:
ancestor, descendant, depth

我看过很多关于闭包表模型的文章,但它们没有展示如何获取一个表的完整树路径,该表具有多个具有 null 值的 parent_id 或者简单地说,有更多不止一个根。

最佳答案

几年前我不得不解决一个类似的问题,我最终创建了一个基于 this article by Mike Hillyer on the Nested Set Model 的混合解决方案。 .我不知道这是否与您的表模型兼容,但至少它应该是一本有趣且内容丰富的读物。基本思想是这样的:

目前您正在使用一个称为邻接表模型的模型,其中每个节点都包含对其父节点的引用。这对于浅层次结构很有用,在这种层次结构中您只有几个级别的数据,或者如果您只需要获取特定节点的直接子节点。

如果您希望能够获取特定节点的所有后代(例如,获取所有主题的书籍列表),邻接列表模型会变得有点笨拙。对于这些情况,我建议使用嵌套集模型。嵌套集模型根据每个节点在层次结构中的位置为每个节点提供一个“左”值和一个“右”值(这篇文章向您介绍了如何分配这些值,比我希望在我的答案中复制的更详细).因此,如果您想选择一个节点的所有后代,您只需查找其左(或右,这无关紧要)值介于目标节点的左右值之间的节点。

在我的特定解决方案中,我在我的表中实现了这两个模型,并根据我需要的数据最方便的模型进行了选择。这确实增加了少量开销来更新我的数据中的操作,但对于我正在处理的应用程序来说,这是一个可以接受的权衡。

希望对您有所帮助!

关于mysql - 在闭包表模型中有多个根?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34415194/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com