MySQL, Problem mit 1:n Beziehung.

bgauch

Mitglied
Hallo zusammen

Ich habe ein Problem in meiner MySQL Datenbank, und komme einfach auf keinen grünen Zweig.
Deshalb bitte ich euch um Hilfe.

Ich versuche es einigermassen verständlich aufzuzeigen.

Ausgangslage:
- In der Datenbank geht es um Renneinsätze. Wer fährt wo, in welchem, Team, Auto, Strecke, etc.
- Nun gibt es leider Rennen die gehören zu mehreren Meisterschaften. Aktuelles Beispiel: Es gibt einige Rennen die zählen zum skandinavischen Tourenwagen Cup, sind aber gleichzeitig auch Bestandteil von der schwedischen und der dänischen Meisterschaft.
- Ich erfasse also drei Meisterschaften, aber die Rennen natürlich nur einmal. Weise ein betroffenes Rennen einfach allen drei Meisterschaften zu.

Soweit so gut. Nur gibt es nachher einen Schönheitsfehler in der Abfrage nach Fahrern und Teams. Diese nehmen nebst dem skandinavischen Cup natürlich nur jeweils an einer Meisterschaft (Schweden oder Dänemark) teil. Da sie aber nur das Rennen zugewiesen kriegen, zeigt es dann alle drei Meisterschaften an. Dito bei Anfragen nach Teams.

Ich habe dir Tabellen so gut es geht normalisiert. Für das Problem relevant sind:
- Tabelle Saison: ID, Bezeichnung, etc.
- Tabelle Rennen: ID, Datum, Bezeichnung, Zugehörigkeit zu Saison (Saison 1, Saison 2, Saison 3), etc.
- Tabelle Land: ID, Bezeichnung
- Tabelle Fahrer: ID, Name, etc.
- Tabelle Team: ID, Name, etc.
- Tabelle Auto: ID, Bezeichnung
- Lead Tabelle History: ID, Startnummer, ID vom Rennen, ID vom Team, ID vom Auto, ID vom Fahrer, etc.

In der Lead Tabelle noch einmal Saison 1 bis 3 einfügen wäre ein Witz.
Aber wie schaffe ich es ein Resultat hinzukriegen, wo:
- Das Rennen wie bis jetzt nur einmal erfasst ist, und der einen oder mehreren Saison zugewiesen ist.
- Pro Renneinsatz (Fahrer fährt ein Rennen) wie bisher nur ein Datensatz erfasst wird.
- Es aber möglich ist zu definieren, an welchen Meisterschaften der Fahrer teilgenommen hat, wenn ein Rennen zu mehreren Meisterschaften gehört.

Wenn jemand eine Idee hat, und sich ernsthaft dem Problem annehmen möchte, kann ich auch gerne Layout und Scripts mailen.

Sage schon mal vielen Dank!

Gruss
bgauch
 
Hallo,

ich habe dein Problem jetzt gerade kurz überflogen. Ich glaube die Lösung deines Problemes sind Kreuztabellen (m : n).
Hab leider gerade keine Zeit und könnte erst am Wochenende (Sonntag) mehr dazu schreiben.
Ich schau Sonntag wieder rein. Bis dahin X-Tabellen anschauen und auf die Anderen hoffen :)

Grüße
 
Zuletzt bearbeitet:
Hi

Nein, komme leider zurzeit auch nicht dazu.
Aber da ich schon lange dran "rum-doktere" werde ich wohl eh auf keine Lösung kommen.

Bin also für externe Hilfe sehr dankbar.
 
Hallo,

ich glaube ich weiß was du für ein Problem hast.

Also wenn du willst kann ich dir helfen die Strukturen aufzubauen.

lg
Chris
 
Hallo,

also ich würde die zugehörigkeit der Rennen nicht in der Tabelle Rennen definieren.

Mach hierzu eine eigene Tabelle mit dem Namen sagen wir mal "TABSaisonRennenZuord". Hier weißt du die Rennen den Saisonen zu. Mit Primarykey über die SaisonID und der RennenID. Die Tabelle der Rennen sollte wirklich nur die Definition der Rennen sein. Ich weiß ja nicht wie deine Tabellen jetzt aussehen. Aber ich mache es immer so.

Poste mal deine Tabellen Rennen und Saison

LG
 
Hi

Eine Tabelle mehr wäre eine Möglichkeit. Ist dann halt noch eine Tabelle mehr die gejoint wird.

Saison:
ID smallint (PK)
name varchar
short varchar
full varchar
year varchar
complete varchar
single char

Rennen:
ID smallint (PK)
name varchar
land smallint
season smallint
season2 smallint
season3 smallint
date date
 
Mach hierzu eine eigene Tabelle mit dem Namen sagen wir mal "TABSaisonRennenZuord". Hier weißt du die Rennen den Saisonen zu. Mit Primarykey über die SaisonID und der RennenID. Die Tabelle der Rennen sollte wirklich nur die Definition der Rennen sein. Ich weiß ja nicht wie deine Tabellen jetzt aussehen. Aber ich mache es immer so.

... was ja nichts anderes als eine Kreuztabelle ist. DIe Antwort steht also schon da. Ich find es ja auch immer gut, wenn man mal weis, was man da eigentlich macht :)
Also mal Kreuztabellen in der Literatur ansehen.
 
... was ja nichts anderes als eine Kreuztabelle ist. DIe Antwort steht also schon da. Ich find es ja auch immer gut, wenn man mal weis, was man da eigentlich macht :)
Also mal Kreuztabellen in der Literatur ansehen.

Naja ich brauch mir das nicht ansehen ^^ ich bin ja schon seit jahren in dem Job. Fals du mich mit der Ausage gemeint hast
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück