zoukankan      html  css  js  c++  java
  • 设计一个无限级分类的数据表

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

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

    SQL语句设计如下:

    01 CREATE TABLE `categories` (
    02   `id` int(10) unsigned NOT NULL auto_increment,
    03   `namevarchar(50) NOT NULL,
    04   `xname` varchar(50) NOT NULL,
    05   `parentid` int(10) default '0',
    06   `parentid_list` varchar(20) default '0',
    07   `depth` varchar(10) default NULL,
    08   `state` varchar(10) default '1',
    09   `priority` varchar(10) default '0',
    10   PRIMARY KEY (`id`)
    11 DEFAULT CHARACTER SET utf8;

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

    01 -- ----------------------------
    02 -- Records of categories
    03 -- ----------------------------
    04 INSERT INTO `categories` VALUES ('1''图书'null'0''1''1''1''0');
    05 INSERT INTO `categories` VALUES ('2''科技'null'1''1,2''2''1''0');
    06 INSERT INTO `categories` VALUES ('3''计算机/互联网'null'2''1,2,3''3''1''0');
    07 INSERT INTO `categories` VALUES ('4''医学'null'2''1,2,4''3''1''0');
    08 INSERT INTO `categories` VALUES ('5''自然与科学'null'2''1,2,5''3''1''0');
    09 INSERT INTO `categories` VALUES ('6''电脑办公'null'0''6''1''1''0');
    10 INSERT INTO `categories` VALUES ('7''电脑整机'null'6''6,7''2''1''0');
    11 INSERT INTO `categories` VALUES ('8''笔记本'null'7''6,7,8''3''1''0');
    12 INSERT INTO `categories` VALUES ('9''平板电脑'null'7''6,7,9''3''1''0');
    13 INSERT INTO `categories` VALUES ('10''服务器'null'7''6,7,10''3''1''0');
    14 INSERT INTO `categories` VALUES ('11''家用电器'null'0''11''1''1''0');
    15 INSERT INTO `categories` VALUES ('12''厨房电器'null'11''11,12''2''1''0');
    16 INSERT INTO `categories` VALUES ('13''电饭锅'null'12''11,12,13''3''1''0');
    17 INSERT INTO `categories` VALUES ('14''大家电'null'11''11,14''2''1''0');
    18 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 优先级,越大,同级显示的时候越靠前

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

  • 相关阅读:
    07_zookeeper的客户端工具curator_基本api
    06_zookeeper原生Java API使用
    05_zookeeper的ACL
    04_zookeeper的watcher机制
    03_Zookeeper基本数据模型及基本命令操作
    02_zookeeper配置
    01_Zookeeper简述
    thinkphp之url的seo优化
    thinkphp Upload上传文件在客户端生成的临时文件$_FILES['file']['tmp_name']
    php过滤表单输入的emoji表情
  • 原文地址:https://www.cnblogs.com/tsql/p/9025123.html
Copyright © 2011-2022 走看看