数据库设计无限级分类

简单需求分析:
1.实现无限级分类。
2.实现无限级链接导航
3.实现逐级分类下各条信息的查询,包括最多浏览量,最多评论量,最新信息。
4.随意转移子分类到任何级别而不用修改分类下的信息表
5.使用最少的参数得到所要的信息,URL参数最好只有一个,比如cID=1或者ID=1
6.不管多少级,只有一个PHP文件实现类列表和各种方式的信息调用。

表为两张,一张分类表,一张信息表。
信息表如下:

`ID` int(10) unsigned NOT NULL auto_increment,
`cID` tinyint(3) unsigned NOT NULL default '0',
`title` varchar(255) NOT NULL default 'No Title',
`content` mediumtext NOT NULL,

最简单的无限级分类数据表,只是设置一个parentID来判断父ID
数据表如下:

`cID` tinyint(3) unsigned NOT NULL auto_increment,
`parentID` tinyint(3) unsigned NOT NULL default '0',
`order` tinyint(3) NOT NULL default '0',
`name` varchar(255) NOT NULL default '',

这样可以根据cID = parentID来判断上一级内容,运用递归至最顶层。
缺点是只能查询最小分类下的信息。这样就不能完成需求3、4点,而第二点也勉强符合


第二种方法是设置parentID为varchar类型,将父类id都集中在这个字段里,用符号隔开,比如:1,3,6
这样可以比较容易得到各上级分类的ID,而且在查询分类下的信息的时候,可以使用如:Select * From information Where cID Like "1,3%"。这样能比较好解决需求3。不过在添加分类和转移分类的时候操作将非常麻烦。

我就说到这里,请大家讨论一下如何能够最简单的方法实现无限级分类——考虑性能,代码的简练性,前后台操作的容易性,扩展性!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竖子敢尔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值