baza danych np. walk bokserskich

0

Witam,

jak podejść do projektu baz danych
chodzi o zapis kariery zawodnika, np. boksera, czyli lista jego walk, z kim, jaki wynik,

mam tabele "zawodnicy" -> zawodnik_id (wszystko jasne)

myślałem o zrobienie tabeli - koncepcja:

WALKI
ID_walki
data
zawodnik_id1
zawodnik_id2
wynik_id1
wynik_id2

(lub jak inaczej, bo teraz co pierwsze wymyśliłem, to wrzucić dwa razy id, i ogólnie porypane)

do tej tabeli WALKI
jeszcze potrzebny wynik,
najlepiej w postaci 1-wygrana, 2-przegrana, 3-remis

tak żeby potem to ładnie sumować,(listować listę walk i wygrane pogrubiać czcionką itp i inne rodzaje statystyk, itp.)
np. Janek Cios | 8(wygranych) | 0(remisów) | 3(przegrane)
2009.11.11 z Krzyskiem - wygrana
2010.12.12 z Jakubem - wygrana
2011.11.11 z Groźnym - przegrana

będę wdzięczny za koncepcje

Pozdrawiam,

0

jeśli tabelke Walki zrobisz jak napisałeś, to troche skomplikujesz sobie query wybierające z niej dane statystyczne, ktore chcesz

proponuje posiłkować się drugą tabelką:
Walki
Id
data
miejsce
...

WalkiZawodnicy
IdWalki
IdZawodnika
Wynik (Wygr./Remis/Przegr. lub jakieś punkty, nie wiem jak się KO oznacza)

oczywiście to rozwiązanie ma wady, które mi zaraz wytkną inni :) ale łatwo będzie wyciągnąć dane o które ci chodzi
dlatego zasugerowałem taki koszmarek, bo do większości baz i tak pisane są aplikacje (albo właściwie odwrotnie), więc teoretycznie zmiany pochodzą z aplikacji, jesli te są prawidłowo napisane, to baza nie powinna się rozspójnić
moja propozycja umozliwi teoretycznie przypisanie do jednej walki wiecej niż 2 zawodników (ale jak chciałbyś mieć baze ustawek kiboli to bazke już masz :D) i każdy mógłby mieć wynik wygrana (zależy w jakiej formie trzymany) - te problemy musiałbyś rozwiązać na poziomie formularz, przez który będziesz wprowadzał walki do bazy

0
massther napisał(a)

jeśli tabelke Walki zrobisz jak napisałeś, to troche skomplikujesz sobie query wybierające z niej dane statystyczne, ktore chcesz

znaczy co się skomplikuje bo jak dla mnie to tabelka może być

proponuje posiłkować się drugą tabelką:
Walki
Id
data
miejsce
...

WalkiZawodnicy
IdWalki
IdZawodnika
Wynik (Wygr./Remis/Przegr. lub jakieś punkty, nie wiem jak się KO oznacza)

a z dodatkową tabelką to nie będzie bardziej skomplikowane?

0

ogólnie co do danych statystycznych, to może być i 20 tabel :) ideę mam taką, żeby tak zaprojektować tabele, że w przyszłości już bez ingerencji w tabele będę posiadał możliwość dopisywania w aplikacji setek nowych statystyk (średnia walk, średnia z ost. 10 walk, rozbicie na poszczególne lata 2010, 2011, 2012, itp.)
na razie chcę rozwiązać system dla poszczególnych zawodników,
i co najważniejsze, każda walka to zmiana w punktach rankingowych (wg różnych systemów, opcja a: za wygraną bezpośrednią walkę wg określonej ilości punktów, wg, systemu, że wygrany x zdobywa punkty y w zależności od wzoru ...matematycznego (słaby jak pokona dobrego, dostaje więcej punktów niż za innego słabego -ale mniejsza o to , oraz opcja b: ogólnie punkty za wygranie jakiejś imprezy/gali (turniej) (no ale tu wejdzie mi tabela: turniej, pozycja na turnieju, itp.)

pomysł z dodatkową tabelką jest dobry, nie pomyślałem o niej, to znaczy pomyślałem, ale inaczej. więc mam nową opcję :)
co do wygranej/przegranej/remis (to opcja albo 1 albo 2 albo 3 - łatwo to będzie liczyć w zapytaniu) plus dodam idtypwyniku (nokaut, punkty, poddanie, kontuzja, ... ucieczka, gdzie potem zliczę też ile razy w jaki sposób ktoś zakończył walkę.

w opcji z drugą tabelką to właśnie jest ten problem, że mogę wpisać i 3 zawodników, to minus i nie wiem jak w niej też liczyć punkty

w formularzu html wszystko jest jasne:
select turniej
data
select zawodnik 1
select zawodnik 2
select wynik (hmmm, 1 - wygrywa "A", przegrywa "B" wtedy pierwszemu wpisuję 1, drugiemu 2=przegrana)

moja tabelka
WALKI
id
data
zawodnik1
zawodnik2
wynik1 (poprzez formularz)
wynik2 (odwrotność wynik1)

zastanawiam się, jakby do tego miało wyglądać zapytanie
wybieram id zawodnika OK
sprawdzam gdzie występuje, czyli listuję walki gdzie jego id_zawodnik = zawodnik1 lub zawodnik2 OK

ale nie mam bladego pojęcia jak zliczyć poprawnie jego wyniki, załóżmy że zapis w bazie:
1- wygrana, 2- przegrana, 3- remis, A,B,C.. to zawodnicy

id | data | zawodnik1 | zawodnik2 | wynik zawodnika1 | wynik zawodnika2 |
1 | 2010 | A | B | 1 | 2 |
2 | 2010 | C | A | 1 | 2 |
3 | 2010 | A | B | 3 | 3 |
4 | 2011 | D | A | 2 | 1 |
5 | 2011 | A | E | 1 | 2 |

  • 3 wygrane, 1 przegrana, 1 remis
    na oko widać, na sql nie ma bata, przynajmniej ja nie umiem.

mniej więcej o to mi chodzi, teraz chyba napisałem czytelniej :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1