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


設計一個無限級分類的數據表是一個很常見的數據庫任務。比如你寫一個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 優先級,越大,同級顯示的時候越靠前

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM