Ich entwerfe ein Baseball-Simulationsprogramm und bin auf ein Problem beim Entwurf des Boxscore-Schemas gestoßen. Das Problem, das ich habe, ist, dass ich verfolgen möchte, wie viele Läufe in jedem Inning erzielt werden. Die Art und Weise, wie ich dies im eigentlichen Programm mache, besteht darin, ein dynamisches Array zu verwenden, das mit jedem gespielten Inning wächst.
Für diejenigen, die mit dem Baseballspiel nicht vertraut sind, sind Spiele normalerweise neun Innings lang, es sei denn, das Spiel ist noch am Ende des 9. Innings unentschieden. Baseball-Spiele haben daher eine unbestimmte Länge, was bedeutet, dass ich die Datenbank nicht so gestalten kann, dass sie nur 9 Spalten für die Läufe enthält, die pro Inning erzielt wurden (technisch gesehen 18 (9-Innings * 2-Teams). Eine Idee, die ich hatte, ist die Serialisierung des Arrays Ich weiß jedoch nicht, ob dies eine gute Technik ist, und habe mich gefragt, ob jemand eine bessere Idee hat.
Falls es wichtig ist, ist die Datenbank, um die ich mich entwickle, PostgreSQL.
Anregungen sind sehr dankbar! Vielen Dank!
quelle
Ich glaube nicht, dass irgendetwas falsch ist, wenn man nur eine Kolumne hat
für 1 bis 9 und darüber hinaus. Dies ist einer der wenigen Orte, an denen die Verwendung eines Arrays sinnvoll sein kann.
quelle
Was ich hier sehe, ist also ein wenig widersprüchlich, weil Innings nicht wirklich direkt ein Attribut von Spielen sind, außer indirekt. Aber vielleicht bin das nur ich. Ich würde persönlich eher so etwas wie eine RunsScored-Tabelle vorschlagen und sie auf irgendeine Art mit einer GamesHeader-Tabelle verknüpfen.
Das gibt dir das maximale Inning, das für ein bestimmtes Spiel gespielt wird, und du kannst es mit PlayerID -> TeamID weiter verfeinern, um mehr Details herauszufinden, wenn du möchtest. Was das sein könnte, weiß ich nicht.
Ich würde diese zweite Tabelle wahrscheinlich tatsächlich so verfeinern, dass sie nicht mit RunsScored bewertet wird, sondern mit AtBat, denn genau das verfolgen Sie. Ich wollte nur zeigen, wie man das Inning vom Spieltisch weg denormalisieren kann. Ich würde mein Modell so anpassen, dass es so läuft, wäre dies mein Projekt. HTH. YMMV.
Beachten Sie auch, dass ich ein TSQL-Typ bin, aber ich denke, dass die unten aufgeführten Konzepte recht gut funktionieren, um mein Konzept zu erklären. Die Sprachsemantik wird wahrscheinlich nicht anstehen.
quelle