Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Drzewiasta struktura strony
Forum PHP.pl > Forum > Bazy danych > MySQL
Komunista
Witam.
Od jakiegoś czasu przybierałem się do pisania małego systemu - "niestety" jak to zwykle bywa projekt trochę się rozrósł. Wymyśliłem, że będzie dostępnych kilka typów "contentu", mianowicie: zwykła strona (tekst z bazy), moduł (moduł to np. księga gości, formularz kontaktowy), widok (renderowanie jakiegoś pliku).
Dajmy na to tabela "struktura" porządkująca "content". Z wykorzystaniem nested tree bo to chyba najlepsze rozwiązanie(?).
- id elementu
- nazwa
- typ
- lft
- rgt
W praktyce takie drzewko ma wyglądać tak:
Kod
root

  artykuły
    php
      oop
    sql
  jakaś podstrona - np. zrenderowany widok
  formularz kontaktowy - no i to jest moduł
  znów sobie jakas podstrona - tym razem tekst z bazy


I dla każdego typu tabela z potrzebnymi informacjami jak np. nazwa modułu, czy plik widoku.

Konkretnie chodzi mi o uzyskanie takiej struktury danych jak np. tu na stronie http://www.typolight.org/ . Jak już przy TL jestem to powiem, że chciałem z niego trochę zaczerpnąć, jednak tam jest to dość bardziej rozbudowane od tego, czego potrzebuję, a nie chciałbym przekombinować na początku.

Podsumowując, chciałbym się dowiedzieć jakie informacje trzymać w drzewie, a jakie poza nim. Mile widziane jest również wytknięcie wad takiego rozwiązania oraz ciekawe pomysły winksmiley.jpg
erix
Wygooglaj sobie temat mysql drzewka, jest tego troszkę. [;

Cytat
Podsumowując, chciałbym się dowiedzieć jakie informacje trzymać w drzewie,

A jaśniej?
Komunista
No właśnie chodzi o ocenę mojej koncepcji bo sam już nie wiem jak to ugryźć wstydnis.gif
Z samym wdrożeniem nie powinno być problemu, chodzi o to czy idę dobra drogą
erix
Jest kilka koncepcji drzewek; IMHO najlepszą w implementacji (wydajność) jest struktura z zapisywaniem kolejności oraz zagłębienia danych pozycji.

Fakt, funkcje zarządzające (przenoszenie, kasowanie) wymagają rozpisania, ale poszukiwanie np. rodzica, czy dzieci w takim drzewku jest błyskawiczne.
Komunista
Z tym jak wspominałem powinienem sobie poradzić, chcę to najpierw jakoś sensownie zaplanować.
Dodaję element do drzewa, elementy mają wspólne atrybuty takie jak np. layout, i teraz zastanawiam się czy nie utworzyć tabel:
struktura - id, położenie
elementy - id elementu, typ, atrybuty
i osobne tabele dla każdego typu elementów
Czy wrzucić typ i atrybuty do struktury. Przeglądając różne źródła widziałem, że i różne typy danych bywały w jednej tabeli, jakoś mi się to nie podobało, jednak całość działała. I stąd te moje rozterki bo przyznam (zresztą to widać), że na projektowaniu baz danych się nie znam.
Pilsener
Dlatego trzeba ogarnąć kilka różnych koncepcji, ja używam np. tej:
http://blog.mwojcik.pl/2008/02/17/drzewa-k...-php-metoda-ip/
WebCM
Korzystam z zagnieżdżonych drzew (ang. nested sets). Zapisuję także ID drzewa nadrzędnego, aby potem odbudować strukturę. Kod odbudowy: http://webcm.pastebin.pl/9744
erix
Ok, ale zobacz, ile zapytań musisz wywołać w celu skonstruowania drzewa.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.