Acceder Registrarme

Relación de muchos a muchos en mysql


Por: Pepe Beto Alvaro Gutiérrez Publicado el: 2016-07-07 08:33:09 Pregunta abierta

Hola! que tal, he estado intentado hacer la relacion de muchos a muchos pero me marca error, le mostrare como lo estoy haciendo.

create table tusuario
(
idUsuario int auto_increment,
correoEelectronico varchar (100) not null,
contrasenia varchar (700) not null,
fechaRegistro datetime not null,
fechaModificacion datetime not null,
primary Key(idUsuario)
);



create table tdepartamento
(
idDepartamento int auto_increment,
idUsuario int not null,
nombreDeparatmento varchar(100) not null,
fechaRegistro datetime not null,
fechaModificacion datetime not null,
foreign key(idUsuario) references tusuario(idUsuario),
primary key(idDepartamento)
);



create table tusuariodepartamento
(
idUsuarioDepartamento int auto_increment,
foreign key(idUsuario) references tusuario(idUsuario),
foreign key(idDepartamento) references tdepartamento(idDepartamento)
);




Base de datos MySql

Gustavo Echenique Marcado como mejor respuesta
por el autor de la pregunta
Usuario de (No especificado)

Hola José

la sintaxis debería ser así:

CREATE TABLE tusuariodepartamento
(
idUsuarioDepartamento INT AUTO_INCREMENT,
idUsuario INT NOT NULL,
idDepartamento INT NOT NULL,
FOREIGN KEY(idUsuario) REFERENCES tusuario(idUsuario),
FOREIGN KEY(idDepartamento) REFERENCES tdepartamento(idDepartamento),
PRIMARY KEY(idUsuarioDepartamento)
);

Ahora, para serte sincero, no entiendo el por qué de la existencia de esta tercera tabla, ya que en la tabla tdepartamento ya tienes la relación del departamento con el usuario.

Es una redundancia en el diseño.

Saludos!

  • 2016-07-16 21:33:09
  • Me gusta(2)
Usuario de (Perú)

Hola José, fíjate que en la tercera tabla declaras los FK pero no agregaste los campos del enlace.

create table tusuariodepartamento
(
idUsuarioDepartamento int auto_increment,
foreign key(idUsuario) references tusuario(idUsuario),
foreign key(idDepartamento) references tdepartamento(idDepartamento)
);

debería quedar de la siguiente manera:

create table tusuariodepartamento
(
idUsuarioDepartamento int auto_increment,
idUsuario int not null,
foreign key(idUsuario) references tusuario(idUsuario),
foreign key(idDepartamento) references tdepartamento(idDepartamento)
);

Saludos.

  • 2016-07-07 10:29:50
  • Me gusta(1)
Usuario de (Perú)

Exacto, como dice Gustavo, me faltó ponerle el PK y eso también te falta a ti José!

Saludos.

  • 2016-07-16 21:35:07
  • Me gusta(2)

  • Debes estar logueado para realizar comentarios