方案一:
表结构:
id int primary key auto_increment;
name varchar(40);
pid int default 0; #父类id,默认值为0
顶级分类的 pid 默认就是0了。当我们想取出某个分类的子分类树的时候,基本思路就是递归,当然,出于效率问题不建议每次递归都查询数据库,通常的做法是先将所有分类取出来,保存到PHP数组里,再进行处理,最后还可以将结果缓存起来以提高下次请求的效率。
优点:关系清楚,修改上下级关系简单
缺点:使用PHP处理,如果分类信息数量庞大,效率也会降低
方案二:
在表字段中增加一个 path 字段
id int primary key auto_increment;
name varchar(40);
pid int default 0; #父类id,默认值为0
path varchar(255); #记录从根分类到父类的路径,eg:0-1-5,数字是id