Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 ... 4 5 6 [7]   Вниз
  Печать  
Автор Тема: Всякие вопросы по MySQL 5.0+  (Прочитано 124148 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #180 : 10-03-2010 16:06 » 

да и не забывай Улыбаюсь
https://club.shelek.ru/viewart.php?id=307
https://club.shelek.ru/viewart.php?id=327
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #181 : 10-03-2010 16:15 » 

Вот это очень хорошая статья о различных способах хранения деревьев в SQL:
http://www.gsbelarus.com/gs/modules.php?name=News&file=article&sid=314
Но, примеры там для MSSQL!
Главное, что там объясняется теория.
Рассказывается о:
* Ссылка на родителя
* Хранение вспомогательных связей
* Составной путь
* Интервальное дерево

Ну и моя скромная статейка:
https://club.shelek.ru/viewart.php?id=307
У меня только id/parent_id и "Составной путь".

Самый простой и логичный - "ссылка на родителя", но выборка требует рекурсии.
Самый легкий в реализации - "составной путь". Но очень длинный ключ. Возможны еще минусы в зависимости от реализации.
Самый быстрый - "Интервальное дерево" (или "вложенные множества" - "nested sets"). Но операции сдвижки/раздвижки множества для удаления/вставки затрагивают много строк (от одной до всех).
"Хранение вспомогательных связей" - гибрид, хранящий все связи в отдельной таблице. Связи растут быстрее дерева.
« Последнее редактирование: 10-03-2010 16:23 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #182 : 10-03-2010 16:22 » 

ясненько ) Ближе к делу втянусь и стану задавать вопросы ))
Записан

baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #183 : 10-03-2010 18:46 » 

Алексей1153++, трабла здесь будет когда тебе придется обходить дерево и выполнять кучу запросов в цикле, чтоб вернуть все листья по очереди..
Я, например, не люблю много последовательных запросов к базе и стараюсь сделать один, но чтоб вернул сразу все связанные данные.. Тоже недавно столкнулся с обходом такого дерева и по своей идеологии сбацал запрос с LEFT JOIN, связывающий таблицу саму с собой 10 раз чтоб сразу все уровни одной ветки вытащить.. Правда, я искал только родителей..

RXL, спасибо за ссылки - очень хорошо описано!
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #184 : 11-03-2010 04:23 » 

baldr, вот и я о том же, чувствую, что не всё так просто) Но я ещё не дошёл до дела, там видно станет
Записан

Страниц: 1 ... 4 5 6 [7]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines