MySQL基礎入門學習 9 無限級分類表設計

2022-08-13 10:33:15 字數 1955 閱讀 9868

比如: 圖書/**、文學.../四大名著、戲曲.../...

理論上可以設計很多張表;

但是隨著分類逐步增多,這些表的數目不可能無限擴充套件;

所以對於無限級分類表一般我們採用如下形式(通過自身的連線來實現的):

這個例子中我們至少設計三個字段: 分類的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無限級分銷, PHP無限級分銷

需求 a推薦b,b推薦c c推薦d 永遠不斷,不限制推薦層級 每個人只允許有乙個上線 根據下線的人數設定規則規則,也可實現五級三晉制 資料結構為 典型的樹結構 需解決的問題 1 快速查詢某人的所有上線 2 快速查詢某人的所有下線 3 快速為某人增加乙個下線 解決方案 有四種 一 鄰接表 依賴父節點 ...

mysql部門無限分類 mysql 無限級分類

兩種思路吧,遞迴 和 非遞迴 遞迴 arr 1 id 1,pid 0 2 id 2,pid 0 3 id 3,pid 1 4 id 4,pid 1 5 id 5,pid 0 6 id 6,pid 3 7 id 7,pid 6 8 id 8,pid 3 9 id 9,pid 4 10 id 10,pi...

mysql入門基礎學習

日期型別 date 可以賦值字元格式的自定義日期格式,也可以使用curdate 函式,current date 函式等 decimal a,b a表示一共可以傳入的字元長度,b表示小數字的保留位數.除了數值型別外,其它的字段型別的值必須使用引號引起 dos命令列輸入中文,暫時改變編碼格式 set n...