Ver Mensaje Individual
  #13 (permalink)  
Antiguo 05/06/2011, 07:36
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: Clave Foraneas, no puedo agregar filas

Detalles:
1) Asegúrate de que TODAS las tablas son InnoDB. En el diagrama que pusiste para descargar había al menos dos que no lo eran.
2) Asegúrate de que todo valor que no sea FLOAT sea UNSIGNED. Usarlos sin esa indicación hará que el rango de representación se reduzca a la mitad, y en el caso de los UNIXTIME te dará error de dato truncado al insertar.
3) Asegúrate de que las columnas relacionadas como FK sean del mismo tipo y rango en ambas tablas. Cualquier diferencia entre ambas generará un error, y MySQL Workbench no las verifica a menos que la inclusión de la FK haya sido hecha automáticamente por diagrama, usando el conector de la barra de herramientas.
4) La decisión de poner o no CASCADE la toma el diseñador del sistema. No hay una regla general, depende del caso específico, al punto tal que la decisión de ponerla puede no abarcar a toda la base, sino tan sólo alguna o algunas tablas, y nada más. Tiene que ver con la necesidad de mantener la integridad de datos.
Un momento en que se da esto sería si tienes tablas donde esa PK se almacene, pero no se declaren relaciones de FK (usar tablas InnoDB y MyISAM al mismo tiempo es un ejemplo). En ese caso no se puede permitir el CASCADE porque sólo actualizaría el valor de las tablas relacionadas que sean InnoDB y tengan FK, pero no se actualizarían las otras; entonces, por seguridad de consistencia en los datos, no se puede permitir que el UPDATE se realice en cascada.

Finalmente: No me has contestado lo que te pregunté respecto a esas tres tablas cuyo sentido, representación y relaciones no se comprende. Analizándolas parecen estar diseñadas incorrectamente a partir de una normalización inadecuada.
__________________
¿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; 05/06/2011 a las 07:44