Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: У кого какие идеи

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: идеальная структура
dubasua
Отправлено: 21 Октября, 2012 - 01:58:02
Post Id



Посетитель


Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012  


Помог: 7 раз(а)




У меня есть задачка над которой я бьюсь уже не оди день, очень много решений, но толковых нет, может кто что посоветует или предложит. Суть в том чтобы создать простое дерево каталогов в MySql. Самое простое что я придумал это вот такая таблица
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE three(
  3. id int(5) NOT NULL AUTO_INCREMENT,
  4. name varchar(100) NOT NULL DEFAULT '',
  5. pid int(5) NOT NULL,
  6. type int(2),
  7. PRIMARY KEY(id),
  8. FOREIGN KEY(pid) REFERENCES(id),
  9. UNIQUE KEY (name,pid))
  10.  

Я думаю здесь все понятно. Главный вопрос в том как здесь работать без рекурсии, или какую структуру нужно создать что-бы не нужно было применять рекурсию для вывода всего дерева или конкретного каталога с полными путями.

У меня есть еще пару идей, но там целая система, процедуры, триггеры, сложные представление. Но как по мне так они будут тупить при работе с большими деревьями.

У кого какие идеи будут? Я уверен что не перед одним мной стояла такая задача, может кто то ее уже решил?
 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Октября, 2012 - 02:09:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




dubasua пишет:
что-бы не нужно было применять рекурсию
nested sets
 
 Top
dubasua
Отправлено: 21 Октября, 2012 - 02:19:33
Post Id



Посетитель


Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012  


Помог: 7 раз(а)




Вот это крутотень, я и не знал про такие вещи. Спасибо!!!
 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Октября, 2012 - 03:28:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Вы прикалываетесь?
Я в соседней иеме то же самое посоветовал, где вы предложили автору вопроса просто отсортировать.
Надеюсь что и вправду был полезен.
 
 Top
dubasua
Отправлено: 21 Октября, 2012 - 07:15:17
Post Id



Посетитель


Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012  


Помог: 7 раз(а)




В прошлой теме я подумал что это "ругань" какаето, а когда во второй раз увидел, я подумал что человек так не может ругаться, решил проверить а тут имхо, и вправду не ругань Закатив глазки
 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Октября, 2012 - 09:33:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




dubasua пишет:
"ругань"
Радость
 
 Top
armancho7777777 Супермодератор
Отправлено: 21 Октября, 2012 - 10:20:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




DeepVarvar пишет:
Я в соседней теме то же самое посоветовал

DeepVarvar, можно ссылочку?
Найти не могу.
 
 Top
Panoptik
Отправлено: 21 Октября, 2012 - 12:05:30
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




http://forum.php.su/topic.php?fo...ostid=1350801618

я и сам с этой темы прочитал про "вложенные множества" таки разобрался. в будющем будет очень актуально
по теме кстати вот еще что находил:
http://www[dot]getinfo[dot]ru/article610[dot]html
http://phpclub.ru/detail/article/db_tree

(Отредактировано автором: 21 Октября, 2012 - 12:06:26)



-----
Just do it
 
 Top
armancho7777777 Супермодератор
Отправлено: 21 Октября, 2012 - 15:21:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Panoptik пишет:
в будющем будет очень актуально

+1
(Добавление)
Panoptik пишет:
по теме кстати вот еще что находил:

Panoptik за ссылочки лови жирный + Радость
С интересом ознакомился Подмигивание
 
 Top
Мелкий Супермодератор
Отправлено: 21 Октября, 2012 - 15:35:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




А перед тем, как окончательно определиться - не помешает подумать ещё раз: http://habrahabr[dot]ru/post/47280/

Nested Set - отличная штука, но не серебряная пуля. На записи оверхед приличный, а на развесистых деревьях - просто огромный. И тупой Adjacency List может быть более рациональным решением.


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 21 Октября, 2012 - 18:45:08
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




И, вдобавок, я бы дал общую рекомендацию вообще стараться избегать деревьев в SQL в каком бы то ни было виде.
Nested sets - хорошо только когда идет множество запросов на выборку при редких запросах на запись (по сути, это в основном OLAP-приложения)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
armancho7777777 Супермодератор
Отправлено: 21 Октября, 2012 - 19:39:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Отдельное спасибо знатокам )
Было интересно ваше мнение )
(Добавление)
Мелкий пишет:
А перед тем, как окончательно определиться - не помешает подумать ещё раз: http://habrahabr.ru/post/47280/

+1
 
 Top
caballero
Отправлено: 21 Октября, 2012 - 20:00:43
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




лично я юзаю вариант с материализованными путями. Любая выборка или изменение одном запросом.

Цитата:
И, вдобавок, я бы дал общую рекомендацию вообще стараться избегать деревьев в SQL в каком бы то ни было виде.


если бизнес-логика задачи предполагает некую таксономию, что сплошь и рядом,
то куда деваться.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB