Ligaverwaltung, Teil 1: Datenmodell

Für die meisten Sportarten gibt es Wettbewerbe in Ligen. Oder zumindest Turniere, die ja meist auch als kleine Liga angesehen werden können mit Spielpaarungen und Tabellen. Jedenfalls gibt eine Verwaltung solcher Ligen jede Menge Stoff für eine Datenbankanwendung – mit Datenmodell, Abfragen, Formularen zur Eingabe der Daten und Berichten, um Spielpläne und Tabellen auszugeben. Im ersten Teil der Artikelreihe schauen wir uns an, welche grundsätzlichen Anforderungen es gibt und wie das Datenmodell aussieht.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1904_Ligaverwaltung.accdb.

Anforderungen

Was macht eigentlich eine Liga aus Als Erstes haben wir eine Reihe von Mannschaften (wir gehen mal vom Mannschaftssport aus – natürlich kann eine Liga auch für Einzelsportler geschaffen werden). Diese Mannschaften spielen in der Regel jeweils zwei Mal gegeneinander, und zwar jeder gegen jeden. Das ist zumindest die am meisten verbreitete Form und wird etwa im Fußball so praktiziert. Beim Eishockey oder anderen Sportarten spielen die Mannschaften nicht nur zweimal gegeneinander, sondern mehrmals (zumindest in Deutschland).

Paarungen

Neben den Mannschaften brauchen wir also alle Paarungen der Mannschaften. Diese zusammenzustellen ist kein Problem. Mannschaft 1 spielt gegen Mannschaft 2, Mannschaft 3 und so weiter, Mannschaft 2 spielt gegen Mannschaft 3, Mannschaft 4 und so weiter und so fort, bis alle gegen alle auf dem Zettel stehen.

Das Problem ist, daraus einen Spielplan zu machen, bei dem an jedem Spieltag jede Mannschaft nur einmal spielt. Wenn man das etwa für 18 Mannschaften von Hand macht, kann das eine sehr zeitraubende Angelegenheit werden! Und wenn man dann noch in der Haut der Planer der Bundesliga steckt, die berücksichtigen müssen, dass Mannschaften maximal einmal pro Runde zwei Heim- oder zwei Auswärtsspiele hintereinander haben dürfen und Vereine, die nah beieinander liegen, nicht am gleichen Spieltag zuhause spielen dürfen, wird es richtig spannend.

Wir sollen aber maximal darauf achten, dass die Mannschaften so regelmäßig wie möglich abwechselnd Heim- und Auswärtsspiele haben. Was für unsere Spielpaarungen lediglich heißt: Die Mannschaften stehen abwechselnd an Position 1 und Position 2 einer Spielpaarung.

Spieltage

Neben den Mannschaften und Paarungen haben wir schon die dritte Einteilung erwähnt: den Spieltag.

Einen Spieltag definieren wir also als eine Einheit mit Spielpaarungen, an denen jede Mannschaft genau einmal vorkommt.

Ergebnisse

Meist endet eine Paarung mit einem Resultat, das in Toren oder Punkten angegeben wird, wobei die Anzahl dieser Tore oder Punkte auch noch über die Vergabe der eigentlich wichtigen Punkte entscheidet.

Jetzt wird es kompliziert, wenn man es Nicht-Sportlern erklären will. Beim Fußball (und bei anderen Sportarten, wo es um Tore geht – bei denen wir bleiben wollen) ist es einfach: Jede Mannschaft hat nach einem Spiel eine Anzahl von Toren erzielt. Die Mannschaft mit mehr Toren erhält drei Punkte, die andere keinen. Wenn beide gleichviel Tore erzielt haben, bekommt jede Mannschaft einen Punkt.

Tabellen

Die Punkte und die Tore geben an, wie die Reihenfolge der Mannschaften in der Tabelle aussieht. Das erste Kriterium sind die Punkte. Wenn zwei oder mehr Mannschaften gleichviele Punkte haben, wird die Tordifferenz herangezogen, also die Differenz der in allen bisherigen Spielen geschossenen Tore und der in allen Spielen erhaltenen Gegentore.

Ist auch die Tordifferenz gleich, wird die Anzahl der geschossenen Tore berücksichtigt. Ein Torverhältnis von 10:5 ist dann als besser als 9:4. Ist das Torverhältnis identisch, wird (meines Wissens) der direkte Vergleich zwischen den betroffenen Mannschaften herangezogen.

Wenn zwei Mannschaften die gleiche Anzahl Punkte haben und auch ihr Torverhältnis gleich ist, schaut man sich die beiden Spiele der Mannschaften gegeneinander an – sind auch die gleich, entscheiden Kriterien, die nicht mehr Bestandteil der Daten sind, die wir mit unserer Ligaverwaltung erfassen wollen.

Ohnehin werden nur am Ende der Saison Erbsen gezählt, wenn es um die Endplatzierung geht. Bis dahin belegen punkt- und torgleiche Mannschaften einfach den gleichen Platz.

