亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

sqlserver另類非遞歸的無限級分類(存儲過程版)

2024-08-31 00:58:42
字體:
來源:轉載
供稿:網友
下面是我統計的幾種方案:

第一種方案(遞歸式):

簡單的表結構為:
CategoryID int(4),
CategoryName nvarchar(50),
ParentID int(4),
Depth int(4)
這樣根據ParentID一級級的運用遞歸找他的上級目錄。
還有可以為了方便添加CategoryLeft,CategoryRight保存他的上級目錄或下級目錄

第二種方案:
設置一個varchar類型的CategoryPath字段來保存目錄的完整路徑,將父目錄id用符號分隔開來。比如:1,5,8,10

第三種方案:
每級分類遞增兩位數字的方法
示例:
一級分類:01,02,03,04...
二級分類:0101,0102,0103,0104...
三級分類:010101,010102,010103...

分析一下,其實第三種方案并不能真正意義上做無限級的分類,而第二種方案,雖然比較容易得到各上級及下級的分類信息。但,添加和轉移分類的時候操作將很麻煩。
而且,也完全違反了數據庫設計范式。

其實我也一直在用第二種方案的。為了查找方便,我有時都在新聞表里加上CategoryID和CategoryPath

而我今天要說的算法其實是第二種方案的改進版,一般做分類都是使用一個表格來保存分類信息。
而我這里,要新建兩個表格,一個表格是保存分類信息表,一個保存分類關系表。

表結構如下:
表1:tomi_Category
CategoryID int(4), '編號
CategoryName nvarchar(50), '分類名稱
Depth int(4), '深度
表2:tomi_CategoryBind
CategoryID int(4),
BindCategoryID int(4),
Depth int(4),

添加,編輯,刪除操作有點麻煩。。我是直接用存儲過程的。。不知道大家能看得懂不。。哈哈。
1、添加分類(Category_Add)

復制代碼 代碼如下:


CREATE proc [dbo].[Category_Add]
@CategoryName nvarchar(50),
@BindCategoryID int,
@CategoryID int output
as
declare @Success bit
set @Success=1

--生成不重復的CategoryID
declare @i bit
set @i=0
while @i=0
begin
set @CategoryID=LEFT(10000000 + CONVERT(bigint, ABS(CHECKSUM(NEWID()))), 8)
if(not exists(select CategoryID from tomi_Category where CategoryID=@CategoryID))
set @i=1
end


--得到depth
declare @depth int
set @depth=0
select @depth=depth from tomi_Category where CategoryID=@BindCategoryID
set @depth=@depth+1

--插入
BEGIN TRAN
insert into tomi_Category(categoryID,CategoryName,Depth) values(@CategoryID,@CategoryName,@Depth)
if(@@ERROR<>0)
BEGIN
ROLLBACK TRAN
set @Success=0
END

insert into tomi_CategoryBind(CategoryID,BindCategoryID,Depth) values(@CategoryID,@CategoryID,@Depth)
if(@@ERROR<>0)
BEGIN
ROLLBACK TRAN
set @Success=0
END

insert into tomi_CategoryBind(CategoryID,BindCategoryID,Depth) select @CategoryID,BindCategoryID,Depth from tomi_CategoryBind where CategoryID=@BindCategoryID
if(@@ERROR<>0)
BEGIN
ROLLBACK TRAN
set @Success=0
END
COMMIT TRAN

print @CategoryID


每個分類在tomi_CategoryBind有完整的目錄結構。。一個分類在tomi_CategoryBind的記錄數等于他在tomi_Category的depth值。

圖片:

以上是初稿,只是隨意的測試了幾次。。。有錯誤的,還請大家指出。。

