壹、分類模型設計
父類別ID parentID
類別編碼 ClassID
是否有子類別 Hchild 默認值0
分類名稱 ClassName
類別層次 ClassGrd 默認值1
二、類別編碼設計
從101開始編碼,子類別的編碼前綴與父類別相同
類別編碼
101
10101
10102
1010101
1010102
三、分類算法
0、計算當前分類ClassID的父類別
select * from table where ParentID=當前類別ParentID and ClassGrd=當前類別ClassGrd-1
1、計算當前分類ClassID的子類別
select * from table where ClassID like '%當前分類ClassID%' and ClassGrd=當前類別ClassGrd+1
2、計算當前分類ClassID的所有子類別
sub AllClass(ClassID,conn)
RsClassGrd=conn.execute(select ClassGrd from table where ClassID=ClassID)
RsCurClass=conn.execute(select * from table where ClassID like '%當前分類ClassID%' and ClassGrd=RsClassGrd(0)+1)
if not RsCurClass.eof
AllClass(RsCurClass("ClassID"),conn)
end if
end sub
3、添加分類
判斷是否為壹級分類
若是
計算現有分類的Max(parentID),
if Max(parentID)=null
新分類parentID=1
else
新分類parentID=Max(parentID)+1
end if
計算現有分類Max(ClassID)
if Max(ClassID)=null then
新分類ClassID="101"
else
新分類ClassID=Max(ClassID)+1
end if
新分類Hchild=0
新分類ClassGrd=1
否則
更新父分類ClassID的Hchild->1
計算父分類ClassID的ClassGrd
新分類ClassGrd=父分類ClassGrd+1
計算父分類ClassID的ParentID
新分類ParentID=父分類ParentID
計算父分類ClassID的子類別Max(ClassID)
if Max(ClassID)=null
新分類ClassID=父分類ClassID&"01"
else
新分類ClassID=父分類ClassID&Max(ClassID)+1
end if
新分類ClassName=xxxx
4、修改分類名稱
根據ClassID更新ClassName
5、刪除分類
判斷是否有子類別
若是
刪除當前分類及所有子類別
否則
刪除當前分類
若當前分類存在父分類(ParentID相同且ClassGrd相差1),則更新父分類