1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Fussball Statistik

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von PetraSteiner, 25 Mai 2019.

  1. PetraSteiner

    PetraSteiner Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    auf dem ersten Blick nicht falsch. Die letzte Tabelle sollte noch die Saison haben, oder? Oder ist das via Mannschaften.SaisonID - Saison abgedeckt?
     
  3. PetraSteiner

    PetraSteiner Benutzer

    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
     
  4. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  5. PetraSteiner

    PetraSteiner Benutzer

    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:

  6. PetraSteiner

    PetraSteiner Benutzer

    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.
     
  7. akretschmer

    akretschmer Datenbank-Guru

    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
     
    Walter gefällt das.
  8. PetraSteiner

    PetraSteiner Benutzer

    @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?
     
  9. akretschmer

    akretschmer Datenbank-Guru

    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
     
  10. PetraSteiner

    PetraSteiner Benutzer

    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
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden