Drzewo uniwersalne
Kordian - 03-07-2007 00:04
Drzewo uniwersalne
Witam,
Znalazłem dosyć fajnie przemyślany algorytm na przechowywanie hierarchicznej struktury w DB. Na pewno wielu z Was zna ten model:
http://www.depesz.com/various/variou...ementation.php
Niestety brak jest opisu usuwania, przenoszenia danych miedzy galeziami. Czy ktoś zaimplementował ten algorytm? chodzi mi o zrobienie bardziej menu niż forum, ale dobrze by było stworzyć jakiś uniwersalny algorytm.
Pozdrawiam Kordian
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Piotr 'piter' Hlawski - 03-07-2007 00:04
Kordian wrote:
> Witam, > > Znalazłem dosyć fajnie przemyślany algorytm na przechowywanie > hierarchicznej struktury w DB. Na pewno wielu z Was zna ten model: > > http://www.depesz.com/various/variou...ementation.php > > Niestety brak jest opisu usuwania, przenoszenia danych miedzy galeziami. > Czy ktoś zaimplementował ten algorytm? chodzi mi o zrobienie bardziej menu > niż forum, ale dobrze by było stworzyć jakiś uniwersalny algorytm. >
Usunięcie - usuwasz interesujący cię element (np. o id=5) po czym robisz:
DELETE FROM hierarchy_table WHERE id IN (SELECT r2.id FROM hierarchy_table r1 JOIN hierarchy_table r2 ON r1.child_id = r2.child_id WHERE r1.parent_id = 5 AND r2.depth > r1.depth) OR parent_id = 5
Mała uwaga - dzieci usuwanego elementu zostaną w tym wypadku.
Przesunięcie:
DELETE FROM hierarchy_table WHERE id IN (SELECT r2.id FROM hierarchy_table r1 JOIN hierarchy_table r2 ON r1.child_id = r2.child_id WHERE r1.parent_id = 5 AND r2.depth > r1.depth); INSERT INTO hierarchy_table (parent_id, child_id, depth) SELECT r1.parent_id, r2.child_id, r1.depth + r2.depth + 1 FROM hierarchy_table r1, hierarchy_table r2 WHERE r1.child_id = parent_id AND r2.parent_id = 5;
gdzie parent_id to id elementu, pod który przenosisz.
U mnie (PostgreSQL) to działa.
-- ..:: Piter // phlawski$gmail,com // gg: 4534287 ::. Chuck Norris korzysta z dublerów. W scenach płaczu.
hubert depesz lubaczewski - 03-07-2007 00:04
On 2007-07-02, Kordian <kordian28WYTNIJTO@poczta.onet.pl> wrote: > Niestety brak jest opisu usuwania, przenoszenia danych miedzy galeziami. Czy > ktoś zaimplementował ten algorytm? chodzi mi o zrobienie bardziej menu niż > forum, ale dobrze by było stworzyć jakiś uniwersalny algorytm.
http://www.dbf.pl/faq/tresc.html?rozdzial=1#o1_9
depesz
-- quicksil1er: "postgres is excellent, but like any DB it requires a highly paid DBA. here's my CV!" :) http://www.depesz.com/ - blog dla ciebie (i moje CV)
Kordian - 04-07-2007 00:01
Dzięki serdeczne za odpowiedzi.
Zaraz sobie to spróbuje wdrożyć. Pewnie ten temat jest stary jak porównanie Wigilii do Wielkanocy, ale czy do CMSa (do struktury menu) w ogóle ma znaczenie jaki algorytm wybiorę? Przecież ilość danych jest niewielka. Głownie chodzai o możliwości wyświetlenia całej struktury i zarządzanie strukturą.
Do jakiegoś forum ma to pewnie jakieś większe znaczenie.
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MySQL} - schemat bazy kategorii sklepu internetowego (drzewo)
Uniwersalny mechanizm odczytywania informacji o tabeli
Oracle, PostgreSQL - 'uniwersalny' charset
PgSQL - zapytanie - drzewo dokumentow
Drzeworyt, staloryt itp
logotyp Uniwersytetu Warszawskiego
logo uniwersytetu warszawskiego
Drzewo z ChceckBoxami
jak sprawdzic czy dany plik istnieje, Oracle 8i
Kolejny problem
zanotowane.pldoc.pisz.plpdf.pisz.plown-team.pev.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|