Ver Mensaje Individual
  #8 (permalink)  
Antiguo 14/10/2009, 05:15
3l3azar
 
Fecha de Ingreso: octubre-2009
Mensajes: 6
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: como establecer parametros de consulta variables

Creo que empiezo a comprender... Un horario (por ejemplo: lunes de 16:00 a 17:00) puede contener varias comisiones (1:N), y cada comisión pertenece a una actividad, la cual puede tener varias comisiones (1:N). De este modo, horario y actividad (N:N) quedan relacionados. Eliminando la entidad comision, un horario puede tener varias actividades, y estas a su vez varios horarios (N:N), por lo que las tablas no se podrían relacionar directamente.

Entonces lo que necesito es:

- USUARIO (user_id, username...) -> Donde guardo los datos de los usuarios.
- ACTIVIDAD (actividad_id, denominación...) -> Donde guardo información de la actividad, pero no su horario.
- HORARIO (horario_id, inicio, fin, día de la semana...) -> Donde se almacenan los distintos horarios posibles.
- COMISIÓN (comision_id, horario_id, actividad_id...) -> La tabla que relaciona cada actividad con unos horarios, habiendo una comisión por cada horario de cada actividad.

Ahora tengo que relacionar USUARIO con HORARIO (N:N), para saber de que horarios dispone el usuario, por lo que necesito otra tabla de vinculación; que podría ser:

- USUARIO_HORARIO (user_id, horario_id...)

Además, si en un futuro necesitara que la base de datos me proporcionara información de la participación en las actividad, necesitaría la tabla:

- USUARIO_ACTIVIDAD (user_id, comision_id...)

para relacionar unívocamente a cada actividad con cada usuario.

¿Es correcto?

Ahora se me plantea otra duda, debido a mi desconocimiento del procesamiento de bases de datos. Pongamos que cada usuario tiene del orden de 20 horarios disponibles, y que la base de datos registra tan solo 100 usuarios. La tabla USUARIO_HORARIO ya contaría con 2.000 registros. Igual este ejemplo no es el más evidente, porque todavia son numeros pequeños, pero el caso es que una tabla de estas caracteristicas puede llegar a ser muy grande. Por otra parte, las operaciones necesarias para hacer una consulta si la información está almacenada de este modo son muchas menos. La cuestión es: debo entender que la eficiencia de una base de datos depende mucho más de un correcto modelo de relación entre los datos que no de un tamaño reducido, y que dando esto por sentado el modelo de entidad relación es la mejor forma de hacerlo, no es así?