一直考虑 关系型数据库 中实现无限分类的高效办法
尝试过 编码法 但发现限制颇多最终放弃了
也尝试过一般论坛使用的分类方法 但总觉得维护不是很方便
至于更高级的分类算法 限于自身数学水平有限 也就不考虑
而然想到 用 Xml 存储结构 数据库记录数据和结果
Xml 存储树型结构有着与身具来的优越性 而且这样维护 比较简单, 也不要用递归
xml 存储结构后 用 Xsl 格式化 直接得到适合数据库用的平行分类数据
然后直接入库就可以了
但还是一个小问题 就是分类一多 更新的条目就比较多了
但也可以通过判断 把更新控制在 1-2 个大类下
这样相对来说 更新条目会少点
以下是简单示例 至于 Xsl 卖个关子 保密下
Xml 分类结构文件
<?
xml version="1.0" encoding="utf-8"
?>
< Categorys >
< Category ID ="1" RootID ="1" >
< Category ID ="3" RootID ="1" >
< Category ID ="4" RootID ="1" >
< Category ID ="7" RootID ="1" />
</ Category >
</ Category >
< Category ID ="5" RootID ="1" >
< Category ID ="6" RootID ="1" >
< Category ID ="8" RootID ="1" />
</ Category >
</ Category >
</ Category >
< Category ID ="2" RootID ="2" />
</ Categorys >
< Categorys >
< Category ID ="1" RootID ="1" >
< Category ID ="3" RootID ="1" >
< Category ID ="4" RootID ="1" >
< Category ID ="7" RootID ="1" />
</ Category >
</ Category >
< Category ID ="5" RootID ="1" >
< Category ID ="6" RootID ="1" >
< Category ID ="8" RootID ="1" />
</ Category >
</ Category >
</ Category >
< Category ID ="2" RootID ="2" />
</ Categorys >
Xml 分类运算结果文件
<
Categorys
>
< Category ID ="1" RootID ="1" ParentID ="0" Depth ="0" ChildCount ="6" ParentList ="" ChildList ="3,5" Sort ="1" />
< Category ID ="3" RootID ="1" ParentID ="1" Depth ="1" ChildCount ="2" ParentList ="1" ChildList ="4" Sort ="2" />
< Category ID ="4" RootID ="1" ParentID ="3" Depth ="2" ChildCount ="1" ParentList ="1,3" ChildList ="7" Sort ="3" />
< Category ID ="7" RootID ="1" ParentID ="4" Depth ="3" ChildCount ="0" ParentList ="1,3,4" ChildList ="" Sort ="4" />
< Category ID ="5" RootID ="1" ParentID ="1" Depth ="1" ChildCount ="2" ParentList ="1" ChildList ="6" Sort ="5" />
< Category ID ="6" RootID ="1" ParentID ="5" Depth ="2" ChildCount ="1" ParentList ="1,5" ChildList ="8" Sort ="6" />
< Category ID ="8" RootID ="1" ParentID ="6" Depth ="3" ChildCount ="0" ParentList ="1,5,6" ChildList ="" Sort ="7" />
< Category ID ="2" RootID ="2" ParentID ="0" Depth ="0" ChildCount ="0" ParentList ="" ChildList ="" Sort ="8" />
</ Categorys >
< Category ID ="1" RootID ="1" ParentID ="0" Depth ="0" ChildCount ="6" ParentList ="" ChildList ="3,5" Sort ="1" />
< Category ID ="3" RootID ="1" ParentID ="1" Depth ="1" ChildCount ="2" ParentList ="1" ChildList ="4" Sort ="2" />
< Category ID ="4" RootID ="1" ParentID ="3" Depth ="2" ChildCount ="1" ParentList ="1,3" ChildList ="7" Sort ="3" />
< Category ID ="7" RootID ="1" ParentID ="4" Depth ="3" ChildCount ="0" ParentList ="1,3,4" ChildList ="" Sort ="4" />
< Category ID ="5" RootID ="1" ParentID ="1" Depth ="1" ChildCount ="2" ParentList ="1" ChildList ="6" Sort ="5" />
< Category ID ="6" RootID ="1" ParentID ="5" Depth ="2" ChildCount ="1" ParentList ="1,5" ChildList ="8" Sort ="6" />
< Category ID ="8" RootID ="1" ParentID ="6" Depth ="3" ChildCount ="0" ParentList ="1,5,6" ChildList ="" Sort ="7" />
< Category ID ="2" RootID ="2" ParentID ="0" Depth ="0" ChildCount ="0" ParentList ="" ChildList ="" Sort ="8" />
</ Categorys >