Ver Mensaje Individual
  #7 (permalink)  
Antiguo 17/04/2014, 23:53
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: Problema al Relacionar Tablas MySQL

Para que se entienda la observación:
Cita:
Nota: InnoDB no verifica las restricciones de claves foráneas en las claves foráneas o valores de claves referenciados que contengan una columna NULL.
http://dev.mysql.com/doc/refman/5.0/...nstraints.html

Caso en tu base:
Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `SistemaTLM`.`OperadoresTLM` (
  2.   `ID_Operador` INT NOT NULL AUTO_INCREMENT,
  3.   `CURP_OP` VARCHAR(18) NULL,  -- < Esto no se valida
  4.   `Nombre_OP` INT NULL,
  5.   `APaterno_OP` VARCHAR(20) NULL,
  6.   `AMaterno_OP` VARCHAR(20) NULL,
  7.   `FNacimiento_OP` DATE NULL,
  8.   `Estatus_OP` INT NULL,
  9.   `FechaAlta_OP` DATE NULL,
  10.   `Licencia_OP` VARCHAR(255) NULL,
  11.   `Licencia_Vence_OP` DATE NULL,
  12.   `Unidad_OP` VARCHAR(15) NULL, -- < Estto no se valida
  13.   PRIMARY KEY (`ID_Operador`),
  14.   INDEX `fk_OperadoresTLM_DireccionOP1_idx` (`CURP_OP` ASC),
  15.   INDEX `fk_OperadoresTLM_UnidadesTLM1_idx` (`Unidad_OP` ASC),
  16.   CONSTRAINT `fk_OperadoresTLM_DireccionOP1`
  17.     FOREIGN KEY (`CURP_OP`)
  18.     REFERENCES `SistemaTLM`.`DireccionOP` (`CURP_OP`)
  19.   CONSTRAINT `fk_OperadoresTLM_UnidadesTLM1`
  20.     FOREIGN KEY (`Unidad_OP`)
  21.     REFERENCES `SistemaTLM`.`UnidadesTLM` (`Numero_UN`)
  22.  
  23.    # Esto no tiene sentido. ----------------------
  24.   CONSTRAINT `fk_OperadoresTLM_ValesTLM1`
  25.     FOREIGN KEY (`ID_Operador`)
  26.     REFERENCES `SistemaTLM`.`ValesTLM` (`Operador_V`)

Otro caso en tu base:
Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `SistemaTLM`.`PanelControlModulos` (
  2.   `ID_Modulo` INT NOT NULL AUTO_INCREMENT,
  3.   `NombreModulo` VARCHAR(255) NULL,
  4.   `ImagenModulo` VARCHAR(255) NULL,
  5.   `LinkModulo` VARCHAR(255) NULL,
  6.   `innerModulo` VARCHAR(255) NULL,
  7.   PRIMARY KEY (`ID_Modulo`),
  8.   CONSTRAINT `fk_PanelControlModulos_PanelControlSecciones`
  9.     FOREIGN KEY (`ID_Modulo`)
  10.     REFERENCES `SistemaTLM`.`PanelControlSecciones` (`ID_Modulo`)
¿La PK es AI, pero FK de otra tabla?
Eso no tiene sentido.
Si es un AI en una tabla no puede ser FK de otra tabla, Puede ser INT, pero es la tabla padre la que debe ser AI, no la local.

Tengo la impresión de que no tienes claro el tema de relaciones de foreign key...

Otra cosa: al apuntar a si mismas como FK, se disparan errores al correr tu backup, porque no puede crearse una FK sobre si misma cuando la tabla aún está creándose.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)