Ich erstelle eine Webseite für Wetten auf alle Spiele des kommenden Fußballturniers der Euro 2012. Benötigen Sie Hilfe bei der Entscheidung, welchen Ansatz Sie für die Ko-Phase wählen möchten?
Ich habe unten ein Modell erstellt, mit dem ich ziemlich zufrieden bin, wenn es darum geht, die Ergebnisse aller "bekannten" Gruppenspiele zu speichern. Dieses Design macht es sehr einfach zu überprüfen, ob ein Benutzer einen korrekten Einsatz gemacht hat oder nicht.
Aber wie kann man das Viertelfinale und das Halbfinale am besten speichern? Diese Spiele hängen vom Ergebnis in der Gruppenphase ab.
Ein Ansatz, den ich mir überlegt habe, war, ALLE Spiele zur matches
Tabelle hinzuzufügen , aber den Heim- / Auswärtsteams für die Spiele in der Ko-Phase unterschiedliche Variablen oder Kennungen zuzuweisen. Und dann haben Sie eine andere Tabelle mit diesen Bezeichnern, die Teams zugeordnet sind ... Dies könnte funktionieren, fühlt sich aber nicht richtig an.
quelle
Antworten:
Zunächst würde ich versuchen, alle vorgegebenen Informationen im Modell selbst zu korrigieren, einschließlich
Einige dieser Informationen sind Daten in Tabellen, andere sind codierte Logik in Ansichten.
So etwas vielleicht:
Informationen, die Teams im ersten Quartal spielen, müssen nie direkt gespeichert werden, da sie aus den Ergebnissen der Gruppenphase berechnet werden können. Die einzigen Änderungen, die im Verlauf des Turniers vorgenommen werden müssen, sind Einfügungen in die
result
Tabelle.quelle
Ich denke, dass die Verwendung der Team-ID der richtige Weg ist. Eine weitere Abstraktionsebene für alle Endrunden fügt lediglich unnötige Komplexität hinzu, und zwar nur, wenn die Übereinstimmungstabelle mit Daten vorab geladen wird.
Die Datenstruktur sieht ziemlich solide aus, um dies zu unterstützen. Das Viertelfinale und das Halbfinale müssten der Spieltabelle hinzugefügt werden, sobald die ersten Spielergebnisse vorliegen. Wenn die Spiele nach dem Zufallsprinzip vergeben werden, ist dies ein manueller Vorgang, wenn sie sich jedoch in einer bestimmten Reihenfolge befinden ...
... dann könnte dies möglicherweise mit einer Abfrage erfolgen. Auch hier ist die Komplexität der Abfrage je nach Anzahl der Teams den Aufwand möglicherweise nicht wert
quelle
Es ist eine gute Idee, alle Übereinstimmungen in der Tabelle "Übereinstimmungen" zu speichern. Ich würde jedoch ein zusätzliches Feld "Ranking" hinzufügen, da Sie später einen Binärbaum erstellen müssen, um die Tabelle im Speicher effizient abzufragen. Es ist ein klassisches Problem mit dem Ranking-Algorithmus. Weitere Informationen erhalten Sie, wenn Sie bei Google nach Gray-Code-Turnieren suchen oder in meinem Stackoverflow-Verlauf nachsehen. Grundsätzlich ist ein Turnier ein binärer Baum. Hier ist ein guter Artikel über Gray Codes: http://villemin.gerard.free.fr/Wwwgvmm/Numerati/CodeGray.htm . Leider ist es französisch. So generieren Sie einen Binärbaum aus dem Ranking: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/229068 .
quelle