|  | 
| 
Посоветуйте структуру? | |||
|---|---|---|---|
| #18+ Посоветуйте пожалуйста структуру базы для дерева с неограниченным кол-вом уровней и разветвлений на каждом уровне. И желательно с возможностью связей как в графе, т.е. не совсем правильное дерево, а со связями через уровень... Заранее благодарен! ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 14.08.2003, 13:43 |  | ||
| 
Посоветуйте структуру? | |||
|---|---|---|---|
| #18+ ДДдык. Это уже не дерево, а сетевая структура какая-то получается. Что имеем? -набор узлов -набор связей (ребер) В простейшем случае их можно хранить в виде списка узлов и списка ребер: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Усё... Даже связи направленные получились. Даже несколько различных связей из одного узла в другой построить можно, если оч-чень захотеть... ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 14.08.2003, 15:49 |  | ||
| 
Посоветуйте структуру? | |||
|---|---|---|---|
| #18+ 2 Циничный Кот >Усё... Даже связи направленные получились Эээ, направленный граф каждый дурак (шутка) сделает, а вот попробуй ненаправленый таким же легким движением изобразить. ИМХО все правильно, самое простое решение. Но вопрос о ненаправленном графе остается. Самое лучшее что мне в голову приходит это вью доопределяющее отношение LINKS_TBL до симметричного. Может другие идеи есть? 2 Tosha81 С обработкой дерева могут быть пробемы. Какой SQL сервер? Оракл и ДБ2 поддерживают рекурсивные селекты, там проблем не будет вообще. MSSQL такого не поддерживает и не любит рекурсивных SP (точнее любит только первые 32 или что-то вроде этого), чтоб получить неограниченную глубину нужно будет разворачивать рекурсию в цикл, или на клиент все вытаскивать и там обрабатывать, что еще хуже. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 14.08.2003, 23:55 |  | ||
| 
Посоветуйте структуру? | |||
|---|---|---|---|
| #18+ Если все дерево удасться представить как направленный граф без циклов (а я надеюсь, что удасться), то структура ЦК весьма подходяща. Если еще предположить, что количество уровней будет все же не бесконечным (ну хотя бы не порядка миллиона), тогда для избежания рекурсии в запросах можно хранить вспомогательную таблицу, где хранить ссылки parent-узлов на все его child узлы. Придется "ручками" поддерживать целостность такой системы (с помошью триггеров или же открытия доступа ко всем операциям только через ХП), но запросы строить будет зело легко. Дополнительно к ЦК: Код: plaintext 1. 2. 3. 4. 5. 6. поле LEVEL необязательно, но в моем случае было нужно. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 15.08.2003, 02:48 |  | ||
| 
Посоветуйте структуру? | |||
|---|---|---|---|
| #18+ vdimas> Если все дерево удасться представить как направленный граф без циклов (а я надеюсь, что удасться), то структура ЦК весьма подходяща. Сто раз тут уже говорилось: дерево и есть граф без циклов. По определению. Направление задай произвольно, если так хочется, это ничего не меняет. Другими словами: дерево УЖЕ ПРЕДСТАВЛЕНО в виде направленного графа. Структура ЦК реализует произвольный граф, что и требовалось по условию, и поэтому подходяща всегда, без всяких "если". ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 16.08.2003, 01:24 |  | ||
| 
Посоветуйте структуру? | |||
|---|---|---|---|
| #18+ Каждая не конечная вершина этого полу-дерева с циклами - это категория, каждая следующая (ниже уровнем) - подкатегория.  Селектами нужно будет ывбирать, например, всё, что принадлежит какой - нибудь категории. Не замучусь ли с таким представлением. База MySQL. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 18.08.2003, 11:50 |  | ||
| 
Посоветуйте структуру? | |||
|---|---|---|---|
| #18+ Замучаешься.  Подкатегории: select * from LINKS_TBL where SOURCE_NODE=:category_id; Подкатегории подкатегорий (через вершину): select t2.* from LINKS_TBL t1, LINKS_TBL t2 where t1.TARGET_NODE=t2.SOURCE_NODE and t1.SOURCE_NODE=:category_id; Глубже у тебя не бывает по условию. Но дальнейшую обработку я думаю в мускл не всунешь и нужно будет выносить на внешний уровень и обрабатывать из C/С++, перла или что там у тебя. Но я с мускл не работал. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 19.08.2003, 00:01 |  | ||
|  | 

| start [/forum/topic.php?fid=32&fpage=179&tid=1546873]: | 0ms | 
| get settings: | 10ms | 
| get forum list: | 14ms | 
| check forum access: | 3ms | 
| check topic access: | 3ms | 
| track hit: | 55ms | 
| get topic data: | 11ms | 
| get forum data: | 2ms | 
| get page messages: | 44ms | 
| get tp. blocked users: | 1ms | 
| others: | 254ms | 
| total: | 397ms | 

| 0 / 0 | 
