SQLDB-Design

tanj

New member
Moin,

ich bin dabei eine Turnierverwaltung zu entwickeln. Für die Datenhaltung benötige ich ein SQL-DB, der Aufbau dieser bereitet mir etwas Kopfzerbrechen.

Folgende Voraussetzung:
Die Teilnehmer sollen mit Namen und Verein gespeichert werden, jeder Teilnehmer ist Mitglied genau einer Gruppe. Die Teilnehmer einer Gruppe tragen gegeneinander Spiele aus, die jeweiligen Zwischen- und Endergebnisse sollen gespeichert werden.

Spieler(S_ID (primary key), Namen, Vornamen, G_ID(foreign key), Alter, V_ID(foreign key))
Gruppe(G_ID(primary key), Namen)
Ergebnisse(E_ID(primary key), G_ID(foreign key), Satz1, Satz2, Satz3, Satz4, Satz5, S_ID1(foreign key), S_ID2(foreign key), Punkte)
Verein (V_ID(primary key), Name)


Mein Problem ist, ich benötige in "Ergebnisse" ja jeweils die beiden Spieler. Zweimal ein Fremdschlüssel zu verwenden geht meines Wissens nicht, hab das aber mit S_ID1 und S_ID2 mal zur Verdeutlichung meines Strebens eingefügt. Eine m:n-Beziehung zwischen Spieler und Ergebnisse würde zwar gehen, aber irgendwie findet man damit auch nur einen Spieler (Teilnehmer) heraus.

Irgendwelche Ideen?

Gruß
 

LX

Member of Honour
Was sollte denn deiner Meinung nach gegen 2 Fremdschlüssel sprechen? Wenn du zu einem Ergebnis die Spieler rausbekommen möchtest, JOINst du eben 2x auf die Spieler-Tabelle. Das ist kein Problem.

Alternativ könntest du wie schon angemerkt eine m:n-Tabelle aufmachen, in der du den einzelnen Spielen die Spieler zuordnest:

Spieler (wie gehabt)
Verein (wie gehabt)
Gruppe (wie gehabt)
Spiel (statt Ergebnis, wie gehabt außer den beiden Spieler-Fremdschlüsseln)
Spielbeteiligung (SB_ID, Spieler_ID, Spiel_ID)

Musst du wissen, was du leichter abfragen kannst. Bei ersterer Lösung gibt es einen Unterschied zwischen dem ersten und dem zweiten Spieler eines Spiels (Heimspiel oder nicht z.B.). Diese Unterscheidung gibt's bei der zweiten Variante nicht. Wenn du alle Spiele eines bestimmten Spielers abfragen willst, bekommst du das aber mit der zweiten Variante einfacher hin, weil du eben nicht prüfen musst, ob der Spieler nun Spieler 1 oder 2 war.
 
Zuletzt bearbeitet:

tanj

New member
Gegen zwei Fremdschlüssel spricht dass es bezüglich der 3. Normalform unsauber ist. Praktisch geht das wohl schon, da hab ich mich falsch ausgedrückt.

Deine vorgeschlagene Alternative macht gut mein Problem sichtbar. Ich hätte es gerne so, wie Du es vorgeschlagen hast, allerdings kann ich nicht auf die Angabe wer Heimrecht hat verzichten.

Danke für Deinen Vorschlag, mal schauen welcher Lösungsansatz praktisch besser umzusetzen sein wird.
 

LX

Member of Honour
Zur Not ergänze eben die Tabelle "Spielbeteiligung" noch um ein Flag "Heimspiel", das du entsprechend setzen kannst.
 
Oben