The Nested Model 树形结构
先把树按水平的方式摆开,如下图
? 然后按前序遍历的方法,为每一个结点编号,每一个结点都有左、右的编号,根结点从1开始开始计算。我们分别把左右编号称为左值和右值。
? 根据前序遍历的规律,我们可以知道,每一个结点的子结点的左值比父结点左值大而比父结点的右值小。例如 Fruit(2,11) 的子结点 Red(3,6)、Cherry(4,5)、 Yellow(7,10)、Banana(8,9) ,可以看到Red、Cherry、Yellow、Banana的左值均比Fruit大,而右值均比Fruit小。
数据库设计如下:
常用到的SQL语句:
返回完整的树(Retrieving a Full Tree)LOCK TABLE nested_category WRITE;SELECT @myLeft := lft, @myRight := rgt, @myWidth := rgt - lft + 1 FROM nested_category WHERE name = 'GAME CONSOLES';DELETE FROM nested_category WHERE lft BETWEEN @myLeft AND @myRight;UPDATE nested_category SET rgt = rgt - @myWidth WHERE rgt > @myRight;UPDATE nested_category SET lft = lft - @myWidth WHERE lft > @myRight;UNLOCK TABLES;?
?