Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Relacja sama do siebie
Kuziu
post
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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kuziu
post
Post #2





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.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 5.10.2025 - 18:05