1. 程式人生 > >[收集] 各式各樣的 無限級分類 的數據庫設計方案

[收集] 各式各樣的 無限級分類 的數據庫設計方案

where 數據庫 位數 sel 其中 三級 mat sco tiny

第一種方案:

表為兩張,一張分類表,一張信息表。
表1:
`ID` int(10),
`cID` tinyint(3) ,
`title` varchar(255),
表2:
`cID` tinyint(3) ,
`parentID` tinyint(3),
`order` tinyint(3) ,
`name` varchar(255),

這樣可以根據cID = parentID來判斷上一級內容,運用遞歸至最頂層 。

第二種方案:

設置parentID為varchar類型,將父類id都集中在這個字段裏,用符號隔開,比如:1,3,6
這樣可以比較容易得到各上級分類的ID,而且在查詢分類下的信息的時候,可以使用如:Select * From information Where cID Like "1,3%"。不過在添加分類和轉移分類的時候操作將非常麻煩。

第三種方案:

每級分類遞增兩位數字,這樣,每級分類的數目限定在100個之間,分類方法主要為編碼法;
示例:
一級分類:01,02,03
二級分類:0101,0102,0103,0201,0202........
三級分類:010101,010102,010103,010104..........

數據庫查詢時使用 like ‘01%‘就可得到一級分類01下的所有子分類,非常方便!
如果要列出所有分類的樹型結構,只需用一條語句select * from pro_class order by code,再稍微處理一下就可。(其中,pro_class為產品分類表,code為類別編碼)。


設計的數據庫結構如下:
id: 類別id,主鍵
classname: 類名
classcode: 類別編碼
parent: 父id
left_child: 最左孩子id(或第一個孩子)
right_sibling: 右兄弟id
layer: 層級(第一級類別為1,第2級類別2,以此類推)

[收集] 各式各樣的 無限級分類 的數據庫設計方案