En yaygın olarak uygulanan, Bitişiklik Listesi'nden bahsediyorsunuz:
https://blogs.msdn.microsoft.com/mvpawardprogram/2012/06/25/hierarchies-convert-adjacency-list-to-nested-sets
Gerçekleştirilmiş yol ve iç içe geçmiş kümeler de dahil olmak üzere başka modeller de vardır:
http://communities.bmc.com/communities/docs/DOC-9902
Joe Celko, bu konuda genel bir SQL perspektifinden iyi bir referans olan bir kitap yazmıştır (yukarıdaki iç içe geçmiş makale bağlantısında belirtilmiştir).
Ayrıca, Itzik Ben-Gann "Microsoft SQL Server 2005 İçinde: T-SQL Sorgulama" kitabındaki en yaygın seçeneklere iyi bir genel bakışa sahiptir.
Bir model seçerken göz önünde bulundurulması gereken temel noktalar şunlardır:
1) Yapı değişim sıklığı - ağacın gerçek yapısı ne sıklıkta değişir. Bazı modeller daha iyi yapı güncelleme özellikleri sağlar. Bununla birlikte, yapı değişikliklerini diğer veri değişikliklerinden ayırmak önemlidir. Örneğin, bir şirketin organizasyon şemasını modellemek isteyebilirsiniz. Bazı insanlar bunu bir çalışanı amirine bağlamak için çalışan kimliğini kullanarak bir bitişik liste olarak modelleyecektir. Bu genellikle en uygun olmayan bir yaklaşımdır. Genellikle daha iyi çalışan bir yaklaşım, kuruluş yapısını çalışanlardan ayrı olarak modellemek ve çalışanı yapının bir özelliği olarak korumaktır. Bu şekilde, bir çalışan şirketten ayrıldığında, organizasyon yapısının kendisinin değişmesi gerekmez, sadece ayrılan çalışanla ilişkilendirilmesi gerekir.
2) Ağaç yazma-ağır veya okuma-ağır mı - bazı yapılar yapıyı okurken çok iyi çalışır, ancak yapıya yazarken ek yüke maruz kalırlar.
3) Yapıdan ne tür bilgiler edinmeniz gerekir - bazı yapılar yapı hakkında belirli türlerde bilgi sağlamada mükemmeldir. Örnekler arasında bir düğüm ve tüm çocuklarını bulma, bir düğüm ve tüm ebeveynlerini bulma, belirli koşulları karşılayan çocuk düğümlerinin sayısını bulma, vb. Yer alır. ihtiyaçlarınızı.