Сведения о вопросе

Htmlщик

17:34, 12th August, 2020

Теги

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

Просмотров: 391   Ответов: 3

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

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

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



  Сведения об ответе

dump

03:31, 13th August, 2020

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

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

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:\Temp и всех его детей:

WHERE Path LIKE '*1*2*%'

Это представление-единственное место, где я могу думать о том, где хранить id в строке, как это нормально.


  Сведения об ответе

FAriza

23:58, 15th August, 2020

Основным ресурсом для этого являются главы 28-30 из SQL для Smarties .

(Я рекомендовал эту книгу так много, что я думаю, что Celko должен мне гонорары к настоящему времени!)


  Сведения об ответе

ITSME

18:15, 5th August, 2020

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться