zoukankan      html  css  js  c++  java
  • php web开发之分类设计

    分类是每个网站必不可少的表的,本次讲的分类设计,并不是无限分类是根据自己的需求可以设置分类的嵌套层数。并且支持一条sql读取属于某个分类的所有子分类

    首先看看表的设计:

    create table category (
    
       id smallint(10) not null auto_increment primary key,
    
     name varchar(50) not null,
    
       depath tinyint(1) default 0,
    
     prefix  binary(16) not null, #此处是关键,后面说明
    
       description varchar(100) not null default "",
    
      countrs int(11) not null default 0,
    
       index(prefix)) engine = myisam
    
    alter table category add unique index id
    

    表建立好后。关键是在添加和删除的时候做一点点算法

    首先看看 0100000000000000 第一个,第二个 02000... 03 ...FF 能表示255个分类,相信一般的网站一层255分类足够使用了。

    第二层表示成 0101000000000000 这个表示01下第一层的第一个,其他可以表示成为 0102....01FF

    第三层0101010000000000 ..... 0101FF0000000000

    从上面来看binary 长度为16也就是只能表示16/2层

    1、如何查询某个分类下面的所有分类呢?

          

    select * from category where prefix>0100000000000000 and prefix<0200000000000000
    

     

    2、获取当前分类的路径

          比方说一个分类010F0F0F00000000

         那么首先通过程序分解成

        A=  0100000000000000

        B=  010F000000000000

        C=  010F0F0000000000

        D=  010F0F0F00000000

       

     select * from category where prefix = A and prefix = B and prefix = C and prefix = D
    

    这样就取得路径

    3、关于统计

          在某个分类添加内容的时候更新最底层的category countrs 累加1

    如你有什么看法和建议欢迎一起探讨

  • 相关阅读:
    VBA 的编写与执行
    C# eBook
    【转】Winfrom datagridview 打印
    jquery循序渐渐1
    C# 数据库备份及还原
    Asp.net调用RAR压缩 解压文件
    SQL Server 2005下的分页SQL
    优秀文档收藏
    动态传入“表名,字段名,字段类型,默认值”四个字符串,根据新的字段名称和类型来创表表结构
    一句话搞定生日提示
  • 原文地址:https://www.cnblogs.com/mklp98999/p/3396746.html
Copyright © 2011-2022 走看看