基于左右值的无限级分类算法(1) – 插入节点

原创文章,未经允许,请勿转载!

关系型数据库一般都是以平面方式来存储我们的数据,这就造成了我们在实现一些数据结构上的麻烦,比如说如何实现高效的无限级的网站分类,这里MySQL的《Managing Hierarchical Data in MySQL》给出了一个比较好的办法,基于一种左右值的算法,这也是我目前接触到的查询比较高效的算法了,另外Gijs Van Tulder在sitepoint也写过一篇《Storing Hierarchical Data in a Database》文章专门讲解这个算法,我在这里再总结一下,首先看下面的这张图:

基于左右值无限级分类.png

通过这张图大家应该能很清晰的看出对于一种简单的树形结构分类的左右值处理的方式,这是一种类似于树的深度优先的遍历,其次这些左右权值很清晰的表明了一种隶属的包含关系,比如Fruit的左右值分别为1~6,那么说,所有在这个之间的值都是其子节点(Child Node)。对于数据库的遍历,我们可以很轻松的指定一个范围,然后执行一条SELECT查询语句。

继续阅读“基于左右值的无限级分类算法(1) – 插入节点”