Friday, July 08, 2016

Los problemas de hacer bases de datos


Recientemente se me encomendó la tarea de llevar el rating de la Federación Nacional de Ajedrez (FENAMAC), la cual tiene ya unos 40,000 socios registrados, aproximadamente. Esta lista es la medición numérica que tienen los jugadores, equivalente a su nivel ajedrecístico. La idea es que las asociaciones de cada estado de este país manden a la FENAMAC los resultados de sus torneos (vía un archivo específico hecho en alguno de los programas para generar torneos de ajedrez, por ejemplo, Swiss Manager), y entonces mi tarea es calcular el desempeño de cada jugador de acuerdo a su rating antes del torneo, los puntos que realizó y el promedio de nivel de rating de sus oponentes. De acuerdo a las fórmulas de Elo se sabe entonces si el jugador subió o bajo puntos en su rating, también llamado "Elo".

Pues bien, me puse a trabajar usando un manejador de bases de datos gratuito llamado Absolute Database, el cual tiene muchas virtudes comparado con el sistema de bases de datos nativo de Delphi (BDE), el cual, por ejemplo, tiene que instalarse aparte y esto causa una dificultad extra, porque portar el programa a otra máquina implica primero instalar BDE en la otra computadora y entonces poder cargar el programa del cálculo del rating. Absolute Database -para las necesidades del problema- hace la tarea magníficamente bien y además, todo está encapsulado en el mismo programa ejecutable que se genera en Delphi. Es decir, tengo el manejador de bases de datos y mi código en el mismo archivo, cosa que abrevia la problemática, pues no hay que instalar nada extra.

Pero fuera de mi código, hallé que la base de jugadores está llena de problemas, todos ellos comunes a todas las bases de datos. Por ejemplo, los nombres de los jugadores están escritos con mayúsculas en ocasiones, o con comas después de los apellidos y los nombres, o bien, no tienen acentos, o están incluso mal escritos. Y entonces la tarea inicial -antes de programar nada- es tratar de limpiar la base de datos, la de los jugadores, para que después el programa del cálculo del rating encuentre a los jugadores en la base de datos y pueda actualizarse de acuerdo a esto.

Porque esto es lo crítico: si la base de datos no está limpia, si tiene nombres escritos de diferentes formas, entonces lo que se tiene es una problemática que a la larga no es tan fácil de resolver, al menos automáticamente, y obliga al programador (o usuario del programa, que en este caso soy yo mismo), a tener que ver y revisar manualmente cada caso de lo que pasa cuando se calcula el rating de algún jugador. Considerando esto nada más, me di cuenta que las bases de datos son solución de muchas dificultades, pero para ello se necesita que la información esté bien dispuesta, limpia, en un formato -digamos- estándar, que pueda ser manejado fácilmente.

Después de todo esto de lo que he hablado, ya tengo un programa que permite el cálculo del rating automático cuando se me entregan los archivos de Swiss Master. Tiene aún algunos problemillas pero poco a poco se irán resolviendo. Los "bugs", desafortunadamente, aparecen en el peor de los momentos y no cuando uno espera algo extraño.

No comments: