Baza danych-ekstraklasa

0

Witam
Projektuje bazę danych , która będzie miala za zadanie przechowywać wyniki klubów tzn zdobyte bramki, punkty. Jaki zawodnik nalezy do jakiego klubu, ile strzelil bramek.

user image

I tu moje pytanie jak polaczyc relacja tabele aby KlubBramki z tabeli Klub sumowaly zdobyte bramki IdKliubGospodarze BramkiGospodarze/ IdKlubGoscie BramkiGoscie. Mam powiazane relcja IdKlub z IdKlubGospodarze i IdKlub z IdKlubGoscie. Ale jak powiazac te zdobyte bramki z Id poszczegolnego Klubu. zeby wynik pojawialy sie w tabeli Klub w oknie KlubBramki.

user image

Albo jak zrobić powiązania IdKlub z zdobytymi bramkami??

0

Jak dla mnie to masz coś źle zrobione. Masz tak interesujące dane jak wzrost i waga oraz numer koszulki (zakładasz oczywiście, że są to dane niezmienne i dlatego umieściłeś je przy zawodniku), ale nie przechowujesz nigdzie informacji kto dla kogo i kiedy strzelił bramkę.
To niejedyny błąd w Twoim schemacie... Niepotrzebna jest relacja między Zawodnik -> Pozycja. Skoro zdefiniujesz, że np. Nowak gra jako lewy pomocnik to w żadnym meczu nie możesz go wystawić na środku, bo SELECTy Ci nic nie zwrócą jeśli połączysz je wg schematu (jest sprzeczność). poza tym nigdzie nie odnotowujesz przeiwnień i innych statystyk meczowych, nie wspominając o zmianch zawodników.
Ale co ja tam mogę wiedzieć... o piłce nożnej.

pozdrawiaMM

0

Jakby co ja w ogóle piłką się nie interesuję :)
I nie wiem czemu Dudka na mundial nie wzięli? :)

Ale jak powiazac te zdobyte bramki z Id poszczegolnego Klubu. zeby wynik pojawialy sie w tabeli Klub w oknie KlubBramki.

Same się nie pojawią, musisz wybrać z meczów odpowiednie dane i zaktualizować dane o klubach.

Generalnie jak Marcin wspomniał twoja struktura ma wiele niedociągnięć i błędów.

  • z klub wyjąłbym punkty i bramki i przeniósł je do jakiejś tabeli zależnej od sezonu (czy jak to się nazywa)
  • mecz jak Marcin napisał powinien trzymać więcej metadanych (jakieś dodatkowe tabelki) o golach, kartkach, zmianach
  • podejrzewam że relacja zawodnik-pozycja wyznacza jakąś domyślną pozycję zawodnika, ale w danym meczu moze grać on an innej pozycji
  • w MeczZawodnik kluczem powinno chyba być meczId+zawodnikId+pozycjaId
  • między zawodnikiem a klubem zrobiłbym dodatkową tabelę, gdzie trzymałbym od kiedy, do kiedy gra w danym klubie, na jakiej domyślnie pozycji, nr koszulki, ...
-- mecze wygrane przez drużynę X
select sum(wygranych) as wygranych from
(
select count(*) as wygranych from Mecz where IdKlubGospodarze = X and BramkiGospodarze > BramkiGoście
union all
select count(*) as wygranych from Mecz where IdKlubGoscie = X and BramkiGoście > BramkiGospodarze
) as T

--zremisowane
select count(*) as remisow from Mecz where (IdKlubGospodarze = X or IdKlubGoscie = X)and BramkiGospodarze = BramkiGoście

--przegranych
select sum(przegranych) as przegranych from
(
select count(*) as przegranych from Mecz where IdKlubGospodarze = X and BramkiGospodarze < BramkiGoście
union all
select count(*) as przegranych from Mecz where IdKlubGoscie = X and BramkiGoście < BramkiGospodarze
) as T

--liczba bramek zdobytych i straconych przez drużynę X
select sum(bramkiZdobyte) as bramkiZdobyte, sum(bramkiStracone) as bramkiStracone from
(
select BramkiGospodarze as bramkiZdobyte, BramkiGoście as bramkiStracone from Mecz where IdKlubGospodarze = X
union all
select BramkiGoście as bramkiZdobyte, BramkiGospodarze as bramkiStracone from Mecz where IdKlubGoscie = X
) as T

Punkty wyliczasz przemnażając odpowiednio zwycięstwa i remisy.

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