Cita: si mi tabla “viovideo” tiene una PK compuesta por las FK videos y usuariosxcurso sigo sin tener como controlar que esos datos sean correctos.
Si las tablas son InnoDB, y los campos se definieron como FK hacia sus respectivas tablas, es absolutamente imposible que puedas poner un valor que no exista previamente en su tabla referida. Eso es parte de la restricción de una FK.
Lo que la base no puede controlar es que si lo que pones en el INSER es lo que realmente quieres poner. Sólo puede verificar que sean valores válidos como FK.
Cita: y perfectamente podría poner en la tabla “viovideo” un usuario al cual el video que se le asigna no corresponde a su curso.
Ahora bien, la insistencia de que no pongas una ID propia es para que la clave primaria de esa tabla quede definida como (IDVideo, IDUsuario, IDCurso), de esa forma jamás podrá suceder que un mismo usuario pueda ver dos veces el mismo video en el mismo curso... porque una PK tiene como restricción básica ser
única, lo que quiere decir simplemente que no puede darse el mismo conjunto de valores combinado dos veces.
¿Se entiende el concepto de PK compuesta?
Precisamente por eso te dije que la FK de esa tabla debe ser heredada no de cada tabla base, sino de la tabla Usuario_Cruso. De ese modola PK en realidad es: (IDVideo), (IDUsuario, IDCurso), es decir, esa tabla depende de las PK de Video y de Usuario_Curso, de modo que un video se relacione con un usuario siempre que primero se registre en un curso.
¿Se entiende la idea?