層次關聯式資料庫表的設計,無線層次
在資料庫中儲存層級結構
總的來說主要就是兩大類方法
(1)自關聯外來鍵引用
①原理
就是加乙個屬性是parent_id,用來儲存父節點的id。
②實現
mysql
在進行所有子節點遍歷的時候,可以通過查詢一次parent_id = id的,找到所有直接子節點,然後再對子節點使用,如此往復。
oracle
有對應的層級遍歷的語句,strat with ... connected by
③優缺點
優點:在進行標籤擴充套件的時候很方便,同時也能實現無線層級。
缺點:在進行標籤查詢的時候,對於mysql來說,不僅複雜,而且效率低下。
(2)編碼
用編碼來區分不同的層級,有兩種方式,
直接上圖
方式1:
編碼後,可以通過like進行查詢
優點:①查詢方便,②並且能夠根據code字段長度,算出所處層級③同級之間還可以有順序
缺點:①標籤總數量有限制②標籤層數受限制③採用like查詢效率也並非很高。
方式2:
優點:①通過某節點查詢子節點,方便且效率高。②層次深度節點數量幾乎不受限制。③同一父節點的直接子節點有順序。
缺點:①標號需要先將資料存入一棵樹,採用改進的先序遍歷實現標號。②後續插入新節點,需要修改很多節點的值。
資料庫繫結TreeView,無限層級
初始化樹 private void inittreeview this.roletree.nodes.add node getchildnode roleauthoritylist,authorityinfolist,node 遞迴方法獲取子型別 private void getchildnode ...
mysql 儲存層級關係 在資料庫中儲存層級結構
位於分類 技巧集錦 1 首先是鄰接表模型。鄰接表相當簡單。只需要寫乙個遞迴函式來遍歷這個樹。我們的食品商店的例子用鄰接表模型儲存時看起來就像是這樣 通過鄰接表模型儲存法中,我們可以看到pear,它的父節點是green,而green的父節點又是fruit,以此類推。而根節點是沒有父節點的。這裡為了方便...
用資料庫實現樹型結構
做 的時候有時需要實現乙個樹形列表,類似目錄那樣的。最好的建立方法就是採用指向父節點的指標的結構建立表。表的結構如下 表名為xx 字段 型別 null 預設 注釋 cidint 11 否 主鍵 pid int 11 否 0 父類別的cid,0表示該項為頂層類別。name varchar 64 否 類...