Duplicar PK en MySQL
-
03-07-2019 - |
Pregunta
Hace un tiempo me dijeron en este sitio que la única manera de ir con un sistema de muchos a muchos (en mi caso, un sistema de Facebook-ish " friend-ing ") es hacer algo como esto:
uid(PK) friend_id
4 23
4 20
4 54
32 20
32 89
¿Esto no me deja con muchas claves primarias idénticas (que creo que no es posible?) Y si no puedo configurar uid como PK, ¿cómo puedo buscar rápidamente en la tabla? Debe haber una manera de salirse con la suya con un PK.
¡Gracias!
Solución
Si tiene una relación de muchos a muchos, puede desarrollar una tabla en la que cree una clave principal dual con el UID y el Friend_ID juntos. De esa manera solo debería haber una instancia de un par de UID / Friend_ID.
Otros consejos
haz que sea una clave compuesta
PK = (uid, frield_id)
Utilice una combinación de uid y friend_id como clave principal.
Haz que ambos sean parte de la clave principal.
Sin embargo, también querrás hacer un índice en uid (y posiblemente en friend_id) para que la velocidad de búsqueda no se vea afectada.
Puedes hacer una clave principal compuesta:
create table fbook (uid int, friend_id int, primary key(uid, friend_id));