Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.02;
Скачать: CL | DM;

Вниз

Деревья   Найти похожие ветки 

 
Zhouck ©   (2003-09-16 11:16) [0]

Такой вот метод создания иерархии - кроме ID создаем поля Level и Hash. В хэше первого уровня - 001,002,003...,999. В хэше второго уровня 001001,001002,...,001999,...,999001,999002,...999999, что в хэшах третьего , думаю всем ясно. Хэш лучше делать типа char(255) влезет все. Какие недостатки у данного метода ?


 
Nikolay M. ©   (2003-09-16 11:23) [1]


> Какие недостатки у данного метода ?

Поддерживает не более 999 веток из одной вершины, расход памяти под кучу полей char(255), причем хэш каждой ветки будет занимать именно 255 байт, т.к. выбран тип char.
Плюс будет возня при удалении/добавлении новых ветвей(листьев) - придется придумывать алгоритм назначения нового хэша и вообще, имхо, геморрой не стоит свеч...


 
Zhouck ©   (2003-09-16 11:29) [2]

Ну то что 999 , это не проблема, можно и 999999. Можно и varchar
, тогда редко какой будет 255. Зато - найти всех потомков некоторого родителя можно без рекурсии, а так как есть уровни - то и с группировкой. Гемор будет на DDL , но не будет его на DML


 
pasha_golub ©   (2003-09-16 12:11) [3]

Я вообще-то придерживаюсь классического подхода, то есть список списков.


 
Nikolay M. ©   (2003-09-16 13:08) [4]


> Зато - найти всех потомков некоторого родителя можно без
> рекурсии, а так как есть уровни - то и с группировкой.

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


 
AlexVM ©   (2003-09-16 13:13) [5]

Посмотри www.codenet.ru/db/trees/ - может поможет...


 
Zhouck ©   (2003-09-16 13:41) [6]

Ха , а как вам нахождение всего поддерева -
select * from tree where hash like "001%"? Где проще ?


 
NAlexey ©   (2003-09-16 13:47) [7]

Судя по всему автор уже давно решил что его метод самый лучший. Не так ли?


 
Zhouck ©   (2003-09-16 13:54) [8]

Совсем нет. Я этот метод придумал 3 часа назад и еще даже и не реализовывал.


 
Nikolay M. ©   (2003-09-16 14:09) [9]

Ну, если решишь-таки реализовывать, делай тогда хэш не "001002003", а "1,2,3". Опять же SELECT ... WHERE ID IN (:hash) проще сделать. Мы так делали на вебе для MySQL, где важна была скорость и информация изменялась целиком, но для постоянной работы c деревом я бы такой вариант не принял.


 
Zhouck ©   (2003-09-16 14:27) [10]

За совет - спасибо. А почему для постоянной работы вариант не подходит? И скорость, и надежность есть. Нужно просто много триггеров написать, но зато работать из дальше будет проще


 
Zhouck ©   (2003-09-18 16:33) [11]

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


 
Digitman ©   (2003-09-18 17:21) [12]

тебя какая задача-то волнует ?
уникальность имен узлов или быстрая выборка узлов указанного поддерева ?

первое - в ряде случаев подойдет обычное CRC32/64
второе - к основной "деревянной" таблице создается вспом.таблица реляций вида
Id - Name - Level - ParentId - RootId, модифицируемая астоматически в теле соотв.триггеров


 
Zhouck ©   (2003-09-19 12:38) [13]

Задача приблизительно такова:
Есть отделы, сотрудники (иерархия на предприятии думаю всем ясна)
Нужно получать любые поддеревья (департамент,отдел,группа etc)
и иметь возможность группировки по количеству зарплаты, отработанных дней, коммандировок etc


 
MVova ©   (2003-09-19 13:16) [14]


> Zhouck © (18.09.03 16:33) [11]

\\ http://sdm.viptop.ru/articles/sqltrees.html



Страницы: 1 вся ветка

Текущий архив: 2003.10.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
14-4048
Layner
2003-09-15 15:06
2003.10.02
1C 7.7+SQLserv-клиент не может загрузить программу, желтая


14-4122
Karnegi.
2003-09-12 18:35
2003.10.02
Помогите, проблема с автоматическим открытием формы.


8-3995
Rel_
2003-06-05 17:04
2003.10.02
Вращение вокруг точки


3-3749
SkullNet
2003-09-12 01:13
2003.10.02
LoadFromFile, SaveToFile и БД


14-4096
Кен
2003-09-14 04:20
2003.10.02
Может ли милиция принудительно дактиласкопировать граждан ?