Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Baza danych dla managera sportowego
Forum PHP.pl > Forum > Przedszkole
Mefiuu
Witam. Mam dziś raczej pytanie ogólne, nie odnośnie samego kodu wink.gif jestem fascynatem sportu, mam założone konta w dwóch managerach sportowych (różne dyscypliny). Zastanawia mnie w jaki sposób przechowywane są dane w takiej bazie danych ? Baza musi składać się z wielu tabel, z ogromnej ilości wpisów ? Nie chodzi mi o samo działanie silnika meczowego, myślę, że to byłbym w stanie napisać. Chodzi mi bardziej o przechowywanie danych o poszczególnych meczach. Przypuśćmy, cała liga IV gra mecze we wtorek o 17. Zapewne Cronem odpalam regularnie skrypt który mi te mecze oblicza. Dla każdego meczu miałbym tworzyć osobną tabelę? Przypuśćmy, że użytkownik nie zalogował się od równej 17 aby obejrzeć mecz, tylko albo o 17:50 albo w ogóle nad ranem, po meczu. Jak to wygląda? Opis każdego meczu z osobna jest trzymany w osobnych, unikalnych tabelach ? A później przy logowaniu usera są wyszukiwane te tabele związane z nazwą jego drużyny?

Nie, nie zamierzam na razie tworzyć swojej gry, pytam czysto teoretycznie.

Podobno kto pyta nie błądzi wink.gif

Z góry dzięki za odpowiedź !
lobopol
A po co osobne tabele? Po prostu relacyjna baza danych dajmy na to taka pseudostruktura:
Kod
mecz: //trzymasz tu każdy mecz
-id
-kto
-z_kim
-kiedy
-kto_wynik
-z_kim_wynik

mecz_opis: // dodajesz tu do każdego meczu jakieś wydarzenia na daną minutę
-id_meczu //relacja do mecz
-czas
-opis_meczu

użytkownik
-id
-login
-haslo
-etc.

uzytkownik_mecz //jeżeli chcesz pozwalać obstawiać
-id
-id_mecz //relacja mecz
-id_uzytkownik //relacja user
-kto_wynik
-z_kim_wynik


i zapełniasz danymi, a później je tylko wyświetlasz
Mefiuu
hmmm... no w sumie pewnie to tak jest zorganizowane. Ale dajmy na to, że chcę dodawać dane regularnie, co punkt (siatkówka). Wtedy w tabeli "mecz_opis" w polu "opis meczu" dam na przykład: "Atak z krótkiej, prowadzimy". To będzie komentarz do jednej akcji jednego meczu. Przypuśćmy że gra się rozrasta, jest 5 krajów, w każdym po 100 lig po 16 drużyn w każdej. Meczy multum, jeśli do jednej tabeli tyle wpisów dodam to nie padnie ?
lobopol
Kwestia konfiguracji bazy, jak długo są dane trzymane, jaka baza (mysql/postgre/orecle/mssql/etc.). Na to pytanie nie ma prostych odpowiedzi.
Mefiuu
przypuśćmy że baza MySQL (bo z postgresql chyba ciężko o dobry hosting ?), no i przypuśćmy że jest po 16 drużyn, każda kolejka we wtorek i niedzielę, czyli 30 kolejek załatwiamy w 15 tygodni (plus pewnie ze 2 tygodnie po sezonie trzymamy dane, jeśli ktoś by chciał wrócić do jakiegoś meczu i przeanalizować). Raczej ciężko wykonalne ?

Dopytuję tak, bo nie mam doświadczenia w tak dużych rozmiarowo bazach wink.gif
lobopol
30 wpisów to jest nic, nie powinieneś mieć problemów z 300 000 wpisów (a nawet więcej), jeżeli będziesz miał poprawne indeksy.
Mefiuu
ale teraz tak policzyłem:

Przypuśćmy że w lidze gra 16 zespołów. Dajmy na to że jest 200 lig. W sezonie jest 30 kolejek x 15 meczy x (w najgorszym wypadku) 5 setów (4 sety wyniki 25:20 i tie break 15:10) daje nam:

200 x 30 x 15 x (4 x 45 + 25) = 18 450 000 wpisów po całym sezonie.

Oczywiście to przy założeniu że każdy mecz trwa 5 setów, w każdym są wysokie wyniki. Ale oczywiście się zdarzają mecze po 3:0, walkowerem, lub każdy w secie do na przykład 5.

Ale najgorszy wypadek jest taki.

Chyba żadna tabela takiego natłoku danych nie wytrzyma ?

Chyba że dzielić tabele i na przykład robić tabele dla 1 ligi (4 grupy) i 2 ligi (16 grup), osobną dla 3 ligi (64 grupy) i dla 4 ligi (128grup x 16 drużyn). No i dodatkowo rozgrywki pucharowe w oddzielnej tabeli, międzynarodowe/reprezentacyjne też, dla ligi niemieckiej osobny podział...

Ale baza będzie przecież potężna ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.