新闻中心 分类>>

AG九游会真人官网登录网址MySQL中的常用树形结构设计总结

2024-07-15 06:52:00
浏览次数:
返回列表

  AG九游会真人官网登录网址MySQL中的常用树形结构设计总结开发中,经常会遇到树形结构的设计,所谓的树形结构,其实就是数据与关系的设计,本文用来总结常用的树形结构设计

  注意:在数据量少的情况下,一次加载所有节点,无大影响;数据量大的情况,建议懒加载(逐层加载)

  工作中(尤其是传统项目中)经常遇到这种需要,就是树形结构的查询(多级查询),常见的场景有:组织架构(用户部门)查询 和 多级菜单查询

  对于层级固定,层级数少的,一般3级,需求实现很简单,先查询最小子级,再依次查询上级,最后再组装返回给前端就是了。

  那么问题来了,如果层级数很大,10级,或者干脆层级不确定,有的3级AG九游会真人官网登录网址,有的5级,有的8级,与之前的层级固定,层级数相比,显然问题更复杂了,我们来看看这种怎么处理

  查询过程:查询出tree, 根据tree的 parent_id 查询出二级tree, 同样的方式再去查询出一级tree, 后端组装成树状数据,返回给前端。

  这种情况,我们首先想到的就是子查询或者联表查询,但是肯本不能在实际开发中使用,原因大家都知道:

  表中 depth 字段表示的是: 当前节点 tree_id 到 根节点 root_id 的深度,不是当前节点所在整个分支的深度,所有节点相对于自身的深度都是0

  直接查 tree 中所有 level = 1 的节点,在出去这些节点的 id 根据 parent_id 去查下级节点, 查询完所有的节点,就可以组装成一个完整的树状图返回给前端

  1.多级查询、查询本质就是树形结构的遍历,推荐使用多级查询的方式,相比查询多级查询的方式抓住了树形结构遍历的本质,方便扩展和维护。

搜索