第一种:4个表 实现四级分类
一级表:ID1,IDName
二级表:ID2,IDname,FID(上一级id)
三级表:ID3,IDname,FID(上一级id)
四级表:ID4,IDname,FID(上一级id)

第二种:用树形结构表实现无限制级分类
表结构:id,fid(上一级id),idname

第三种:用编码的形式将fid和id的信息放在一个表里
用32(4+7+7+7+7)位整数来编码,其中,第一级分类有4位,可以表达16种分类。第二级到第五级分类分别有7位,可以表达128个子分类。
易趣好像就用的是这种方法

============================================================================

第二种不错,无限级分类,效率也可以。
通常这种表应该多一个Path字段,例如:
ID ParentID Path
1 0 1
2 1 1.2
3 1 1.3
4 3 1.3.4
这样你在搜索某一个类别的所有子类别时可以用Like来匹配,例如你要找出ID=2的类别的子类,先获得它的Path=”1.2″,然后用Path Like “1.2%”的方式就可以获得它的所有子类。

至于第三种,在算法的角度来说是非常高效的,但他对类别的级数和每一级类别的类别数上限都做了定义,是不能改变的。做个类比吧,我们熟悉的IP格式 是 000.000.000.000,你可以直接认为是一个四级类别,每级最多有256个类别。同时000.000.000.000也可以转换为一个十位的整 数来进行保存,例如你需要找10.128.*.*的所有类别,只需要把10.128.0.0和10.128.255.255转换为对应十位整数,就把 10.128.*.*对应类别的范围给找出来了。
在这里,你不一定采用4-7-7-7-7的方式,而可以根据你的需要来定义,而且上限不一定是2的n次方(例如你确定了第一大类只有6类,你可以直接使用6作为上限以节省空间。如果你确实需要该算法,请发信息给我)。