Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > СУБД, общие вопросы > Древовидная структура в реляционной БД |
Автор: Vyacheslav 18.9.2003, 11:03 | ||||||
Модератор RAN: тема получилась в результате разделения другой темы. Где обсуждались способы связи древовидного списка с реляционной БД на C++. На мой взгляд, это достойно внимания в разделе БД, в отдельной теме. А в C++ осталась ссылка в обсуждении Один из возможных и эффектных варинтов создания древовидной структуры с помощью реляционный БД является использование механизма L и R Имеем дерево
Мысленно представим червя, который ползет по этому дереву, начиная с ClassA и обходит каждый элемент и при этом при прохождении с левой и правой стороны увеличивает некий счетчик
Теперь заполняем таблицу и заносим значения счетчика слева в L, а значения счетчика справа в R
Теперь любую информацию можно получить с плмощью запросов Какие классы я ялются производными от ClassC? Select * from Classes where L>7 and R<12 Какие классы не имееют производных, т. е являются листьями? Select * from Classes where L=R-1 Вывести все классы, являющиеся предками класса Class G? Select * from Classes where L< 9 and R>10 и т.д. Преимущества такой схемы: простота получения любой информации с помощью простейших запросов, создание иерархичий любого уровня вложенности. Недостатки : сложности при вставке, удалении элементов |