Como hacer una relación de 1 a 1

Hola chicos. Estoy diseñando una base de datos con mysql. Quiero hacer una relación de uno a uno entre las tablas ListaRepartos y Repartidores, cuyas claves primarias son id_listarepartos y id_repartidores respectivamente.
Lo que he hecho ha sido poner como Foreign Key el id_listarepartos a la tabla Repartidores.
Pero claro, ese id_listarepartos puede ser el mismo para distintos repartidores, por tanto la relación no sería de 1 (listarepartos) a 1(repartidor), sino de 1 a N.
He intentado añadir como clave primaria la id_listarepartos en la tabla repartidores, pensando que se tomaría como una clave independiente a id_repartidores. Sin embargo, parece que lo que hace es hacer la join de ambas claves primarias, por lo que pueden repetirse en su propia columna id_repartidores y id_listarepartos, siempre que su combinación sea distinta.
¿Alguien puede echarme una mano con esto?
Muchas gracias ;)
1

1 respuesta

0
Respuesta de
Hola peeper,
No termino de entender tu planteamiento. Si tienes una tabla con los repartos, es evidente como bien dices que un repartidor tendrá más de un reparto por lo que no puedes tener nunca una relación 1 a 1 entre repartidores y repartos, sino 1 a N. Para tener una relación 1 a 1 deberás tener un repartidor para cada reparto, por lo que tendrías que contratar un repartidor cada vez que quisieras hacer un reparto en la empresa y despedirlo cuando terminara el reparto.
La única forma de tener una relación 1 a 1 es crear cada vez que crees un reparto, un repartidor nuevo, con lo que los dos ID's formarían una relación 1 a 1, aunque en ese caso es mejor tener todo en la misma tabla.
Por favor, si estoy equivocado, amplíame tu explicación para poder ayudarte mejor.
Hola y gracias por tu respuesta, pero creo que no me expliqué bien.
La
Relación 1 a 1 es entre REPARTIDOR y LISTAREPARTOS. Luego además cada
LISTAREPARTOS tendrá N REPARTIDOR como dices, pero mi cuestión era en la
relación entre REPARTIDOR y LISTAREPARTOS.
Ya he solucionado mi duda, así que os dejo la solución por si a alguien puede servirle.
Tengo, básicamente:
- REPARTIDOR, con su id_repartidor
- LISTAREPARTOS, con su id_listarepartos
Para
Hacer la relación de 1 a N entre éstas, añado como foreign key
id_listarepartos a REPARTIDOR, teniendo así que cada REPARTIDOR tiene
una única LISTAREPARTOS.Sin embargo, una LISTAREPARTOS puede ser la misma para varios REPARTIDORES, es decir, tenemos una relación de 1 LISTAREPARTOS------ N REPARTIDOR.
Para hacer que ésta relación sea de 1 a 1, basta con añadir la
propiedad UNIQUE a esta foreign key, (Index Kind---UNIQUE), ya que de
esta manera id_listarepartos no puede repetirse en la tabla REPARTIDOR,
por lo que una LISTAREPARTOS sólo puede pertenecer así a un REPARTIDOR.
Saludos y gracias  ;)
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje

Más respuestas relacionadas

¿No es la pregunta que estabas buscando?
Puedes explorar otras preguntas del tema MySQL o hacer tu propia pregunta: