[英]How to design database tables for hierarchical data with unknown depth?
共有3種常見方法,而1種則不太常見。
1.鄰接表 (您的方法) Pro-易於理解,可在任何位置快速插入Con-緩慢遞歸查詢未知深度的樹
2.嵌套集 Pro-快速查詢Con-列表中間的插入緩慢
3.像路徑一樣的architectureid(基本上是二進制路徑) Pro- fast像Con的architectureid通常具有有限的長度-我認為hierarchyid最多約892個字節
4.封閉表 Pro-最好的嵌套集和鄰接表。 快速插入和選擇。 缺點-起初很難理解 ,但是如果性能成為問題,則值得付出努力
資料來源:SQL反模式-Bill Karwin
用於表示表中層次結構的最廣泛使用的設計模式稱為“鄰接表”。 這就是您在問題中提出的模式。
一種替代方法稱為“嵌套集”。 簡而言之,這是嵌套集的描述: https : //en.wikipedia.org/wiki/Nested_set_model
如果您查找鄰接表與嵌套集,您將獲得很多文章,討論兩者之間的取舍。
基本上,鄰接表很容易更新,但除最基本的操作外,很難使用。 嵌套Set很難更新,但易於使用。 從根目錄查找路徑,找到子樹之類的操作很簡單,也很容易理解。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.