• 先设计一个无限级分类的数据表吧

    从设计表开始
    服务器君一共花费 82.511 ms 进行了 3 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    设计一个无限级分类的数据表是一个很常见的数据库任务。比如你写一个CMS,需要有4,5级分类的栏目,反正就是很普遍,所以还是需要了解一下。下面本专题的所有内容,都是我自己随手演示写写,仅仅供参考,绝不是标准答案。

    我们先设计一个数据表吧,一个可供无限级分类的数据表。

    SQL语句设计如下:

    CREATE TABLE `categories` (
      `id` int(10) unsigned NOT NULL auto_increment,
      `name` varchar(50) NOT NULL,
      `xname` varchar(50) NOT NULL,
      `parentid` int(10) default '0',
      `parentid_list` varchar(20) default '0',
      `depth` varchar(10) default NULL,
      `state` varchar(10) default '1',
      `priority` varchar(10) default '0',
      PRIMARY KEY (`id`)
    ) DEFAULT CHARACTER SET utf8;
    

    一会再介绍为什么字段要这么设计,先插入测试数据。顺便说下,数据是从亚马逊那里拿的几个栏目。

    -- ----------------------------
    -- Records of categories
    -- ----------------------------
    INSERT INTO `categories` VALUES ('1', '图书', null, '0', '1', '1', '1', '0');
    INSERT INTO `categories` VALUES ('2', '科技', null, '1', '1,2', '2', '1', '0');
    INSERT INTO `categories` VALUES ('3', '计算机/互联网', null, '2', '1,2,3', '3', '1', '0');
    INSERT INTO `categories` VALUES ('4', '医学', null, '2', '1,2,4', '3', '1', '0');
    INSERT INTO `categories` VALUES ('5', '自然与科学', null, '2', '1,2,5', '3', '1', '0');
    INSERT INTO `categories` VALUES ('6', '电脑办公', null, '0', '6', '1', '1', '0');
    INSERT INTO `categories` VALUES ('7', '电脑整机', null, '6', '6,7', '2', '1', '0');
    INSERT INTO `categories` VALUES ('8', '笔记本', null, '7', '6,7,8', '3', '1', '0');
    INSERT INTO `categories` VALUES ('9', '平板电脑', null, '7', '6,7,9', '3', '1', '0');
    INSERT INTO `categories` VALUES ('10', '服务器', null, '7', '6,7,10', '3', '1', '0');
    INSERT INTO `categories` VALUES ('11', '家用电器', null, '0', '11', '1', '1', '0');
    INSERT INTO `categories` VALUES ('12', '厨房电器', null, '11', '11,12', '2', '1', '0');
    INSERT INTO `categories` VALUES ('13', '电饭锅', null, '12', '11,12,13', '3', '1', '0');
    INSERT INTO `categories` VALUES ('14', '大家电', null, '11', '11,14', '2', '1', '0');
    INSERT INTO `categories` VALUES ('15', '冰箱', null, '14', '11,14,15', '3', '1', '0');
    

    插入数据之后,数据表大概就成了这个样子:

    现在就很直观了吧,每个字段大概有什么作用,应该也能看出来了。

    数据表字段简单说明:

    列名 数据类型 默认值 备注
    id int   自增主键
    name varchar(50)   分类类别名称
    parenid int 0 父母分类Id
    parenid_list varchar(20) 0 分类的层级关系,从最高级到自己
    Depth varchar(10) 1 深度,从1递增
    Status varchar10) 1 状态:0禁用,1启用
    Priority varchar(10) 0 优先级,越大,同级显示的时候越靠前

    大概就设计成这样,为什么要这样设计,后面章节慢慢叙述。当然会有设计上不合理的地方,仅仅抛砖引玉。

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [数据结构] 散列表(哈希表) 13 个条目
  2. [数据库技术] 数据库范式篇 5 个条目
  3. [Python程序设计] 标准库:urllib/urllib2 14 个条目
  4. [PHP程序设计] Nginx基本操作释疑 7 个条目
  5. [移动开发] Android开发基础知识 4 个条目
  6. [Python程序设计] Django架构流程分析 7 个条目
  7. [数据库技术] MySQL常用自带函数 3 个条目
  8. [移动开发] 刷机与root相关 2 个条目
  9. [软件工程与项目管理] 浏览器的HTML解析器 8 个条目
  10. [PHP程序设计] 命令式编程范式 6 个条目
  11. [移动开发] Android布局基本知识 3 个条目
  12. [Python程序设计] Django后台管理系统 2 个条目
窗口 -- [博客]