En realidad son redundantes, porque la relación con ambas informaciones surge de la tabla COMISION_USUARIO que te mencioné unos posts antes.
Esta tabla debería depender otra denominada COMISION_ASISTENCIA, que permita guardar la asistencia de los usuarios a esa comisión, así tendrías:
COMISION_USUARIO(comision_id, usuario_id, fecha_inscrip, otros datos)
COMISION_ASISTENCIA(comision_id, usuario_id, fecha).
De esta forma, en lugar de dos tablas adicionales tienes sólo una, y para saber quienes asisten a una actividad solo deberías hacer algo así:
Código sql:
Ver originalSELECT U.usuario_id, C.comision_id, actividad_id
FROM usuario U INNER JOIN comision_usuario USING(usuario_id)
INNER JOIN comision C USING(comision_id)
INNER JOIN actividad A USING(actividad_id)
ORDER BY actividad_id, comision_id, usuario_id;
(el ORDER BY es opcional en este caso, depende de cómo lo quieras ordenar)
Si sólo quieres las actiidades en que está inscripto:
Código sql:
Ver originalSELECT DISTINCT U.usuario_id, U.Apellido, U.Nombre, A.denominacion
FROM usuario U INNER JOIN comision_usuario USING(usuario_id)
INNER JOIN comision C USING(comision_id)
INNER JOIN actividad A USING(actividad_id)
ORDER BY usuario_id, actividad_id;
Si lo que quieres es ver los horarios de un usuario:
Código sql:
Ver originalSELECT DISTINCT U.usuario_id, U.Apellido, U.Nombre, A.denominacion, H.dia_sermana, H.Inicio, H.Fin
FROM usuario U INNER JOIN comision_usuario USING(usuario_id)
INNER JOIN comision C USING(comision_id)
INNER JOIN actividad A USING(actividad_id)
INNER JOIN horario H USING(horario_id)
ORDER BY u.usuario_id, A.actividad_id, h.dia_semana, h.inicio;
Precisamente por esto decía que una tabla para conservar esta información es redundante: porque tendrás dos tablas, al menos, donde se repite una relación de datos (sea esta directa o indirecta).