一般有2欄位 id主鍵 pid 父節點id
資料庫刪除節點有3種實現方式:
1.遞迴刪除,好處:sql可以靈活控制。壞處:如果這棵樹很大,層數很深,會執行很多次資料庫查詢和刪除操作
,效率很低。
2.資料庫表自表建立主外來鍵關係,利用資料庫自帶的級聯刪除。好處:效率很高。壞處:如果到時候刪除父節點
不能刪除子節點,需要修改資料庫表結構。建議使用此方法。
3.把遞迴刪除語句寫到儲存過程裡。好處:效率高於sql遞迴刪除。壞處:不太便於維護,如資料庫更換或者表結構
更改,需要修改此儲存過程。
樹的資料庫表結構中有個字段為child_count,這個欄位也可以改為isleaf:0是,1不是。
維護這兩個欄位都要付出代價,如刪除子節點時要把父節點child_count-1,或者判斷父節點下是否還有子節點來
改變isleaf的值。當然,child_count在刪除和增加子節點時候都要維護,但是如果要統計乙個節點下有多少個子
節點就不再需要select count(*)了。各有優劣,根據實際情況使用。
資料庫正規化之我見
在上學的時候,資料庫之中就講過資料庫正規化,現在突然想複習下,就上網查了下發現還是自己親自理一遍比較清晰 關聯式資料庫中的關係必須滿足一定的要求,即滿足不同的正規化。目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 第四正規化 4nf 第五正規化 5nf 和第...
資料庫為什麼要用B 樹結構
為什麼使用b 樹?言簡意賅,就是因為 1.檔案很大,不可能全部儲存在記憶體中,故要儲存到磁碟上 2.索引的結構組織要儘量減少查詢過程中磁碟i o的訪問次數 為什麼使用b tree,還跟磁碟訪問原理有關。3.區域性性原理與磁碟預讀,預讀的長度一般為頁 page 的整倍數,在許多作業系統中,頁得大小通常...
資料庫索引為什麼B樹結構
這是乙個很深的問題,我採用逐步問答的方式來解答。試圖用最簡潔的語言解決整體概念上的問題。本文目的純粹是提供對 索引採用b樹結構 這個問題的一種入門概念,不涉及深入的東西。資料庫索引為什麼會選擇b樹結構?答 因為使用b樹查詢時,所用的磁碟io操作次數比平衡二叉樹更少,效率也更高。為什麼使用b樹查詢所用...