2009-03-05 9 views
2

On m'a dit il y a quelques temps sur ce site que la seule façon d'aller avec un système many-to-many (dans mon cas un "friend-ing" facebook-ish) est de faire quelque chose comme ça :Dupliquer PK dans MySQL

uid(PK) friend_id 
4  23 
4  20 
4  54 
32  20 
32  89 

Wont cela me laisse avec beaucoup de clés primaires identiques Et si je ne peux pas mettre uid comme PK, comment puis-je trouver rapidement la table (qui je crois est pas possible?)? Il doit y avoir un moyen de s'en tirer avec un PK.

Merci!

Répondre

2

Si vous avez une relation plusieurs à plusieurs, vous pouvez développer une table entre deux où vous créez une clé primaire double avec l'UID et l'Friend_ID ensemble. De cette façon, il ne devrait y avoir qu'une seule instance d'une paire d'UID/Friend_ID.

3

font un composit clé

PK = (uid, frield_id)

2

Utilisation d'un composite à la fois du fluide et friend_id comme clé primaire. Faites-les tous les deux partie de la clé primaire

1

Toutefois, vous devrez également créer un index sur uid (et éventuellement friend_id) afin que la vitesse de recherche ne souffre pas.

1

Vous pouvez simplement faire une clé primaire composée:

create table fbook (uid int, friend_id int, primary key(uid, friend_id)); 
Questions connexes