2009-03-05 5 views
2

Мне было рассказано некоторое время назад на этом сайте, что единственный способ пойти со многими-ко-многим (в моем случае системой facebook-ish «friend-ing») - сделать что-то вроде этого :Duplicate PK in MySQL

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

Привычка это оставить меня с большим количеством одинаковых первичных ключей И если я не могу установить UID как ПК, как можно быстро найти таблицу (что я считаю это не возможно?)? Должен быть способ избежать этого с помощью ПК.

Спасибо!

ответ

2

Если у вас много отношений, вы можете создать таблицу между тем, где вы создаете двойной первичный ключ с идентификатором UID и Friend_ID. Таким образом, должен быть только один экземпляр пары UID/Friend_ID.

3

делают его композитным ключом

PK = (UID, frield_id)

2

Используйте композит как UID и friend_id в качестве первичного ключа.

1

Сделайте их частью первичного ключа.

Однако вы также захотите сделать индекс на uid (и, возможно, friend_id), чтобы скорость поиска не пострадала.

1

Вы можете просто сделать соединение первичного ключа:

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