013. 嵌套集合模型(无限极分类)——kalnoy/nestedset(代替 baum/baum)

嵌套集合模型——kalnoy/nestedset

日常开发中你一定会遇到关于无限极分类相关的功能,通常情况下我们会使用递归来实现无限极分类,譬如增加一个 parent_id 的字段,来表示数据之间的父子关系,这种模型关系很简单,但是会带来一些问题:

  • 当需要知道两个节点的层级关系时,无法直接得出,需要递归获取并对比两个节点的父节点;
  • 需要通过递归的方式获取数据,会有效率问题;
  • 同一层级的两个节点之间没有先后关系,需要引入额外的字段进行排序。

为了解决上述问题,我们可以使用嵌套集合模型(Nested set model) ,它是一种在关系型数据库中表示嵌套集合的特殊技术。它会根据树遍历来对节点进行编号,遍历会访问每个节点两次,按访问顺序分配数字,并在两次访问中都分配。这将为每个节点留下两个数字,它们作为节点两个属性存储。这使得查询变得高效:通过比较这些数字来获得层级结构关系。当然查询效率提升的代价就是,更新数据需要给节点重新分配数字,因此在更新时会变得低效。

上面这段话可能不是很好理解,我们来看一个维基百科中的...

本文章首发在 LearnKu.com 网站上。

为了保证课程的高品质,我们需要对课程进行收费。付费后 才能观看剩余内容。 购买

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
贡献者:1
讨论数量: 3

silen
请问更新父节点关系怎么做
0 个点赞 | 3 个回复 | 问答
dptms
无限分类,相对层级?
0 个点赞 | 2 个回复 | 问答