1. 程式人生 > >設計一個無限級分類的數據表

設計一個無限級分類的數據表

互聯 body varchar space 語句 HR creat line pla

設計一個無限級分類的數據表是一個很常見的數據庫任務。比如你寫一個CMS,需要有4,5級分類的欄目,反正就是很普遍,所以還是需要了解一下。下面本專題的所有內容,都是我自己隨手演示寫寫,僅僅供參考,絕不是標準答案。

我們先設計一個數據表吧,一個可供無限級分類的數據表。

SQL語句設計如下:

01 CREATE TABLE `categories` (
02 `id` int(10) unsigned NOT NULL auto_increment,
03 `name` varchar(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 優先級,越大,同級顯示的時候越靠前

大概就設計成這樣,為什麽要這樣設計,後面章節慢慢敘述。當然會有設計上不合理的地方,僅僅拋磚引玉

設計一個無限級分類的數據表