常用无限分类算法左右值无限分类实现的原理及算法

什么是左右值算法

左右值无限级分类,也称为预排序树无限级分类,是一种有序的树状结构,位于这些树状结构中的每一个节点都有一个“左值”和“右值”,其规则是:每一个后代节点的左值总是大于父类,右值总是小于父级。

处于这些结构中的每一个节点,都可以轻易的算出其祖先或后代节点。因此,可以用它来实现无限分类。

左右值无限分类示例

左右值算法优点

优点:

  • 通过一条SQL就可以获取所有的祖先或后代,这在复杂的分类中非常必要,通过简单的四则运算就可以得到后代的数量。
  • 特别适用于多层数据结构设计。

由于这种方法不使用递归查询算法,有更高的查询效率,采用左右值编码的设计方案,在进行类别树的遍历时,由于只需进行2次查询,消除了递归,再加上查询条件都为数字比较,效率极高。

缺点:

  • 分类操作复杂。
  • 牺牲了写的性能

数据表设计

Image

查询操作

得到某个节点下面的所有子节点,只需要where条件 左值大于该节点的左值 and 右值小于该节点的右值。

select * from classify where left_value>1 and right_value<6 order by right_value asc;

添加操作

变更所有的受影响的节点,给新节点腾出空位子,所有左节点比G节点大的,都增加2,所有右节点比G节点大的,也都增加2还是以男装举例,则sql语句如下:

update classify set left_value=left_value+2 where left_value>1;
update classify set right_value=right_value+2 where right_value>6;  

左右值这种方式很适合数据量庞大的时候用,由于这种方式可以不需要用递归查询,所以相比PID的方式有着更好的查询效率。

编辑于 2023-03-03 13:33
IP属地 黑龙江省
举报
评论