![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 1 Dołączył: 15.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
witam, zabieram sie za budowe strony na wzor rankingu fifa, czyli obliczanie punktow z meczy, wyswietlanie pozycji etc, tyle ze nie bedzie to zwiazane z pilka nozna a klany (teamy) w takiej strzelance internetowej ;)
pytanie - jak stworzyc strukture bazy danych aby to w miare mialo rece i nogi. napewno w bazie musze miec zawarte info o druzynach, info o meczach, o zawodnikach no i sam ranking druzyn. jak to poukladac? zaczalem od stworzenia tabeli z druzynami, a w niej takie pola jak: id druzyny, nazwa, ilosc meczy, mecze wygrane, przegrane, remisy, punkty w rankingu (wg ktorych ustalana jest pozycja), natsepnie chce stworzyc tabele z kolejnymi meczami, czyli ktore druzyny graly, wynik druzyny1, wynik druzyny2, rodzaj meczu (towarzyski, pucharowy, rankingowy etc), data meczu - da sie pozniej z takiej tabelki wyciagnac poprzez zapytania ktora druzyna wygrala i odpowiednio zmienic dane w drugiej tabeli, zeby sie punkty podliczyly i zsumowaly mecze? :) do tego dojdze kolejna tabelka w ktorej beda zawarci wszyscy czlonkowie druzyny (czyli po prostu gracze) ale to juz mniej wazne chyba... do tego, co bedzie mysle wiekszym problemem, punkty beda liczone na zasadzie takiej, ze bedzie to srednia punktow z meczy rozegranych w 6 ostatnich miesiacach... ale to inna bajka i bede msylec jak sie z tym uporac pozniej czy dobrze robie z takim ulozeniem struktury bazy danych czy polecilibyscie mi cos innego? czy jest cos wedlug was co pominalem a powinno sie znalezc? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 9 Pomógł: 2 Dołączył: 8.12.2006 Skąd: powiat tarnowski Ostrzeżenie: (0%) ![]() ![]() |
Ja bym to zrobił tak:
pierwszą tabelę drużyny : id_drużyny nazwa druga tabela - mecze id_meczu rodzaj_meczu (towarzyski, a może inny?) data_meczu (wiadomo) id_drużyny1 \(żeby było wiadomo kto z kim gra) id_drużyny2 / wynik_drużyny1 (w meczu)\ np. 1 wybnik_drużyny2 (w meczu)/ . 0 punkty_drużyny1 (za mecz) \ np.3 punkty_drużyny2 (za mecz) / 0 Chociaż nie wiem, czo może nie lepszym rozwiązaniem (ze względu na prostotę zapytań było by): druga tabela - mecze id_meczu rodzaj_meczu (towarzyski, a może inny?) data_meczu (wiadomo) id_drużyny wynik_drużyny punkty_drużyny czyli dla każdego meczu dwa rekordy w tabeli mecze (jeden dla jednej drużyny, drugi dla drugiej, to samo id_meczu rodzaj_meczu i data_meczu) - żeby nie dublować pól rodzaj_meczu i data_meczu możesz zrobić osobną tablicę mecze i tam wrzucać id, datę i rodzaj meczu a do tabeli wyniki dodać tylko id_meczu. Musisz sam zdecydować. Cytat a sie pozniej z takiej tabelki wyciagnac poprzez zapytania ktora druzyna wygrala i odpowiednio zmienic dane w drugiej tabeli, zeby sie punkty podliczyly i zsumowal Która drużyna wygrała? Ta która zebrała 3 punkty za mecz - to da się wyciągnąć przy pomocy zapytania. Punkty też podliczasz poprzez zapytanie. Nie ma sensu wpisywać ich sumy do bazy - od tego jest zapytanie. Zasada jest chyba taka, żeby nie mnożyć bitów w bazie, skoro można do tego użyć zapytań. Cytat do tego, co bedzie mysle wiekszym problemem, punkty beda liczone na zasadzie takiej, ze bedzie to srednia punktow z meczy rozegranych w 6 ostatnich miesiacach... ale to inna bajka i bede msylec jak sie z tym uporac pozniej Za pomocą PHP wyliczasz datę jaka była pół roku temu podliczasz punkty danej drużyny i dodajesz WHERE data_meczu>data_sprzed_6_miesięcy Z graczami będzie najłatwiej: id_gracza nazwa_gracza id_drużyny Tyle tak na szybko. Akurat mam podobną sytuację bo na własny użytek postawiłem bazę z klasyfikacją tegorocznego sezonu F1. Ten post edytował Szarex 21.03.2010, 19:58:39 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 1 Dołączył: 15.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
dzienki, a powiedzcie mi jeszcze... hem, jednym z pol w tabeli meczow jest sila przeciwnika, obliczana jest ona zasadzie: (200-x)/100 - gdzie x jest miejscem przeciwnej druzyny w rankingu, jak to mozna rozwiazac w mysql?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Google 'mysql ranking' i na pierwszym, albo drugim miejscu jest dobry opis.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 1 Dołączył: 15.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Google 'mysql ranking' i na pierwszym, albo drugim miejscu jest dobry opis. z tym akurat poradziłem sobie już wcześniej ;)
Ten post edytował jacke 22.03.2010, 07:59:02 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Ale chcesz przecież dostać miejsce konkretnej drużyny w rankingu
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 1 Dołączył: 15.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ale chcesz przecież dostać miejsce konkretnej drużyny w rankingu Tak, to wiem jak pobrać odpowiedni rekord z bazy (simply). Z drużyny o ID (powiedzmy) 4 wyciągam które zajmuje miejsce w rankingu. Później muszę go podstawić za x do wzoru (200-x)/100 i wrzucić do następnego zapytania które oblicza punkty uzyskane w danym meczu. Później obliczane są średnie meczy z ostatniego miesiąca, później średnia z sześciu miesięcy a na koniec uzupełniane są tabele z rankingiem i poszczególnymi drużynami. Chwilowy przypływ weny w trakcie pracy O.O Ciekawe czy moje znikome znajomości php i mysql pozwolą mi to stworzyć :D oby... |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 07:59 |