Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > Базы данных

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 29.11.2002, 11:34
RFMitrio вне форума Посмотреть профиль Отправить личное сообщение для RFMitrio Посетить домашнюю страницу RFMitrio Найти все сообщения от RFMitrio
  № 1  
RFMitrio
 
Аватар для RFMitrio

Регистрация: Aug 2001
Адрес: город на Неве
Сообщений: 1,908
Отправить сообщение для RFMitrio с помощью ICQ
По умолчанию Организация дерева.

Есть древовидная структура, произвольно разветвленная. нужно уметь извлекать ветку дерева как снизу, так и сверху: 1) от вершины все дочерние 2) от дочерней полный путь к корню
Я рассмотрел 2 варианта:
1. Для каждого "листа дерева" содержится его id, id родителя и level. Тогда нужно составлять сложный запрос, либо рекурсивно запрашивать (что, мне кажется, не самое быстрое регение), либо извлекать простым запросом и потом анализировать полученные данные.
2. id листьев строится через id родителей, например, в виду char через delimiter. То есть id родителя - 1, то id дочерних листьев 1d1, 2d1 и т.д., где d-разделитель (любой нецифровой символ, например). Запрос в этом случае всегда проще, но хранятся избыточные данные.
Какой вариант предпочтительнее? какие есть еще способы формирования деревьев исходя из соображений простого и быстрого извлечения ветвей?
---
Спасибо!
__________________
suum quique

Старый 29.11.2002, 13:52
Sasha L вне форума Посмотреть профиль Отправить личное сообщение для Sasha L Посетить домашнюю страницу Sasha L Найти все сообщения от Sasha L
  № 2  
Sasha L

Регистрация: Nov 2002
Адрес: Спб
Сообщений: 40
С такого ранья, такие вопросы?

Лучше ООП никто ничего еще не придумал.
Parent.Child....листик.
Так что я за второй вариант.
__________________
Пока мыслю...

Старый 29.11.2002, 23:50
metton вне форума Посмотреть профиль Отправить личное сообщение для metton Посетить домашнюю страницу metton Найти все сообщения от metton
  № 3  
metton
"simple"
 
Аватар для metton

Регистрация: Feb 2002
Адрес: Россия, Москва
Сообщений: 1,155
Отправить сообщение для metton с помощью ICQ
Есть ещё вопросы по этой теме:
1) Действительно, как в такой задаче дело обстоит с рекурсией?
2) Первый вариант RFMitrio, имхо, довольно удобен (сам использую что-то подобное), только, мне кажется, не нужно хранить level в БД - при рекурсии это очень легко вычислить...
3) Второй вариант RFMitrio, по-моему, не очень... Нужно со строками работать - гиморно...

Просьба прокомментировать все способы знатоков ПХП
Заранее спасибо!..

Старый 03.12.2002, 20:57
metton вне форума Посмотреть профиль Отправить личное сообщение для metton Посетить домашнюю страницу metton Найти все сообщения от metton
  № 4  
metton
"simple"
 
Аватар для metton

Регистрация: Feb 2002
Адрес: Россия, Москва
Сообщений: 1,155
Отправить сообщение для metton с помощью ICQ
Знатоки ПХП, откликнитесь!..

Старый 04.12.2002, 10:00
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 5  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
1. Идти сюда.

2. Если хочется теории -- идти на гугл и искать по фразе "nested sets".

P.S. Связку по parentID на странице по приведенной ссылке не зря назвали 'brain dead method'.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 04.12.2002, 22:45
metton вне форума Посмотреть профиль Отправить личное сообщение для metton Посетить домашнюю страницу metton Найти все сообщения от metton
  № 6  
metton
"simple"
 
Аватар для metton

Регистрация: Feb 2002
Адрес: Россия, Москва
Сообщений: 1,155
Отправить сообщение для metton с помощью ICQ
2Crazy
Спасибо - почитаю!

Старый 16.12.2002, 01:25
Sami вне форума Посмотреть профиль Отправить личное сообщение для Sami Найти все сообщения от Sami
  № 7  
Sami

Регистрация: Nov 2000
Сообщений: 263
Отправить сообщение для Sami с помощью ICQ
во втором может запросы и легче.. уследить где какой родитель и от чего очень сложно будет..
все равно придется что-то проверять (делать дополнительные запросы)... устанавливать какую-либо последовательность... оноо надо?
проще по первому...
P.S. со строками что-то делал када только начинал... еще ничего не знал... намучился... зато язык выучил
__________________
для спящего время бодрствования равносильно сну.


Последний раз редактировалось Sami; 16.12.2002 в 01:28.
Старый 16.12.2002, 22:38
metton вне форума Посмотреть профиль Отправить личное сообщение для metton Посетить домашнюю страницу metton Найти все сообщения от metton
  № 8  
metton
"simple"
 
Аватар для metton

Регистрация: Feb 2002
Адрес: Россия, Москва
Сообщений: 1,155
Отправить сообщение для metton с помощью ICQ
2Sami
что ты имеешь ввиду под "первым" и "вторым"?
если методы, которые здесь обсуждались: родитель-предок (первый) и двойные флажки, то второй, естественно, намного быстрее и если дерево большое, то для построения такого дерева уйдёт нереально времени...

Старый 16.12.2002, 22:42
metton вне форума Посмотреть профиль Отправить личное сообщение для metton Посетить домашнюю страницу metton Найти все сообщения от metton
  № 9  
metton
"simple"
 
Аватар для metton

Регистрация: Feb 2002
Адрес: Россия, Москва
Сообщений: 1,155
Отправить сообщение для metton с помощью ICQ
2Crazy
Не подкинешь ссылочку на русскую инфу по nested sets, плз?
А то я что-то нашёл, но там не очень-то понятно...

Старый 17.12.2002, 00:22
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 10  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
На русском ничего осмысленного не встрачал -- только пару очень кривых переводов.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Создать новую тему   Часовой пояс GMT +4, время: 11:15.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:15.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.