Ver Mensaje Individual
  #6 (permalink)  
Antiguo 12/09/2012, 08:40
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Duda de optimizacion

Bueno, mira, por los datos que das voy a tener que hacer algunas hipótesis e inferencias para establecer cómo sería un esquema de entidades y relaciones cumpla con tus necesidades. Puede que algunas cosas te parezcan obvias, pero lo obvio es también parte del sistema, y debe ser explicitamente analizado y construido. Es inevitable por necesidades de diseño.
Cita:
- Hay una liga deportiva que realiza campeonatos (anuales o no).
- En cada campeonato participan una cantidad determinada de equipos, que deben de de la inscripción al mismo.
- Cada campeonato debe constar de una cantidad fija de jornadas, y cada equipo participa obligatoriamente de todas ellas.
- Cada equipo debe constar de una cantidad determinada de jugadores registrados.
- Cada jugador puede participar de diferentes Jornadas y debe recibir puntaje por desempeño en cada una de las que juegue.
- Cada jugador en una jornada registra en qué puesto jugó dentro de su equipo.
- Cada jugador puede haber pertenecido a diferentes equipos a lo largo de su permanencia en la Liga donde juega.
- Cada jugador tiene un valor de pase entre equipos que puede sufrir variaciones en el tiempo.
- Cada pase debe registrarse con fecha de pase y registro de valor del pase.
Un esquema de tablas para adminsitrar todas estas condiciones podría ser:
Cita:
Equipo(equipo_id, nombre, direccion, ...)
Jugador(jugador_id, nombre, apellido, fecha_nac, ...)
Liga(liga_id, denominacion, domicilio_sede, ...)
Campeonato(campeonato_id, denominación, nro_campoenato, f_inicio, f_final, ...)
Jornada(nro_jornada, campeonato_id, fecha_jornada, cumplida)
Jugador_Equipo(equipo_id, jugador_id, ingreso, egreso)
Jugador_PrecioPase(jugador_id, fecha_alta, fecha_baja, precio_pase)
Equipo_Liga(liga_id, equipo_id, fecha_ingreso, fecha_baja)
Equipo_Campeonato(campeonato_id, equipo_id, ...)
Jugador_En_Jornada(jugador_id, nro_jornada, puesto_id,
puntos_jornada, gol_f, gol_c, infracc_g, infracc_l, ...)
PuestosJugador(puesto_id, descripcion, ...)
Al menos yo empezaría con un esquema como ese, al que posiblemente haya que depurar, pero respondería todas las consultas sin mayores complicaciones. Al menos eso me parece a vuelo de pájaro.
Esta noche me fijo si el esquema, graficado, muestra alguna inconsistencia o falta.

Este esquema básico está pensado para el caso de una o más ligas deportivas. Por cuestiones de diseño funcional, jamás debes armar una base de datos donde la organización sea tácita, es decir, donde no haya una tabla que contenga los datos de la organización base.
Esto es válido aunque la base fuese diseñada para una única empresa. De todos modos se coloca la tabla "Empresa", que en realidad conserva un único registro, por extraño que te parezca.
Ciertas tablas como la de PuestosJugador, o cosas así, son lo que se denomina "tablas fijas", y su objetivo es contener datos constantes que se usarán siempre así, por la misma razón antedicha: Ventajas funcionales.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 12/09/2012 a las 09:06