Estoy diseñando un programa de simulación de béisbol y me he encontrado con un problema con el diseño del esquema boxscore. El problema que tengo es que quiero rastrear cuántas carreras se anotan en cada entrada. La forma en que hago esto en el programa real es usar una matriz dinámica que crece para cada entrada jugada.
Para aquellos que no están familiarizados con el juego de béisbol, los juegos suelen durar nueve entradas, a menos que el juego esté empatado al final de la novena entrada. Por lo tanto, los juegos de béisbol tienen una longitud indeterminada, lo que significa que no puedo diseñar la base de datos para que solo tenga 9 columnas para las carreras anotadas en cada entrada (bueno, técnicamente 18 (9 entradas * 2 equipos). Una idea que he tenido es serializar la matriz y codificarlo como Base64 antes de almacenarlo en la base de datos. Sin embargo, no sé si es una buena técnica para usar y me preguntaba si alguien tiene una mejor idea.
En caso de que sea importante, la base de datos que estoy desarrollando es PostgreSQL.
¡Cualquier sugerencia es bienvenida! ¡Gracias!
fuente
No creo que haya nada malo con solo tener una columna
para 1 a 9 y más allá. Ese es uno de los pocos lugares donde el uso de una matriz puede ser razonable.
fuente
Entonces, lo que veo aquí es un poco contradictorio porque las entradas no son realmente un atributo directo de los juegos, excepto indirectamente. Pero tal vez solo soy yo. Yo personalmente sugeriría algo más como una tabla RunsScored, y hacer que se vincule a una tabla GamesHeader, de algún tipo, así que considere:
Eso le dará el máximo de entrada jugado para un juego en particular, y puede refinar aún más por PlayerID -> TeamID para descubrir más detalles si lo desea. Cuáles podrían ser, no estoy seguro.
Probablemente refine esa segunda tabla para que no sea RunsScored sino algo sobre AtBat porque eso es realmente lo que estás rastreando. Solo quería mostrar cómo puedes desnormalizar la entrada fuera de la mesa de juego. Ajustaría mi modelo para que fluya así, si este fuera mi proyecto. HTH YMMV.
También tenga en cuenta que soy un chico TSQL, pero creo que los conceptos expresados a continuación funcionan bastante bien para explicar mi concepto. La semántica del lenguaje probablemente no se alineará.
fuente