Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Error al crear tablas dependientes

Estas en el tema de Error al crear tablas dependientes en el foro de Mysql en Foros del Web. Hola! Quiero crear 3 tablas, una de deportes, otra de equipos y una tercera de jugadores con las siguientes relaciones, deporte equipo (1-n), equipo jugador ...
  #1 (permalink)  
Antiguo 01/07/2009, 09:08
 
Fecha de Ingreso: septiembre-2006
Mensajes: 114
Antigüedad: 17 años, 7 meses
Puntos: 1
Error al crear tablas dependientes

Hola!

Quiero crear 3 tablas, una de deportes, otra de equipos y una tercera de jugadores con las siguientes relaciones, deporte equipo (1-n), equipo jugador (1-n) y deporte jugador (1 -n). Estos son mis scripts de creación de las tablas pero me da un error y no logro ver donde esta:

CREATE TABLE DEPORTE(
IDDEPORTE INTEGER NOT NULL,
NOMBRE VARCHAR,
PRIMARY KEY(IDDEPORTE)
)ENGINE=InnoDB

CREATE TABLE EQUIPO(
IDEQUIPO INTEGER NOT NULL,
NOMBRE VARCHAR,
ANIOFUNDACION INTEGER,
ESTADIO VARCHAR,
CIUDAD VARCHAR,
IDDEPORTE INTEGER NOT NULL,
PRIMARY KEY(IDEQUIPO),
INDEX (IDDEPORTE),
FOREIGN KEY (IDDEPORTE)REFERENCES DEPORTE(IDDEPORTE) ON UPDATE CASCADE ON DELETE CASCADE,
)ENGINE=InnoDB



CREATE TABLE JUGADOR(
IDJUGADOR INTEGER NOT NULL,
NOMBRE VARCHAR,
APELLIDOS VARCHAR,
FECHANAC DATE,
NOMBRECORTO VARCHAR,
POSICION VARCHAR,
NACIONALIDAD VARCHAR,
IDDEPORTE INTEGER NOT NULL,
IDEQUIPO INTEGER NOT NULL,
PRIMARY KEY (IDJUGADOR),
INDEX (IDDEPORTE),
FOREIGN KEY (IDDEPORTE) REFERENCES DEPORTE(IDDEPORTE) ON UPDATE CASCADE ON DELETE CASCADE,
INDEX (IDEQUIPO),
FOREIGN KEY (IDEQUIPO) REFERENCES EQUIPO(IDEQUIPO)ON UPDATE CASCADE ON DELETE CASCADE
)ENGINE=InnoDB

Quiero que mis datos sean consistentes, es decir si borro un deporte quiero que se borren todos los jugadores y equipos asociados a ese deporte en cuestión. Me podéis ayudar para saber donde esta el error y poder crear mis tablas?.

Gracias de antemano. Un saludo
  #2 (permalink)  
Antiguo 01/07/2009, 11:06
Avatar de 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: Error al crear tablas dependientes

Tenía algunos detalles, como el caso de los VARCHAR: Se debe indicar la longitud en la definición de los campos ya que no pera el valor por default.

Esto funcionaría:
Código sql:
Ver original
  1. DROP TABLE IF EXISTS `deporte`;
  2. CREATE TABLE  `deporte` (
  3.   `IDDEPORTE` INT(11) NOT NULL,
  4.   `NOMBRE` VARCHAR(100) DEFAULT NULL,
  5.   PRIMARY KEY (`IDDEPORTE`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  7.  
  8. DROP TABLE IF EXISTS `equipo`;
  9. CREATE TABLE  `equipo` (
  10.   `IDEQUIPO` INT(11) NOT NULL,
  11.   `NOMBRE` VARCHAR(100) DEFAULT NULL,
  12.   `ANIOFUNDACION` INT(11) DEFAULT NULL,
  13.   `ESTADIO` VARCHAR(100) DEFAULT NULL,
  14.   `CIUDAD` VARCHAR(100) DEFAULT NULL,
  15.   `IDDEPORTE` INT(11) NOT NULL,
  16.   PRIMARY KEY (`IDEQUIPO`),
  17.   KEY `FK_equipo_deporte` (`IDDEPORTE`),
  18.   CONSTRAINT `FK_equipo_deporte` FOREIGN KEY (`IDDEPORTE`) REFERENCES `deporte` (`IDDEPORTE`) ON DELETE CASCADE ON UPDATE CASCADE
  19. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  20.  
  21. DROP TABLE IF EXISTS `jugador`;
  22. CREATE TABLE  `jugador` (
  23.   `IDJUGADOR` INT(11) NOT NULL,
  24.   `NOMBRE` VARCHAR(100) DEFAULT NULL,
  25.   `APELLIDOS` VARCHAR(100) DEFAULT NULL,
  26.   `FECHANAC` DATE DEFAULT NULL,
  27.   `NOMBRECORTO` VARCHAR(100) DEFAULT NULL,
  28.   `POSICION` VARCHAR(100) DEFAULT NULL,
  29.   `NACIONALIDAD` VARCHAR(100) DEFAULT NULL,
  30.   `IDDEPORTE` INT(11) NOT NULL,
  31.   `IDEQUIPO` INT(11) NOT NULL,
  32.   PRIMARY KEY (`IDJUGADOR`),
  33.   KEY `FK_jugador_equipo` (`IDEQUIPO`),
  34.   KEY `FK_jugador_deporte` (`IDDEPORTE`),
  35.   CONSTRAINT `FK_jugador_deporte` FOREIGN KEY (`IDDEPORTE`) REFERENCES `deporte` (`IDDEPORTE`) ON DELETE CASCADE ON UPDATE CASCADE,
  36.   CONSTRAINT `FK_jugador_equipo` FOREIGN KEY (`IDEQUIPO`) REFERENCES `equipo` (`IDEQUIPO`) ON DELETE CASCADE ON UPDATE CASCADE
  37. ) ENGINE=InnoDB DEFAULT CHARSET=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)
  #3 (permalink)  
Antiguo 01/07/2009, 13:09
 
Fecha de Ingreso: septiembre-2006
Mensajes: 114
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: Error al crear tablas dependientes

Muchisimas gracias, ya me funciona ok.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:20.