亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在關系數據庫中存儲分層數據有哪些選項?

在關系數據庫中存儲分層數據有哪些選項?

慕容森 2019-05-25 15:33:11
在關系數據庫中存儲分層數據有哪些選項?好的概述一般來說,您要在快速讀取時間(例如,嵌套集)或快速寫入時間(鄰接列表)之間做出決定。通常,您最終會得到最適合您需求的以下選項組合。以下提供了一些深入閱讀:還有一個嵌套間隔與鄰接列表比較:我發現的鄰接列表,物化路徑,嵌套集和嵌套間隔的最佳比較。分層數據的模型:幻燈片,有很好的權衡解釋和示例用法在MySQL中表示層次結構:特別是對嵌套集的非常好的概述RDBMS中的分層數據:我見過的最全面,組織良好的鏈接集,但解釋方式不多選項我知道和一般的功能:鄰接清單:列:ID,ParentID易于實施。便宜節點移動,插入和刪除。昂貴的找到水平,血統和后代,路徑在支持它們的數據庫中通過公用表表達式避免使用N + 1嵌套集(又名修改的預訂樹遍歷)列:左,右便宜的血統,后代非常昂貴的O(n/2)移動,插入,由于易失性編碼而刪除橋表(又名閉包表/ w觸發器)使用單獨的連接表:祖先,后代,深度(可選)廉價的血統和后代寫入O(log n)插入,更新,刪除的成本(子樹的大?。┮幏痘幋a:適用于連接中的RDBMS統計信息和查詢規劃器每個節點需要多行譜系列(又名物化路徑,路徑枚舉)專欄:血統(例如/父母/孩子/孫子/等......)廉價后代通過前綴查詢(例如LEFT(lineage, #) = '/enumerated/path')寫入O(log n)插入,更新,刪除的成本(子樹的大小)非關系型:依賴于Array數據類型或序列化字符串格式嵌套間隔像嵌套集一樣,但是使用實數/浮點數/小數,這樣編碼就不易變(廉價的移動/插入/刪除)有實/浮/十進制表示/精度問題矩陣編碼變體為“自由”添加了祖先編碼(物化路徑),但增加了線性代數的詭計。平表修改的Adjacency List,為每條記錄添加Level和Rank(例如排序)列。便宜迭代/分頁昂貴的移動和刪除好用:線程討論 - 論壇/博客評論多個譜系列列:每個譜系級別一個,指向根目錄的所有父級,從項目級別向下的級別設置為NULL便宜的祖先,后代,水平便宜的插入,刪除,移動的葉子昂貴的插入,刪除,移動內部節點對層次結構有多深的硬性限制數據庫特定說明MySQL的將會話變量用于Adjacency List神諭使用CONNECT BY遍歷鄰接列表PostgreSQL的物化路徑的ltree數據類型SQL Server總結2008年提供的HierarchyId數據類型似乎有助于Lineage Column方法并擴展可以表示的深度。
查看完整描述

3 回答

?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

這是對你的問題的非常局部的答案,但我希望仍然有用。

Microsoft SQL Server 2008實現了兩個對管理分層數據非常有用的功能:

看一看“的模式您的數據層次結構有了SQL Server 2008”由Kent Tegels MSDN上的開始。另請參閱我自己的問題:SQL Server 2008中的遞歸同表查詢


查看完整回答
反對 回復 2019-05-25
  • 3 回答
  • 0 關注
  • 443 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號