Что такое модели хранения древовидных структур и каковы их характеристики?
-
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: Эта статья рассказывает о вашем подходе более подробно и предоставляет фрагменты кода.
Надеюсь это поможет.