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


 


Tema destacado: Píldoras formativas en seguridad de la información


+  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 641 veces)
neveldine

Desconectado Desconectado

Mensajes: 17


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

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 por neveldine » En línea

ivancea96


Conectado Conectado

Mensajes: 3.296


ASMático


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

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 »

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 por neveldine » En línea

d91

Desconectado Desconectado

Mensajes: 154


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

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 por d91 » En línea

Hadess_inf
Desesperado
Colaborador
***
Desconectado Desconectado

Mensajes: 2.027


Nueva Vida


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

¿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
problema con relacion de structuras y arcivos en c
Programación C/C++
[eklvin] 4 1,155 Último mensaje 20 Julio 2005, 06:31
por [eklvin]
Relacion ps2!!!
Juegos y Consolas
to_rayao 7 1,369 Último mensaje 5 Enero 2007, 23:25
por -Elkiot-
Relación CPU-GPU...
Hardware
Randomize 4 2,769 Último mensaje 19 Abril 2008, 13:12
por Artikbot
Internet: un problema en la relación Zapatero-Obama
Noticias
wolfbcn 0 499 Último mensaje 6 Diciembre 2009, 22:49
por wolfbcn
relacion de dos tablas « 1 2 »
Bases de Datos
jecavi20 10 2,773 Último mensaje 5 Septiembre 2013, 01:22
por jecavi20
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines