Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Opinia na temat stworzenie tabeli wynikow
Forum PHP.pl > Forum > Bazy danych > MySQL
lexis72
Witam,
Mam do Was pytanie odnosnie sposobu zbudowania tabeli do wynikow typu sportowego gdzie wprowadzane beda czasy poszczegolnych zawodnikow i na tej podstawie tworzone tabele-klasyfikacje oraz statystyki typu kto ile razy zajal jakie miejsce itp. W kazdej dyscyplinie bedzie rozgrywanych duzo zawodow ktore tworzyc bede w osobnej tabeli i oznaczal je kolejnymi numerami id+nazwa tych zawodow i potem w wynikach do kazdego czasu i nazwiska zawodnika bede dodawal te id w jakich zawodach ten czas zostal osiagniety.

I teraz mam zasadnicze pytanie czy w takiej sytuacji sadzicie ze powinienem wstawic dodatkowa kolumne w ktorej wpisywalbym pozycje ktora dany zawodnik zajal w danych zawodach czy lepiej zostawic to poleceniu do bazy ktore bedzie sortowac czasy i sprawdzac ktory to byl czas z kolei?
Ma to dla mnie zasadnicze znaczenie bo jesli nie dodam tej kolumny bedzie mi latwiej dodawac wyniki bowiem nie bede musial ich sam sortowac tylko po prostu wpisywac do bazy oznaczajac tylko w jakich zawodach byly zrobione a skrypt sam obliczy miejsce ponadto takie rozwiazanie bedzie tez latwe w przypadku modyfikacji wynikow np kary, wystarczy ze zmienie czas a w tabeli automatycznie zmieni sie pozycja zawodnika a jesli bede chcial kazdego oznaczac pozycjami to przy okazji bede musial tez zmieniac numery pozycji wszystkim ktorzy w wyniku takiej kary zmienili swoje miejsca w klasyfikacji. Ale z drugiej strony majac fizycznie pozycje poszczegolnych zawodnikow w poszczegolnych zawodach bedzie mi latwiej nimi zarzadzac, o ile zwykla tabela z wynikami to nie problem bez wzgledu na wariant to juz statystyki zawodnikow bedzie duzo latwiej tworzyc majac te miejsca zapisane w bazie (np wyswietlenie zawodow w ktorych jakis zawodnik byl pierwszy, liczenie srednich pozycji itd)

Dlatego mam dylemt i chcialbym poznac Wasze zdanie, czy wiecie jak profesjonalisci tworza takie bazy? Ktory wariant wybieraja?


TABELA ZAWODY
- ID zawodow
- Nazwa zawodow

TABELA Z WYNIKAMI (Wariant 1)
- Id wyniku
- Id zawodow
- Zawodnik
- Czas
- (Jakies inne atrybuty kary, narodowosc itd)

TABELA Z WYNIKAMI (Wariant 2)
- Id wyniku
- Id zawodow
- Zawodnik
- Czas
- Miejsce (pozycja w danych konkretnych zawodach)
- (Jakies inne atrybuty kary, narodowosc itd)
Pyton_000
bez miejsca, jest to kolejne pole które będziesz musiał ręcznie wyliczać i dbać o aktualizację. Tak jak napisałeś jak zmieni się czas na gorszy to w najgorszym wypadku będziesz musiał przeliczyć wszystkie rekordy z danych zawodów i zrobić update.
lexis72
No dobra ale wiesz jak ciezko bedzie zbudowac zapytania do statystyk bez miejsc w wynikach nie mowiac juz jaki to bedzie mialo wplyw na baze. Kilka przykladow:

- chce znalezc w jakich zawodach zawodnik XYZ zajal powiedzmy pierwsze i trzecie miejsce. W wariancie z miejscami wystarczy zapytanie ktore znajdzie 'jedynki' i 'trojki' przy nicku tego kierowcy i poda id tych zawodow podczas gdy w drugim wariancie bedzie trzeba robic zapytanie ktore bedzie analizowalo kazde zawody oddzielnie, w locie tworzylo tabele z czasami i sprawdzalo podane wyzej warunki.

- chce zrobic tabele 10 najlepszych zawodnikow w danym roku na podstawie ich srednich wynikow. O ile w pierwszym wariancie to pestka zarowno dla mnie jak i bazy to w drugim liczenie wszsytkim zawodnikom sredniej z wynikow ustalanych w locie moze byc klopotliwe.
ghost1511
Możesz bez problemu wyszukać zawodnika który zajął 3 miejsce. Ja osobiście napisałbym dodatkowy widok który w pierwszej kolumnie zwracałby miejsce. Są konstrukcje które na to pozwalają. A Ty nie musiałbyś martwić się o aktualizowanie tabel wink.gif
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.