我必須在數據庫中存儲樹,那麼執行此操作的最佳方法是什麼?顯示你使用的方法並命名它的優點和缺點。 (我正在使用SQL Server 2005)如何在SQL數據庫中存儲樹
回答
我發現SQL Anti-patterns中的討論非常有幫助,因爲它還關注每個實現的缺點。
此外,在this presentation的幻燈片48-77重申,analisys。
底線,沒有這樣的東西作爲一般的樹,沒有SQL樹的銀彈。 你將不得不問自己有關數據,他們將如何選擇,修改多少,分支機構會被移動等等,並根據這些答案實施合適的解決方案。
那麼,最簡單的方法是記錄有一個ParentID列,以便它知道哪個記錄是它的父項。這是一個非常標準的做法。例如,一家在線商店可能有一個產品類別的層次結構。每個類別都有一個ParentID。示例:服裝數據庫中的「牛仔褲」類別可能具有「褲子」作爲父類別。如果你想要一個記錄來表明哪些是它的孩子,那就更難了,除非你限制了孩子的數量。如果你想要一個二叉樹,你可以有LeftChildID和RightChildID列。如果您允許任意數量的孩子,您可以在兒童專欄中添加由逗號分隔的ID(例如1,4,72,19
),但這會使查詢變得相當困難。如果數據庫允許在列中使用數組類型,則可以使用數組而不是分隔字符串,這很容易查詢 - 但我不確定MS SQL Server是否支持。
除此之外,它取決於您建模的數據類型以及您計劃對此樹執行的操作類型。
Celko將嵌套集模型歸屬於Michael Kamfonas,儘管Celko似乎已經創造了這個短語並且肯定會拋光並且推廣這項技術。 – onedaywhen 2010-07-09 14:05:16
+1 - 幾周前我剛剛使用了Celko的文章,這非常有幫助。 – 2010-07-09 15:43:55
此答案中的鏈接現在不幸中斷。有人知道還有什麼地方可以找到這些信息嗎? – Qqwy 2017-04-17 10:17:11
我在過去通過在SQL中將數據存儲爲xml來完成此操作。
- 1. 如何將樹基數據存儲到數據庫中?
- 2. 如何從存儲在數據庫中的信息顯示樹?
- 3. 如何在數據庫中存儲依賴關係樹?
- 4. Mysql性能:如何在數據庫中存儲文件樹?
- 5. 如何使用asp.net將數據存儲在sql數據庫中#
- 6. 如何將表數據存儲在SQL Server數據庫中?
- 7. 如何將數據存儲在SQL數據庫中的PHP
- 8. 在SQL數據庫中存儲xml
- 9. 將SQL存儲在MySQL數據庫中
- 10. 在雲中存儲sql數據庫
- 11. 如何在數據庫中將數據存儲到數據庫
- 12. 如何在數據庫中存儲「\」?
- 13. 如何在Arduino中存儲數據庫?
- 14. 如何在數據庫中存儲
- 15. 如何在android數據庫中存儲
- 16. 如何將數據從ObservableCollection存儲到SQL數據庫中?
- 17. 如何將樹數據存儲在Lucene/Solr/Elasticsearch索引或NoSQL數據庫中?
- 18. 如何在Google App Engine Cloud SQL中存儲MySQL數據庫?
- 19. 如何將Html文件目錄存儲在SQL數據庫中?
- 20. 如何使用C#在SQL數據庫中存儲XML文件?
- 21. 如何在SQL Server數據庫中存儲圖像
- 22. 如何將表單信息存儲在html5 sql數據庫中?
- 23. 如何在SQL數據庫中存儲更改?
- 24. ASP.NET Sql Server 2008如何在數據庫中存儲密碼
- 25. 如何更改存儲在單例中的SQL數據庫?
- 26. 如何在SQL Server數據庫表列中存儲圖像
- 27. 如何將圖像存儲在WP7上的SQL數據庫中
- 28. 如何將圖像存儲在我的SQL數據庫中?
- 29. 數據庫設計:如何在數據庫中存儲XML/JSON?
- 30. 搜索存儲在樹中的數據
此鏈接已死亡;它會重定向到主頁。 – Qqwy 2017-11-12 20:42:48