Таблица друзей

Alien85

I like my cat
Сейчас таблица выглядит так: user_id1, user_id2, status

Мне кажется, что можно придумать что-то получше.
Т.к достать всех своих друзей со связыванием их с таблицей users как-то накладно.
 

Alien85

I like my cat
пока курил, решил сделать так: мой_id, id_друга, status
и добалять на каждого друга по 2 записи: 1,2,1; 2,1,1;
а если не подтвердил, что друг, то: 1,2,0

тогда такой вопрос: какие индексы поставить этой таблице?
используется innodb со связыванием

мой_id - PRIMARY
id_друга - index
мой_id, id_друга - unique

Многовато как-то...
 

Alien85

I like my cat
туплю страшно, какой primary?

мой_id, id_друга - unique
id_друга - index

вот и все... :)
 

Vin-Diesel

Новичок
user1, user2, status
primary(user1, user2)
select if(user1 = my_id, user2, user1), status from users where user1 = my_id or user1 = my_id;
При создании дружбы делаем такую вставку
my_id, user, статус
но предварительно проверяем существует ли дружба, т.е. user, my_id
но это не готовое решение, еще подумай по оптимизации) и какой функционал должен быть.. там можно кое-что изменить
Как идея хранить разные статусы для двух друзей.
Т.е. я тебя записал как "знакомый", а ты меня как "друг" или что-то вроде того)
 

Вурдалак

Продвинутый новичок
пока курил, решил сделать так: мой_id, id_друга, status
и добалять на каждого друга по 2 записи: 1,2,1; 2,1,1;
— у меня так же.

Вообще, конечно, третье поле — денормализация, но вполне приемлемая.
 
Сверху