Дубликат ПК в MySQL - PullRequest
       23

Дубликат ПК в MySQL

2 голосов
/ 05 марта 2009

Некоторое время назад на этом сайте мне сказали, что единственный способ использовать систему «многие ко многим» (в моем случае это система «друзей» на Facebook) - сделать что-то подобное:

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

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

Спасибо!

Ответы [ 5 ]

3 голосов
/ 05 марта 2009

сделать его составным ключом

PK = (uid, frield_id)

2 голосов
/ 05 марта 2009

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

2 голосов
/ 05 марта 2009

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

1 голос
/ 05 марта 2009

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

create table fbook (uid int, friend_id int, primary key(uid, friend_id));
1 голос
/ 05 марта 2009

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

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

...