Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> иерархия всех родителей раздела 
V
    Опции темы
taral
Дата 4.2.2009, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Доброго времени суток уважаемые форумчане! Вот думаю как оптимально решить задачу.
Есть таблица:
id_sort
id_parent
title
С ее помощью формируется дерево разделов.
Например:

Аудио, видео, фото техника
        Телевизоры
               ЭЛТ, LCD, плазменные телевизоры
               Портативные (автомобильные) телевизоры
               Аксессуары для телевизоров
        Фото техника
        Видео и Web камеры
 Компьютеры 
 Мобильная связь 
..............
в таблице id_sort уникальный ключ. id_parent уникальный ключ родителя раздела и title название раздела.
А теперь собственно задача.
Когда мы находимся в категории ЭЛТ, LCD, плазменные телевизоры
Показывается менюшка
Аудио, видео, фото техника -> Телевизоры -> ЭЛТ, LCD, плазменные телевизоры
Когда находимся в категории Телевизоры показывается
Аудио, видео, фото техника -> Телевизоры
пока что я вижу 3 решения данной задачи.
1) по id категории находим его родителя по id родителя находим его родителя и т.д.
 недостаток что будет много запросов в базу. при вложенности 10 будет 10 запросов. Потому данный метод я откинул
2) добавить в таблицу еще одну ячейку в которой хранить строку всех родителей.
что-то вроде <a href="...">Аудио, видео, фото техника</a> -> <a href="...">Телевизоры</a> -> ЭЛТ, LCD, плазменные телевизоры
Вариант не нравится. Много лишнего текста. Да и если сайт переедет переедет то ссылки работать не будут. Потому вариант откинул.
3) добавить в ячейкустроку в которой хранить id всех родителей. Что-то вроде 12 23 45. И еще одним запросом получаем строку иерархии.
К 3-му варианту и склоняюсь.
Может есть метод лучше?
               
PM MAIL   Вверх
lelik133
Дата 4.2.2009, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 517
Регистрация: 5.2.2003
Где: Москва

Репутация: 3
Всего: 14



есть называется Nested Sets (вложенные множества) 
вот ссылочка для ознакомления http://www.internet-technologies.ru/articl...rticle_635.html ну и google в помощь инфы по ним много.

Это сообщение отредактировал(а) lelik133 - 4.2.2009, 23:14
PM ICQ   Вверх
destrd
Дата 4.2.2009, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 1.10.2008

Репутация: 1
Всего: 4



Чёт я не пойму, в третьем варианте типа вы не будете запрашивать категории с этим парентом?
--------------------
Some people, when confronted with a problem, think, "I known, I'll use regular expressions." Now they have two problems.        -- Jamie Zawinski in comp.lang.emacs
PM MAIL ICQ   Вверх
taral
Дата 5.2.2009, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



2destrd
Наоборот. Там перечисляются id категорий родителей.
lelik133 Огромное спасибо. Ознакомлюсь.
PM MAIL   Вверх
skyboy
Дата 5.2.2009, 00:08 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(destrd @  4.2.2009,  22:17 Найти цитируемый пост)
не будете запрашивать категории с этим парентом? 

можно одним запросом получить и єлемент и всех его непосредственных родителей.
Цитата(lelik133 @  4.2.2009,  22:14 Найти цитируемый пост)
есть называется Nested Sets (вложенные множества)

да, только у nested sets есть конструктивное ограничение.
на этом механизме обощенный граф не построишь - только дерево. значит, продукт не может относиться к нескольким категориям, и подкатегория будет относиться только к одной категории. 
А кроме строгого разделения по "полочкам" для продуктов могут применяться и обобщающие категории, вроде "романтический подарок ко Дню святого Валентина" или "эксклюзив" - при использовании netsted sets не "параллельные" ирерархии придется хранить в разных таблицах или вводить доп. поле
PM MAIL   Вверх
taral
Дата 5.2.2009, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



lelik133 Обалдеть! Еще раз спасибо! Прослушал я лекции про деревья в универе =( Тогда казалось что не понадобится.

Добавлено @ 00:30
Я так понял что при добавлении новой категории значения (left right) будут переписываться.

Это сообщение отредактировал(а) taral - 5.2.2009, 00:30
PM MAIL   Вверх
taral
Дата 5.2.2009, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Класс! Все равно способ очень хороший!
PM MAIL   Вверх
lelik133
Дата 5.2.2009, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 517
Регистрация: 5.2.2003
Где: Москва

Репутация: 3
Всего: 14



skyboy, ну про то что элемент должен присутствовать в нескольких категориях автор не упоминал   smile 
PM ICQ   Вверх
skyboy
Дата 5.2.2009, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



lelik133, не, ну я уточнил неочевидные(как на меня) на первый взгляд(как на меня) вещи. против nested sets абсолютно ничего  не имею.
PM MAIL   Вверх
taral
Дата 5.2.2009, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Всем спасибо. Я думаю что все вопросы решены. Потому закрываю тему.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0740 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.