ďťż
 
Drzewo uniwersalne ďťż
 
Drzewo uniwersalne
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • own-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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com