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

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

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

SQL语句设计如下:

01CREATE 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`)
11DEFAULT CHARACTER SET utf8;

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

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

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

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

数据表字段简单说明:

列名数据类型默认值备注
idint 自增主键
namevarchar(50) 分类类别名称
parenidint0父母分类Id
parenid_listvarchar(20)0分类的层级关系,从最高级到自己
Depthvarchar(10)1深度,从1递增
Statusvarchar10)1状态:0禁用,1启用
Priorityvarchar(10)0优先级,越大,同级显示的时候越靠前

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

转载于:https://www.cnblogs.com/tsql/p/9025123.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值