elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Problema con relación 1:1
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con relación 1:1  (Leído 2,631 veces)
neveldine

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Problema con relación 1:1
« en: 25 Noviembre 2015, 14:01 pm »

Tengo esta base de datos:

Código
  1. CREATE TABLE ehbd.Clientes (
  2. idClientes INT NOT NULL AUTO_INCREMENT ,
  3.    nombre VARCHAR(64) NOT NULL,
  4.    PRIMARY KEY (idClientes),
  5.    FOREIGN KEY (idUsuarios) REFERENCES ehbd.Usuarios(idUsuarios)
  6. ) engine=innodb;
  7.  
  8. CREATE TABLE ehbd.Usuarios (
  9. idUsuarios INT NOT NULL AUTO_INCREMENT ,
  10.    username VARCHAR(64) NOT NULL,
  11.    email VARCHAR(64) NOT NULL,
  12.    PRIMARY KEY(idUsuarios),
  13.    FOREIGN KEY(idClientes) REFERENCES ehbd.Clientes(idClientes)
  14. ) engine=innodb;
  15.  
  16.  

Necesito relacionar estas dos bases de datos con una relación 1:1. Esto me da error porque en la primera tabla defino una foreign key a una tabla Usuarios que todavía no existe.

¿Cómo podría hacer esto sin juntar las tablas?

Gracias anticipadas.

Un cordial saludo


« Última modificación: 1 Diciembre 2015, 12:53 pm por neveldine » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Problema con relación 1:1
« Respuesta #1 en: 25 Noviembre 2015, 16:28 pm »

Puedes añadir las claves foráneas después de haber creado las tablas (sin claves). Haces un ALTER TABLE, y un ADD FOREIGN KEY.


En línea

neveldine

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Problema con relación 1:1
« Respuesta #2 en: 1 Diciembre 2015, 12:47 pm »

Hola,

He seguido tu consejo y he hecho lo siguiente:

Código
  1.  
  2. CREATE TABLE ehbd.Clientes (
  3. idClientes INT NOT NULL AUTO_INCREMENT ,
  4.    nombre VARCHAR(64) NOT NULL,
  5.    idUsuarios     INT NOT NULL,
  6.    PRIMARY KEY (idClientes)
  7. ) engine=innodb;
  8.  
  9. CREATE TABLE ehbd.Usuarios (
  10. idUsuarios INT NOT NULL AUTO_INCREMENT ,
  11.    username VARCHAR(64) NOT NULL,
  12.    email VARCHAR(64) NOT NULL,
  13.    idClientes INT NOT NULL,
  14.    PRIMARY KEY(idUsuarios),
  15.    FOREIGN KEY(idClientes) REFERENCES ehbd.Clientes(idClientes)
  16. ) engine=innodb;
  17.  
  18. ALTER TABLE ehbd.clientes
  19. ADD FOREIGN KEY (idUsuarios) REFERENCES ehbd.Usuarios(idUsuarios);
  20.  

El resultado de aplicar "Reverse Engineer" de Mysql Workbench es:



¿Es esto una relación 1:1 bidireccional?

¿No debería tener unas fechas 1:1 ----  como sale en la imagen de la izquierda?

Un cordial saludo
« Última modificación: 1 Diciembre 2015, 12:53 pm por neveldine » En línea

d91

Desconectado Desconectado

Mensajes: 165


Ver Perfil
Re: Problema con relación 1:1
« Respuesta #3 en: 12 Diciembre 2015, 15:38 pm »

solo por curiosidad, en tu base de datos cual es el rol del usuario, el enunciado tal vez seria: un usuario puede atender a muchos clientes y muchos clientes pueden ser atendidos por un mismo usuario, por lo que iria una tabla auxiliar   cliente-usuario
Código
  1. CREATE TABLE cliente_usuario(
  2.  idCliente INT,
  3.  idUsuario INT,
  4.  fecha  DATE
  5.   FOREIGN KEY (idUsuarios) REFERENCES Usuarios(idUsuarios)
  6.   FOREIGN KEY(idClientes) REFERENCES Clientes(idClientes
  7. )
  8.  

una relación 1:1 esta contenida por los campos en la misma tabla ej. un cliente tendrá un DNI, NIT, fecha_nacimiento
« Última modificación: 12 Diciembre 2015, 15:46 pm por d91 » En línea

Hadess_inf
Desesperado
Colaborador
***
Desconectado Desconectado

Mensajes: 2.048


Nueva Vida


Ver Perfil WWW
Re: Problema con relación 1:1
« Respuesta #4 en: 5 Enero 2016, 22:59 pm »

¿Realizas tu insercion dentro de un bloque de transacciòn?

Begin
...
commit;
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problemas. relacion Nero y los VCD's
Software
TheChivo 2 1,807 Último mensaje 14 Julio 2004, 10:54 am
por gusmann
Relacion ps2!!!
Juegos y Consolas
to_rayao 7 3,054 Último mensaje 5 Enero 2007, 23:25 pm
por -Elkiot-
relacion de dos tablas « 1 2 »
Bases de Datos
jecavi20 10 6,767 Último mensaje 5 Septiembre 2013, 01:22 am
por jecavi20
relacion de uno a muchos (sql)
Desarrollo Web
lilyei 4 1,903 Último mensaje 18 Octubre 2019, 13:49 pm
por EdePC
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines