Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Relacja sama do siebie
Kuziu
post 24.10.2010, 13:35:31
Post #1





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Cześć,

mam taki problem:

Tworzę coś w stylu edytora kodu z czego każdy kod może się składać z innych kodów. A więc każdy może zawierać w sobie inny kod i tak bez końca. Wydaje mi się logiczne użycie tutaj relacji w tabeli samej do siebie. A więc jakiś element w tabeli wskazuje na inny element w tej samej tabeli i tak można zagnieżdżać obiekty bez końca, jednak gdzieś czytałem że to zła praktyka, no i też ilość zapytań strasznie mi się namnoży gdyż jeśli zagnieżdżę kilka kodów w sobie, to żeby pobrać zawartość jednego z nich będę wykonywał kilka/kilkanaście zapytań SELECT, dla kolejno znalezionych rekordów.

Czy da się to jakoś inaczej zrobić czy też rozwiązanie jakie planuję wdrożyć jest dobre?


--------------------
Słońce zachodzi ... kolejna noc nadchodzi ...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Crozin
post 24.10.2010, 14:20:58
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


To mi wygląda na najzwyklejsze drzewko. A o strukturach drzew jest od groma wątków.
Go to the top of the page
+Quote Post
Kuziu
post 24.10.2010, 17:24:38
Post #3





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

Ostrzeżenie: (0%)
-----


No właśnie nie do końca drzewko, bo w drzewku masz unikalny obiekt w każdej gałęzi, a tutaj 1 kod może znajdować się w wielu kodach.


--------------------
Słońce zachodzi ... kolejna noc nadchodzi ...
Go to the top of the page
+Quote Post
Crozin
post 24.10.2010, 18:26:12
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Nic nie stoi na przeszkodzie by zrobić z tego zwykłe drzewko. Po prostu strukturę drzewa przenieś do oddzielnego zasobu (tu: tabeli).
Kod
Kody: id | kod
Drzewko: id | id_kodu | kolumny dla struktury drzewa
Go to the top of the page
+Quote Post
Kuziu
post 24.10.2010, 18:51:25
Post #5





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Hmmm może nie do końca jasno to wytłumaczyłem...

Kod składa się z treści tekstowej, ale dodatkowo może również zawierać w sobie kilka innych kodów.

Więc jest jakby zarówno katalogiem i plikiem.

Mam teraz taką strukturę:

Kod
Kod: id | nazwaKodu
Kod_zrodlo: id | id_kodu | id_zrodlowegoKodu | treśćKodu


I teraz, jeśli id_zrodlowegoKodu = 0 to znaczy że jest to czysty kod tekstowy i pobieram treśćKodu

jeśli jest id_zrodlowegoKodu > 0 to muszę pobrać Kod i znów wszystkiego jego kody_zrodlowe, i tak to zapętlić rekurencyjnie, aż otrzymam same kody z czystym tekstem. Siedzę już nad tym pół dnia i chyba bez rekurencyjnych zapytań się nie da. Chciałem zrobić tez tak jak podałeś z drzewkiem, ale wtedy każdy zapis musiałby iść w kilka miejsc, bo jesli ten sam plik by był w wielu katalogach to jego zmiana pozycji czy skasowanie musiało by wpłyną na kod w wielu katalogach. Więc albo wiele zapytań przy zapisie lub przy odczycie. No chyba że macie na to jakoś sposób.


--------------------
Słońce zachodzi ... kolejna noc nadchodzi ...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 09:46