Desarrollé un sitio de estadísticas para un juego como un proyecto de aprendizaje hace unos años. Todavía se usa hoy y me gustaría limpiarlo un poco.¿Demasiados campos en MySQL?
La base de datos es un área que necesita mejoras. Tengo una tabla para las estadísticas del juego, que tiene GameID, PlayerID, Kills, Deaths, DamageDealt, DamageTaken, etc. En total, hay aproximadamente 50 campos en esa tabla única y muchos más que podrían agregarse en el futuro. ¿En qué punto hay demasiados campos? Actualmente tiene 57,341 filas y es 153,6 MiB por sí mismo.
También tengo algunos campos que almacenan matrices en un BLOB en esta misma tabla. Un ejemplo de la matriz son los emparejamientos jugador contra jugador. La matriz almacena cuántas veces ese jugador mató a otro jugador en el juego. Estos son los campos más grandes en tamaño de archivo. ¿Se recomienda almacenar una matriz en un BLOB?
La matriz se parece a:
[Killed] => Array
(
[SomeDude] => 13
[GameGuy] => 10
[AnotherPlayer] => 8
[YetAnother] => 7
[BestPlayer] => 3
[APlayer] => 9
[WorstPlayer] => 2
)
Estos tienden a no exceder más de 10 jugadores.
Se llama EAV o [Entity-Attribute-Value] (http://en.wikipedia.org/wiki/Entity-attribute-value_model). – Triztian
¡ah! gracias ... Editaré mi respuesta. –
Como una tabla de resumen de estadísticas, creo que probablemente sea correcto suponer que no hay "más por venir" dinámico, y que hay un número limitado de columnas que querrá agregar en el futuro. Además, creo que cada jugador usará cada columna. Entonces, toda la flexibilidad de EAV probablemente no es necesaria, aunque estoy de acuerdo en que EAV podría funcionar fácilmente en esta situación. – Prescott