Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/07/2014, 05:19
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: ¿Puedo tener una llave primaria como foránea en dos tablas distintas?

Habría que ver lo que estas haciendo.

Des del punto de vista teórico no hay ningún inconveniente para esta situación. Pero depende de lo que hagas en la consulta se pueden repetir registros.

Pongamos un ejemplo entendible:

Una base de datos de personas con sus teléfonos y direcciones (simplificada no tendre en cuenta la posibilidad de las relaciones N:M, lo complicaría y no ayudaría al caso)

Personas
idPersonas PK
...

Telefonos
idTelefonos
idPersonas FK
...

Direcciones
idDirecciones
idPersonas FK
...


Si haces

Código MySQL:
Ver original
  1. SELECT p.*,t.* FROM personas p LEFT JOIN telefonos t ON p.idpersonas=t.idpersonas;

Pepito telefono1
Pepito telefono2

Cada persona saldrá una o mas veces en función de numero de numeros de telefono que tenga, como debe ser.

Código MySQL:
Ver original
  1. SELECT p.*,d.* FROM personas p LEFT JOIN direcciones d ON p.idpersonas=d.idpersonas;

Pepito direccion1
Pepito direccion2


Idem para las direcciones, como debe ser.


Código MySQL:
Ver original
  1. SELECT p.*,d.*,t.*
  2. FROM personas p LEFT JOIN direcciones d ON p.idpersonas=d.idpersonas
  3.                             LEFT JOIN telefonos t ON p.idpersonas=t.idpersonas;

Pepito telefono1 direccion1
Pepito telefono1 direccion2
Pepito telefono2 direccion1
Pepito telefono2 direccion2

Ahora va a hacer lo mismo pero agregando un producto cartesiano entre los registros de las dos tablas auxiliares que están relacionados con la misma persona.

Fíjate que NO estas diciendo nada sobre que relación tienen entre si teléfonos y direcciones, solo si pertenecen a una persona o no. Luego TODO teléfono de Pepito esta relacionado con TODA dirección de Pepito.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 25/07/2014 a las 05:27