Ver Mensaje Individual
  #8 (permalink)  
Antiguo 01/04/2013, 16:33
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Optimizar busqueda

Hola de nuevo:

Mira, en lo referente a un buen modelo de BD no todo está escrito, depende mucho de la lógica de negocio que tengas y también de experiencia, sin embargo aquí habría que hacer algunas preguntas:

1. ¿Todos los jugadores juegan todos los juegos? si la respuesta es no entonces el modelo que tienes no aplica para esto.

2. ¿Los atributos que quieres almacenar para cada juego son distintos? es decir, ¿además de los puntos guardas información adicional? si la respuesta es no, entonces un modelo utilizando una tabla para cada juego tampoco aplica.

3. ¿Un jugador juega una vez y solo una vez cada juego? ¿o puede jugar varias veces un mismo juego y obtener un puntaje cada vez?, si este fuera el caso me supongo que lo que pretendes hacer es actualizar el score mediante un UPDATE cada vez que termina un juego... esto tampoco es optimo.

En lo particular optaría por un modelo más o menos así:

Un catálogo de juegos (id_juego, nombre_juego):

Código:
1|canicas
2|cartas
3|domino
...
Un catálogo de jugadores (id_jugador, nombre_jugador):

Código:
1|juan
2|marco
3|silvia
...
y una tabla de partidas o juegos por jugador (id_partida, id_juego, id_jugador, puntos):

Código:
1|1|1|10
2|2|2|40
3|3|2|60
4|1|2|20
5|2|3|10
6|2|1|70
7|3|1|30
...
cada vez que un jugador termina una partida, simplemente se agrega un registro a la tabla... para obtener los puntajes por jugador/juego simplemente utilizas las funciones de agrupación SUM y la cláusula GROUP BY, y para obtener el ranking del jugador tienes muchas formas, utilizando técnicas como las que te puse en los post's u otras como simular la función RANK:

http://www.artfulsoftware.com/infotr...tip.php?id=460

Pero ese es un tema bastante extenso que bien merece que abras otro post, nos expliques bien qué es lo que quieres almacenar de información y así podemos darte algunos consejos...

saludos
Leo.