zoukankan      html  css  js  c++  java
  • 无限级分类的数据库设计思考

    无限级分类的数据库设计

    简单需求分析:
       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。不过在添加分类和转移分类的时候操作将非常麻烦。

       我就说到这里,请大家讨论一下如何能够最简单的方法实现无限级分类——考虑性能,代码的简练性,前后台操作的容易性,扩展性!
  • 相关阅读:
    Eclipse Notepad 插件
    Apache Subversion command line tools 命令行工具,可以用bat更新提交了
    兼容IE的Canvas
    CentOS访问Windows磁盘分区
    [ServiceStack.Text] .net序列化,反序列化组件(号称最快,支持 JSON,XML,JSV格式)
    使用 aspectjmavenplugin 编绎打包 使用aspectJ 的maven项目
    redis学习
    全面转向VS2005
    Orc vs Elf
    MSDN Library May 2006 Edition
  • 原文地址:https://www.cnblogs.com/yhb199/p/1233155.html
Copyright © 2011-2022 走看看