呵呵。轉載請注明鏈接,博客園首發,多謝。
作者:TomiWong
時間:2010.07.18
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成人网av| 亚洲欧美综合精品久久成人| 欧美激情在线观看| 国产精品盗摄久久久| 国产网站欧美日韩免费精品在线观看| 成人性教育视频在线观看| 久久成人人人人精品欧| 最近2019中文免费高清视频观看www99| 欧美剧在线观看| 高跟丝袜欧美一区| 久久亚洲成人精品| 97视频网站入口| 国产色婷婷国产综合在线理论片a| 亚洲精品日韩av| 91最新在线免费观看| 久久99精品国产99久久6尤物| 久久99久久亚洲国产| 狠狠干狠狠久久| 亚洲国产成人精品久久| 亚洲精品wwww| 久久91亚洲精品中文字幕奶水| 久久久精品国产一区二区| 欧美激情一级二级| 亚洲精品黄网在线观看| 国模精品视频一区二区三区| 国产成人精品电影| 日韩电影中文 亚洲精品乱码| 91精品免费看| 亚洲男人天堂2024| 欧美国产日韩二区| 人人爽久久涩噜噜噜网站| 久久影院资源站| 91av视频导航| 国产91av在线| 91精品国产91久久久久久不卡| 91在线|亚洲| 欧美精品亚州精品| 久久欧美在线电影| 亚洲韩国欧洲国产日产av| 日韩在线视频线视频免费网站| 98午夜经典影视| 奇米一区二区三区四区久久| 亚洲美女视频网站| 欧美午夜丰满在线18影院| 欧美日韩成人在线视频| 亚洲国产成人精品一区二区| 色综合91久久精品中文字幕| 亚洲国产精品字幕| 国产精品h在线观看| 精品一区二区三区四区在线| 国产精品一区二区在线| 91免费观看网站| 不用播放器成人网| 久久男人的天堂| 久久亚洲国产精品| 成人午夜高潮视频| 日韩电影网在线| 国产精品一区二区性色av| 激情亚洲一区二区三区四区| 欧美性视频网站| 亚洲欧美精品一区| 热久久99这里有精品| 国产精品91一区| 日韩中文在线中文网三级| 国产在线一区二区三区| 国产免费一区视频观看免费| 97在线观看免费| 国产精自产拍久久久久久| 久久久精品一区| 亚洲欧美激情在线视频| 亚洲欧美日韩国产中文专区| 亚洲а∨天堂久久精品喷水| 日韩69视频在线观看| 欧美日韩精品二区| 国产精品白丝jk喷水视频一区| 在线观看视频亚洲| 久久精品亚洲精品| 97视频在线观看视频免费视频| 国产精品私拍pans大尺度在线| 77777少妇光屁股久久一区| 精品国偷自产在线视频99| 日韩免费在线看| 国产精品第1页| 日韩精品丝袜在线| 91久久久久久久| 久久精品国产亚洲精品2020| 欧美日韩福利在线观看| 久久精品国产欧美亚洲人人爽| 日韩中文字幕国产精品| 亚洲女人天堂视频| 欧美性猛交xxxx免费看漫画| 97热精品视频官网| 国产啪精品视频网站| 国产精品a久久久久久| 国产日本欧美在线观看| 亚洲 日韩 国产第一| 国产第一区电影| 欧美在线亚洲一区| 日韩av在线网| 欧美日韩国产一中文字不卡| 国产精品扒开腿做爽爽爽视频| 久久中文字幕一区| 欧美一二三视频| 欧美激情第三页| 欧美日韩在线观看视频小说| 91精品国产成人www| 久久久久久久影视| 亚洲另类图片色| 国产精品1区2区在线观看| 国产精品久久久久99| 性夜试看影院91社区| 欧美诱惑福利视频| 亚洲人成电影在线播放| 国产成人精品在线视频| 精品国产乱码久久久久酒店| 丝袜亚洲欧美日韩综合| 久久人人爽人人爽人人片亚洲| 91在线精品视频| 日韩精品视频在线观看网址| 国产精品免费久久久久影院| 国产成人aa精品一区在线播放| 欧美大全免费观看电视剧大泉洋| 国产精品欧美日韩一区二区| 日本成人在线视频网址| 久久在线免费观看视频| 欧美另类极品videosbestfree| 精品久久香蕉国产线看观看亚洲| 久久精品国产99国产精品澳门| 疯狂做受xxxx欧美肥白少妇| 国产精品入口福利| 日韩精品在线免费观看| 北条麻妃99精品青青久久| 91精品久久久久久久久| 97在线看福利| 亚洲国产小视频在线观看| 亚洲精品99久久久久| 欧美乱人伦中文字幕在线| 国产日韩欧美一二三区| 欧美成人高清视频| 日韩电影在线观看中文字幕| 九九热这里只有精品免费看| 欧美日本黄视频| 日本一区二区在线免费播放| 久久综合五月天| 中文字幕亚洲天堂| 日韩欧美视频一区二区三区| 在线观看欧美日韩国产| 国产精品主播视频| 日韩av第一页| 黑人巨大精品欧美一区二区一视频| 欧美做爰性生交视频| 日韩成人激情视频| 亚洲欧洲美洲在线综合| 亚洲精品国偷自产在线99热| 国产美女久久久| 色老头一区二区三区在线观看| 国产精品日韩av| 亚洲国产精品va在线| 日韩大片免费观看视频播放| 亚洲欧美国产另类| 日韩国产高清视频在线| 中文字幕一区二区精品| 欧美午夜精品久久久久久人妖| 国产69久久精品成人|