資料庫層級結構實現

2021-07-10 22:19:06 字數 1088 閱讀 9085

層次關聯式資料庫表的設計,無線層次

在資料庫中儲存層級結構

總的來說主要就是兩大類方法

(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 否 類...