Wollen wir die Tabellenstände eigentlich speichern oder berechnen wir diese immer zum aktuellen Zeitpunkt Grundsätzlich wollen wir redundante Daten vermeiden.

Wenn wir also eine Tabelle, die sich allein aus den Ergebnissen der Mannschaften gegeneinander bis zum Zeitpunkt X errechnet, in einer Access-Tabelle speichern, und zwar beispielsweise nach jedem abgeschlossenen Spieltag, haben wir redundante Daten.

Allerdings könnte man aus den Tabellenständen an verschiedenen Spieltagen auch ableiten wollen, wie etwa die Entwicklung der Position einer Mannschaft über die Spieltage verläuft – und warum dann immer alle Spieltage neu berechnen

Mehrere Ligen

Nun gibt es nicht nur eine Liga, sondern gleich eine ganze Menge – beim Fußball beginnend abwärts mit der zweiten Liga, der dritten Liga und dann geht es weiter mit jeweils mehreren Oberligen, Regionalligen und so weiter. Wir sollten also auch berücksichtigen, dass ein Benutzer nicht nur eine, sondern gleich mehrere Ligen in einer Datenbank verwalten möchte.

Mehrere Saisons

Die ganze Spielerei wäre nur halb so spannend, wenn nicht nach einem bestimmten Zeitraum der Beste der Liga gekürt würde – in der Bundesliga der Erste als Meister. Und auch einige der folgenden Positionen haben noch eine Bedeutung, denn damit kann man sich für internationale Wettbewerbe qualifizieren.

Und schließlich sollen nicht immer die gleichen Mannschaften in der gleiche Liga spielen, sondern die Mannschaften der unteren Ligen sollen auch die Gelegenheit erhalten, einmal in eine darüberliegende Liga aufzusteigen. Deshalb gibt es je nach Liga eine bestimmte Anzahl von Abstiegsplätzen und Aufstiegsplätzen.

Die Verwaltung mehrere Saisons hat übrigens auch noch den Charme, dass man Statistiken über mehrere Jahre aufstellen kann. Zum Beispiel könnte man sich ansehen, wie ein Verein in den letzten zehn Jahren abgeschnitten hat, wie die Paarungen zwischen zwei bestimmten Vereinen in der Historie ausgegangen sind et cetera.

Datenmodell

Aus diesen Informationen bauen wir nun ein Datenmodell. Die einfachste Tabelle ist die mit den Mannschaften. Diese braucht erst mal nur ein Primärschlüsselfeld sowie ein Feld, in dem man den Namen der Mannschaft speichern kann.

Allerdings kann eine solche Bezeichnung schon mal viele Zeichen enthalten. Um sicherzustellen, dass in einem Spielplan genügend Platz für eine Paarung zwischen zwei Mannschaften mit länglichen Namen ist, fügen wir noch ein Feld namens MannschaftKurz hinzu, für das wir später noch eine maximale Zeichenanzahl festlegen wollen. Später deshalb, weil wir erst noch Formulare und Berichte erstellen müssen, um zu sehen, welche Zeichenanzahl angemessen ist.

Die Tabelle namens tblMannschaften sieht also in der Entwurfsansicht wie in Bild 1 aus. Wichtig ist hier, dass wir für die Felder Mannschaft und MannschaftKurz einen eindeutigen Index festlegen, damit es nicht zwei Mannschaften gleichen Namens gibt.

Entwurf der Tabelle tblMannschaften

Bild 1: Entwurf der Tabelle tblMannschaften

Ligen und Spieljahre

Ligen wollen wir in einer Tabelle namens tblLigen verwalten. Diese soll drei Felder enthalten:

  • ID: Primärschlüsselfeld
  • Liga: Bezeichnung der Liga
  • Klasse: Klasse der Liga als Zahlenwert

Für Liga soll dabei etwa Bundesliga, 2. Bundesliga oder 3. Liga angegeben werden, für Klasse der entsprechende Zahlenwert, also 1, 2 und 3. Auch hier soll das Feld Liga mit einem eindeutigen Index versehen werden.

Für das Feld Klasse benötigen wir keinen eindeutigen Index, da es hier sein kann, dass es in einer Klasse mehrere Ligen gibt (zum Beispiel Regionalliga Nord, Regionalliga Nord-Ost und so weiter). Der Entwurf dieser Tabelle sieht wie in Bild 2 aus.

Entwurf der Tabelle tblLigen

Bild 2: Entwurf der Tabelle tblLigen

Zuordnung einer Mannschaft zu einer Liga

Fehlt hier nicht schon eine Möglichkeit, eine Mannschaft einer Liga zuzuordnen Zum Beispiel in Form eines Fremdschlüsselfeldes in der Tabelle tblMannschaften, mit dem wir die aktuelle Liga der Mannschaft auswählen können Das wäre die einfache Lösung, aber sobald sie mehr als eine Saison betrachten wollen, gelingt das nicht mehr – wie legen Sie dann fest, zu welcher Liga eine Mannschaft in der vorherigen Saison gehört hat, wenn diese auf- oder abgestiegen ist Für spätere statistische Auswertungen wäre dies ungünstig.

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar