- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如您所知,类别在分层模型中看起来像这样。
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/
我正在尝试添加一个新的后代,但很难实现它,它显示了一些错误,如果您能花时间回顾一下我迄今为止所做的事情,我将不胜感激。 这里 Controller public function index() {
我目前正在做一个 PoC 并面临闭包表的问题。我正在使用 Saiku CE,数据库是 postgres。一切正常,直到我添加一个闭包表。如果我删除闭包表层次结构,我不会收到任何错误。如果保留它,我会收
我有一组在 SQL Server 数据库中使用的分层数据。数据存储时使用 guid 作为主键,使用 ParentGuid 作为指向对象直接父对象的外键。我最常通过 WebApi 项目中的 Entity
我是一名优秀的程序员,十分优秀!