Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/07/2011, 16:10
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: Problemas creando relación M:N

Por lo pronto, has creado relaciones circulares, que son relaciones imposibles de administrar. Esto se da porque estás poniendo interdependencias que hace imposible crear las tablas tal y como lo planteas.
Además, ten en cuenta que la PK de una relación N:N está compuesta por las PK correspondientes a las tablas de origen, y sólo necesita un discriminante si puede darse que haya más de un par idéntico relacionado, que no es el caso.
Las FK no son transitivas, por lo que las tablas base no necesitan de la FK de laotra tabla, que ya está en el origen.
Otra cosa: Te olvidaste de una tabla (categorías), sin la cual el esquema no se puede crear.
El esquema sería mas o menos así:
Código MySQL:
Ver original
  1. DROP SCHEMA IF EXISTS `futbol` ;
  2. CREATE SCHEMA IF NOT EXISTS `futbol` DEFAULT CHARACTER SET latin1 ;
  3.  
  4. -- -----------------------------------------------------
  5. -- Table `futbol`.`equipos`
  6. -- -----------------------------------------------------
  7. DROP TABLE IF EXISTS `futbol`.`equipos` ;
  8.  
  9. CREATE  TABLE IF NOT EXISTS `futbol`.`equipos` (
  10.   `idEquipo` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
  11.   `nombre` VARCHAR(45) NOT NULL ,
  12.   `categoria` INT(11) NULL DEFAULT NULL ,
  13.   PRIMARY KEY (`idEquipo`) ,
  14.   INDEX `categoria` (`categoria` ASC) )
  15. DEFAULT CHARACTER SET = latin1;
  16.  
  17.  
  18. -- -----------------------------------------------------
  19. -- Table `futbol`.`jugadores`
  20. -- -----------------------------------------------------
  21. DROP TABLE IF EXISTS `futbol`.`jugadores` ;
  22.  
  23. CREATE  TABLE IF NOT EXISTS `futbol`.`jugadores` (
  24.   `idJugador` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
  25.   `nombre` VARCHAR(45) NULL DEFAULT NULL ,
  26.   `apellido` VARCHAR(45) NULL DEFAULT NULL ,
  27.   PRIMARY KEY (`idJugador`) )
  28. DEFAULT CHARACTER SET = latin1;
  29.  
  30.  
  31. -- -----------------------------------------------------
  32. -- Table `futbol`.`equipo_jugadores`
  33. -- -----------------------------------------------------
  34. DROP TABLE IF EXISTS `futbol`.`equipo_jugadores` ;
  35.  
  36. CREATE  TABLE IF NOT EXISTS `futbol`.`equipo_jugadores` (
  37.   `idEquipo` INT(11) NOT NULL ,
  38.   `idJugador` INT(11) NOT NULL ,
  39.   PRIMARY KEY (`idEquipo`, `idJugador`) ,
  40.   INDEX `fk_equipo_jugadores_equipos` (`idEquipo` ASC) ,
  41.   INDEX `fk_equipo_jugadores_jugadores1` (`idJugador` ASC) ,
  42.   CONSTRAINT `fk_equipo_jugadores_equipos`
  43.     FOREIGN KEY (`idEquipo` )
  44.     REFERENCES `futbol`.`equipos` (`idEquipo` )
  45.   CONSTRAINT `fk_equipo_jugadores_jugadores1`
  46.     FOREIGN KEY (`idJugador` )
  47.     REFERENCES `futbol`.`jugadores` (`idJugador` )
  48. DEFAULT CHARACTER SET = latin1;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)