![]() |
![]() ![]() |
![]() |
![]()
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...
Będę wdzięczny za rady ![]() |
|
|
![]()
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 |
|
|
![]()
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 ?
|
|
|
![]()
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 |
|
|
![]()
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
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.06.2025 - 21:51 |