存储树形结构是个很常见问题他有好几种解决方案主要有两种思路方法:邻接列表模型和改进前序遍历树算法
在本文中我们将探讨这两种保存层次数据思路方法我将举个在线食品店树形图例子这个食品店通过类别、颜色和品种来组织食品树形图如下:
在MYSQL中数据表大致上是
CREATE TABLE Table_Types
(
id INTEGER NOT NULL AUTO_INCREMENT,
parent_id INTEGER,
node VARCHAR(255),
PRIMARY KEY (id)
)
如上图紫色是数据记录ID号框内数字是每条记录node字段记录了该记录父ID和父ID父ID和...
这样假如我们要在ID为7记录下插入条新ID为13记录新记录node就是1,2,7,13
要找个节点下所有子节点就无需用递归只要个SQL
如“查ID为2记录下所有子节点”
select * from Table_Types where node like "1,2,%"
大家探讨下该算法有效性和不足!
上次看到左右值算法虽然在搜索方面很不错但是如果是插入频繁应用性能就很差了每次插入新节点都需要update该父节点以下 所有记录右值而上面这个算法对插入操作尤其简单只要找到父ID根下来就可以了搜索方面好像也还不错都是避免了递归
最新评论