Fussball Statistik

PetraSteiner

Fleissiger Benutzer
Beiträge
60
Hallo zusammen,

ich sollte folgende Vorgabe umsetzen:
Eine Fussballmannschaft hat mehrere Spieler.
Ein Spieler kann in einer Saison nur in einer Mannschaft spielen.
Es gibt jedes Jahr eine neue Saison.
Während der Saison sollen Teilnahmen an Spieltagen erfasst werden.

Beispiel:
Peter spielt in der Saison 17/18 in Team 3. Er hat an 9 Spielen teilgenommen.
Peter spielt in der Saison 18/19 in Team 1. Er hat an 18 Spielen teilgenommen.

Ich hätte jetzt folgende Tabellen angelegt:
- Spieler (Mitgliedsnummer (PK), Vorname, Nachname, Geburtsdatum, ...)
- Mannschaften (ID (PK), Mannschaftsname, SaisonID (FK))
- Saison (ID (PK), Jahr, Saisonbezeichnung)
- SpielerMannschaften ( Mitgliedsnummer (FK), MannschaftenID (FK))

Die Spiele habe ich jetzt soweit noch nicht berücksichtigt.
Bin ich so auf dem richtigen Weg oder müsste ich evtl. anders vorgehen?

Vielen Dank für Hinweise
Petra
 
Werbung:
auf dem ersten Blick nicht falsch. Die letzte Tabelle sollte noch die Saison haben, oder? Oder ist das via Mannschaften.SaisonID - Saison abgedeckt?
 
Danke für die Antwort. Da bin ich mir nicht ganz sicher, wie es richtig ist.
Eigentlich besteht jede Mannschaft nur eine Saison. Vermutlich kann ich mir eigentlich die Saison auch sparen. In dem ich die Felder Jahr und Bezeichnung gleich der Mannschaft zuordne. Oder macht es sinn bei der n:m Relation Spieler/Mannschaft die Saison hinzufügen?

Ich muss hinterher auswerten können:
- In welchen Mannschaften spielte Spieler X
- Welche Mannschaften gab es in der Saison XY
- Wie sah die Spielerstatistik von Spieler X in den letzten Jahren aus?

Viele Grüße
Petra
 
Wie wäre es, einfach mal sich ein kleines SQL-Script zu basteln, welches die Tabellen erstellt und da einige Daten reinwirft. Eine SQL-Datenbank wie z.B. PostgreSQL ist ja schnell installiert. Dann versuchst Du, Deine Auswertungen zu machen. Da merkst Du recht schnell, ob es geht. Das kannst Du dann auch hier zeigen, und wir schauen alle mal drüber.
 
Ich habe mir eine Datenbank angelegt und einen Dump als Anlage.

So bekomme ich zumindestens mal die Spieler einer Mannschaft raus.
Code:
SELECT
spieler.vorname, spieler.nachname, spieler.geburtsdatum,
mannschaften.mannschaftsname
FROM spielermannschaften
JOIN spieler
ON spielermannschaften.mitgliedsnummer = spieler.sid
JOIN mannschaften
ON mannschaften.mid = spielermannschaften.mannschaftenid
WHERE mannschaftenid = 3

Bin mir aber nicht sicher wo ich die Saison zuordne. Passt das so?
Im Prinzip gibt es Mannschaften, die es jedes Jahr gibt. (Aktive I, Aktive II, U23, A-Jugend)

Viele Grüße
Petra
 

Anhänge

  • fussball.txt
    4,8 KB · Aufrufe: 3
Ich komme irgendwie nicht weiter.
Bin mir völlig unsicher wo ich die Saison einbinden muss.
Wenn ich bestimmte Abfragen will, muss ich teilweise 5 Tabellen joinen um an die Daten ranzukommen. Ist das nicht zuviel?

Grüße
Petra.
 
Moin.

Ich hab mal kurz in den Dump geschaut (hey, PostgreSQL ;-)).

Was ich anmerken möchte:

  • Du verwendest keinerlei Fremdschlüssel. Das ist schlecht. Zum beispiel Tabelle "spielermannschaften", da sollte "mannschaftenid" doch auf "mannschaften", "mid" verweisen.
  • dazu müßten dort aber diese Felder, also z.B. "mannschaften"."mid" als PRIMARY KEY definiert sein - was nicht der Fall ist
  • Tabelle "spielermannschaften": auch hier, keine Fremdschlüssel. Und: ein Spieler kann dieses Jahr in dieser Mannschaft sein, nächstes Jahr in einer anderen. Das könnte in dieser Tabelle mit abgebildet sein (z.B. in einer DATERANGE-Spalte)
  • in "mannschaften" scheint mir die "saisonid" falsch, die wohl eher in die "spielermannschaften", das wäre dann auch die Zuordnung, welcher Spieler in welcher Saison in welcher mannschaft ist
 
@akretschmer

Vielen Dank für das Feedback. Gibt es für Postgresql ein Tool, mit dem aus einer Datenbank ich einfache CreateScripte machen kann? Also kein Dump, sondern ein kleines CreateScript.

Die Fremdschlüssel baue ich noch ein. Ich benötige ja noch zwei Tabellen (Spiel und Spielspieler).
Also ich muss ein Spiel erfassen und die Spieler, die dabei beteiligt waren. Dort brauche ich auch noch eine Verknüpfung zu der betroffenen Mannschaft. Passt das?
 
Gibt es für Postgresql ein Tool, mit dem aus einer Datenbank ich einfache CreateScripte machen kann? Also kein Dump, sondern ein kleines CreateScript.
Das geht auch ganz einfach mit pg_dump. Dem kannst Du sagen, daß Du nur einen Schema-Dump willst, also die Definition der Tabellen, aber keine Daten, und auch eingrenzen, welche Tabellen drin sein sollen.

Andreas
 
Werbung:
in "mannschaften" scheint mir die "saisonid" falsch, die wohl eher in die "spielermannschaften", das wäre dann auch die Zuordnung, welcher Spieler in welcher Saison in welcher mannschaft ist
Ist es falsch, wenn ich die Zuordnung in den "mannschaften" mache? Der Mannschaftsname zusammen mit der Saison ist im Prinzip der Primary Key. Es gibt nur eine Mannschaft in einer Saison. Also Team I gibt es in der Saison 2017/18 und 2018/19.
In der Tabelle "spielermannschaften" ordne ich ja die entsprechende ID der Mannschaften zu.
Da fehlt mir gerade der Durchblick und die Erfahrung...

Gruß
Petra
 
Zurück
Oben