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

    从设计表开始
    服务器君一共花费 21.980 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. [Python程序设计] Django与表单 4 个条目
  2. [软件工程与项目管理] 了解一点WebKit 9 个条目
  3. [软件工程与项目管理] 开始了解Git 5 个条目
  4. [Python程序设计] Tornado背景知识介绍 4 个条目
  5. [数据库技术] 数据库范式篇 5 个条目
  6. [移动开发] Android属性系统Property 9 个条目
  7. [数据库技术] MySQL常用自带函数 3 个条目
  8. [移动开发] Android布局中的一些常用控件 2 个条目
  9. [JavaScript程序设计] Web实时通信技术名词解析 5 个条目
  10. [移动开发] Android里的ContentValues 2 个条目
  11. [Python程序设计] Django数据库模型 6 个条目
  12. [Python程序设计] Django Web环境配置 2 个条目
窗口 -- [博客]