Ver Mensaje Individual
  #5 (permalink)  
Antiguo 12/03/2011, 16:07
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: Por favor ayuda con modelo de BD

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?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)