Что такое модели хранения древовидных структур и каковы их характеристики?

StackOverflow https://stackoverflow.com/questions/27850

  •  09-06-2019
  •  | 
  •  

Вопрос

До сих пор я сталкивался со списками смежности, вложенными множествами и вложенными интервалами в качестве моделей хранения древовидных структур в базе данных.Я знаю их достаточно хорошо и переносил деревья с одного на другое.

Какие еще популярные модели?Каковы их характеристики?Какие есть хорошие ресурсы (книги, Интернет и т. д.) по этой теме?

Я не только ищу хранилище БД, но и хотел бы расширить свои знания о деревьях в целом.Например, я понимаю, что вложенные наборы/интервалы особенно удобны для хранения реляционных баз данных, и задался вопросом, действительно ли они являются плохой выбор в других контекстах?

Это было полезно?

Решение

Основополагающим источником для этого являются главы 28–30 SQL для умников.

(Я настолько рекомендовал эту книгу, что, по моему мнению, Селко уже задолжал мне гонорар!)

Другие советы

Вариантом является использование прямого иерархического представления (т.родительская ссылка в узле), но также сохраняет значение пути.

то есть.для дерева каталогов, состоящего из следующего:

C:\
   Temp
   Windows
       System32

У вас будут следующие узлы

Key     Name     Parent     Path
1       C:                  *1*
2       Temp       1        *1*2*
3       Windows    1        *1*3*
4       System32   3        *1*3*4*

Путь индексируется и позволит вам быстро выполнить запрос, который выберет узел и все его дочерние элементы, без необходимости манипулировать диапазонами.

то есть.чтобы найти C: emp и все его дочерние элементы:

WHERE Path LIKE '*1*2*%'

Это представление — единственное место, которое я могу придумать, где хранить идентификаторы в такой строке все в порядке.

@lassevk: Эта статья рассказывает о вашем подходе более подробно и предоставляет фрагменты кода.

Надеюсь это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top