![]() |
![]() |
![]()
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 ...
|
|
|
![]() |
![]()
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.
|
|
|
![]()
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 ...
|
|
|
![]()
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 |
|
|
![]()
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 ...
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.07.2025 - 09:46 |