Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapisywanie drzewka binarnego
GreenGo
post 6.12.2016, 19:42:18
Post #1





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

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


Witam,

chciałbym zapisać w tabeli bazy danych drzewko binarne. Jeśli dobrze rozumiem, to oczywiście w bazie danych wystarczy dodać pole parent_id by wiadomo było jaki jest rodzic danego elementu. Mam tylko problem, jak to zapisać w w bazie danych, mając na w stępie np. 8 elementów. Ogólnie ma to być drabinka rozgrywek pucharowych w piłkę nożną. Tak więc na początek mam 4,8,16... zespołów, losowe zespoły łączę w pary i taka para tworzy "grę", którą chcę zapisać do bazy. Jako iż chcę od razu rozrysować drabinkę całą drabinkę, to muszę od razu zapisać w bazie danych wszystkie gry pomimo, że znam tylko drużyny biorące udział w pierwszej rundzie. Ale skoro chce od razu zapisać wszystkie gry w bazie, to by znać ID rodzica, musze to zacząć robić od gry finałowej... czy dobrze kombinuje? Jakoś ciężko mi rozpisać to na pętle bo chyba każda nowa noga drzewka to musi być nowa pętla, więc ich ilość zależy od ilości drużyn...

  1.  
  2. gra1--
  3. --gra5--
  4. gra2-- |
  5. gra7
  6. gra3-- |
  7. --gra6--
  8. gra4--
  9.  


Będę wdzięczny za rady smile.gif
Go to the top of the page
+Quote Post
nospor
post 6.12.2016, 20:06:16
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie lepsza tu bedzie struktura:
ID, CHILD_1, CHILD_2
?

wowczas tworzenie "drzewa" rozpoczynasz normalnie od dolu i nie musisz wybiegac w przyszlosc. Poza tym kazdy element moze miec albo 0 albo 2 dzieci.
Oczywiscie nie wiem co tam jeszcze potem zamierzasz z tym robic, ale na chwile obecna to mi sie wydaje ok


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
GreenGo
post 6.12.2016, 20:22:37
Post #3





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

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


No rzeczywiście zapisywanie dzieci będzie lepsze niż zapisywanie rodzica. Tylko w takim razie pytanie. Mogę obliczyć ilość rund ( poziomów ) w takim drzewku. I pierwsza pęta to będzie pętla po tych właśnie rundach ( dla 8 zawodników będą 3 rundy) a druga pętla będzie iterowała po grach w rundzie ( dla 1 rundy 4 gry, potem 2 i 1 ). Tak więc aby w drugiej rundzie móc nadać ID polom CHILD_1 i CHILD_2, muszę w pierwszej rundzie zbierać do tablicy ID tych dzieci, a następnie je wstawiać przy kolejnej iteracji po rundach. Nie wiem czy ja źle kombinuje czy takie rozwiązanie wydaje mi się po prostu mało "ładne" ale jest prawidłowe ?
Go to the top of the page
+Quote Post
nospor
post 6.12.2016, 20:31:20
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie bardzo rozumiem problem.

W pierwszej rundzie ma 4 druzyny to tworzysz 4 rekordy w bazie. Mozesz nawet dodac do tablicy co ci podalem pole RUNDA i tam zapisywac aktualne runde.
Tak wiec pierwsze 4 rekordy nie beda mialy dzieci, ale beda mialy ID i beda mialy ustawione RUNDA na 1
W rundzie 2 wiesz jakie gry wchodza w sklad kolejnych gier z rundy 2 wiec tworzy gru w runda 2 i ustawiasz CHILD1 i CHILD2 na wybrane gry z runda 1
itd


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
GreenGo
post 6.12.2016, 21:31:34
Post #5





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

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


Dzięki, jak to zacząłem pisać to się wszystko wyjaśniło smile.gif
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: 12.06.2025 - 21:51