相關討論連線:
早就想簡單說說: 關於樹型結構資料的儲存及維護
樹型結構資料的儲存採用:
tree(id,parentid,remark)
如果僅對於儲存來講,無疑是最經濟!
但是利用這樣的結構,來提供一些基於稍微複雜點的查詢的應用表現形式
效率應該說相當低下!
如: 查詢某節點的路徑等!
如要高效的查詢,我們可以在維護資料時下點功夫!
我們以乙個樹型結構論壇的實現為例:
tree(id,parentid,rootid,orderid,maxid,indent,title,content,remark)
id: integer 帖子id
parentid: integer 父貼id
rootid: integer 根帖id
orderid: integer 同乙個根帖中,帖子順序id
maxid: integer 用於使新貼在頂部
indent: integer 縮排量
title: varchar 帖子標題
content: varchar 帖子內容
remark: varchar 除 id,parentid 外的貼子線索
--把帖子頂到上面:
update tree
set maxid = (select max(id)
from tree
)where rootid = (select rootid
from tree
where id=@id
) end
--****************************************
這樣,只需簡單查詢:
select *, remark + '-' + cast(parentid as varchar) + '-' + cast(id as varchar) , space(indent) + '['
from tree
order by maxid desc,orderid
就可高效的實現帖子列表及其線索,級別等!
雖然維護時增加了一些工作量!
--相關ddl指令碼:
create table [tree] (
[id] [int] identity (1, 1) not null ,
[parentid] [int] null ,
[rootid] [int] null ,
[orderid] [int] null ,
[maxid] [int] null ,
[indent] [int] null ,
[title] [varchar] (50),
[content] [varchar] (200) ,
[remark] [varchar] (250) ,
constraint [pk_tree] primary key clustered
([id]
相關討論連線:
早就想簡單說說: 關於樹型結構資料的儲存及維護
樹型結構資料的儲存採用:
tree(id,parentid,remark)
如果僅對於儲存來講,無疑是最經濟!
但是利用這樣的結構,來提供一些基於稍微複雜點的查詢的應用表現形式
效率應該說相當低下!
如: 查詢某節點的路徑等!
如要高效的查詢,我們可以在維護資料時下點功夫!
我們以乙個樹型結構論壇的實現為例:
tree(id,parentid,rootid,orderid,maxid,indent,title,content,remark)
id: integer 帖子id
parentid: integer 父貼id
rootid: integer 根帖id
orderid: integer 同乙個根帖中,帖子順序id
maxid: integer 用於使新貼在頂部
indent: integer 縮排量
title: varchar 帖子標題
content: varchar 帖子內容
remark: varchar 除 id,parentid 外的貼子線索
--把帖子頂到上面:
update tree
set maxid = (select max(id)
from tree
)where rootid = (select rootid
from tree
where id=@id
) end
--****************************************
這樣,只需簡單查詢:
select *, remark + '-' + cast(parentid as varchar) + '-' + cast(id as varchar) , space(indent) + '['
from tree
order by maxid desc,orderid
就可高效的實現帖子列表及其線索,級別等!
雖然維護時增加了一些工作量!
--相關ddl指令碼:
create table [tree] (
[id] [int] identity (1, 1) not null ,
[parentid] [int] null ,
[rootid] [int] null ,
[orderid] [int] null ,
[maxid] [int] null ,
[indent] [int] null ,
[title] [varchar] (50),
[content] [varchar] (200) ,
[remark] [varchar] (250) ,
constraint [pk_tree] primary key clustered
([id]
) on [primary]
) on [primary]
) on [primary]
) on [primary]
樹在資料庫中的應用
1 索引在資料庫中的作用 最基本的查詢演算法是順序查詢,遍歷表然後逐行匹配行值是否等於待查詢的關鍵字,時間複雜度為 o n 不適合資料量大的時候。在資料之外,資料庫還維護著滿足特定查詢演算法的資料結構,這些資料結構以某 種方式引用資料,這樣就可以在這些資料結構上實現高階查詢演算法,這種資料結構就是,...
資料庫 樹型關係的資料表
樹型關係的資料,例如常見的類別表,即乙個大類,下面有若干個子類,某些子類又有子類這樣的情況。當類別不確定,使用者希望可以在任意類別下新增新的子類,或者刪除某個類別和其下的所有子類,而且預計以後其數量會逐步增長,此時就會考慮用乙個資料表來儲存這些資料。類別表 1 type table 1 名稱 型別 ...
用資料庫實現樹型結構
做 的時候有時需要實現乙個樹形列表,類似目錄那樣的。最好的建立方法就是採用指向父節點的指標的結構建立表。表的結構如下 表名為xx 字段 型別 null 預設 注釋 cidint 11 否 主鍵 pid int 11 否 0 父類別的cid,0表示該項為頂層類別。name varchar 64 否 類...