MySQL基礎入門學習【9】無限級分類表設計
阿新 • • 發佈:2018-03-31
父親 連接 參照物 insert gpo 平板電視 生活電器 type mysql
比如: 圖書/小說、文學.../四大名著、戲曲.../...
理論上可以設計很多張表;
但是隨著分類逐步增多,這些表的數目不可能無限擴展;
所以對於無限級分類表一般我們采用如下形式(通過自身的連接來實現的):
這個例子中我們至少設計三個字段: 分類的id、分類的名稱、父類的id.
插入記錄:
INSERT tdb_goods_types(type_name,parent_id) VALUES(‘家用電器‘,DEFAULT); INSERT tdb_goods_types(type_name,parent_id) VALUES(‘電腦、辦公‘,DEFAULT); INSERT tdb_goods_types(type_name,parent_id) VALUES(‘大家電‘,1); INSERT tdb_goods_types(type_name,parent_id) VALUES(‘生活電器‘,1); INSERT tdb_goods_types(type_name,parent_id) VALUES(‘平板電視‘,3); INSERT tdb_goods_types(type_name,parent_id) VALUES(‘空調‘,3); INSERT tdb_goods_types(type_name,parent_id) VALUES(‘電風扇‘,4); INSERT tdb_goods_types(type_name,parent_id) VALUES(‘飲水機‘,4); INSERT tdb_goods_types(type_name,parent_id) VALUES(‘電腦整機‘,2); INSERT tdb_goods_types(type_name,parent_id) VALUES(‘電腦配件‘,2); INSERT tdb_goods_types(type_name,parent_id) VALUES(‘筆記本‘,9); INSERT tdb_goods_types(type_name,parent_id) VALUES(‘超級本‘,9); INSERT tdb_goods_types(type_name,parent_id) VALUES(‘遊戲本‘,9); INSERT tdb_goods_types(type_name,parent_id) VALUES(‘CPU‘,10); INSERT tdb_goods_types(type_name,parent_id) VALUES(‘主機‘,10);
舉例說明:
這裏家用電器、電腦辦公為頂級分類,沒有父親節點,因此parent_id 為0
大家電、生活電器是家用電器的子類,parent_id為1
平板電視、空調屬於大家電 --> 3
電風扇、飲水機屬於生活電器 --> 4
以此類推...
通過【自身連接】實現查找: 同一個數據表對其自身進行連接。一定要取別名,否則無法區分!!!
想象現在在上圖的表的右側有一個結構一模一樣的表,想好哪個是父表哪個是子表;
例如右邊是子表(查詢表)、左邊是父表,則左表中的parent_id就沒有用了,因為子表中的parent_id字段指向的是父表中的type_id字段
我們也可以查找子類、父類和父類下的子類:
參照物不同,現在參照父
父類以及父類下的子類的數目:
MySQL基礎入門學習【9】無限級分類表設計