как спроектировать таблицу друзей для мини-вконтакте? Есть наброска типа
tblFriends:
ID - autoincrement
ID1 - int - айди одного человека
ID2 - int - айди другого
ID1 дружит с ID2?
Но это не очень оптимально так, как сложно осуществуть поиск всех друзей конкретного пользователя. Может у кого - то есть мдеи по - лучше. Создавать отдельную таблицу друзей для каждого аккаунта не рассматриваю
Сорри за ошибки в словах)
Спустя 27 минут, 8 секунд (23.11.2010 - 21:11) waldicom написал(а):
Может сделать отдельную таблицу, которая могла бы выглядеть примерно так:
id
friend1Id
friend2Id
id
friend1Id
friend2Id
Спустя 21 минута, 58 секунд (23.11.2010 - 21:33) Guest написал(а):
чем Ваша версия таблицы отличается от моей?
Спустя 5 минут, 21 секунда (23.11.2010 - 21:39) waldicom написал(а):
Цитата (Guest @ 23.11.2010 - 20:33) |
чем Ваша версия таблицы отличается от моей? |
Посмотрел еще раз. Видимо ничем.
Я сначала понял вашу таблицу так, что в ней описывается полностью один пользователь и есть одно дополнительное поле для друга. Но видимо я был не прав. Так что считайте мой ответ бредом.
Правда я тогда не пойму, почему по Вашему трудно находить друзей, если это всего один запрос, но это уже другая история.
Спустя 3 минуты, 25 секунд (23.11.2010 - 21:42) Гость_Miha написал(а):
также есть вариант при создании аккаунта создавать для него таблицу ЕГО друзей, ЕГО, фотографий и т. д. возможно ли обойти этот способ (иметь обжую таблицу) не не терять производительности при поиске например друзей конкретного аккаунта в примере выше? Так, как при поиске нужно проверять 2 поля
Спустя 2 минуты, 25 секунд (23.11.2010 - 21:45) Guest написал(а):
искать не друзей не трудно, просто теряеться производительность. Например если ID пользователя со значением "100", тогда нужно проверять два поля в таблице на наличие значения 100, а не одно. Повышается время исполнения запроса в 2 раза
Спустя 11 минут, 37 секунд (23.11.2010 - 21:56) waldicom написал(а):
Цитата (Guest @ 23.11.2010 - 20:45) |
искать не друзей не трудно, просто теряеться производительность. Например если ID пользователя со значением "100", тогда нужно проверять два поля в таблице на наличие значения 100, а не одно. Повышается время исполнения запроса в 2 раза |
Т.е. если у пользователя id=100 есть 248 друзей, то и производительность уменьшается в 248 раз?
Как у Вас сейчас сделана таблица, где просто хранятся все зарегенные пользователи?
Спустя 23 минуты, 21 секунда (23.11.2010 - 22:20) maximko написал(а):
Цитата (waldicom @ 23.11.2010 - 18:56) |
Т.е. если у пользователя id=100 есть 248 друзей, то и производительность уменьшается в 248 раз? Как у Вас сейчас сделана таблица, где просто хранятся все зарегенные пользователи? |
tblUsers:
ID
FirstNAme
SecondName
NICK
MainPhoto
Info
Albums
Friends - int
Wall - int
Messages - int
Спустя 7 минут, 45 секунд (23.11.2010 - 22:27) maximko написал(а):
я вот не знаю, может все-таки создавать для каждого юзера отдельнуб таблицу друзей, стену и т.д.?
Спустя 1 час, 1 минута, 12 секунд (23.11.2010 - 23:29) tomash написал(а):
храните список друзей строкой или сериализованой строкой
user_id | friends_list
user_id | friends_list
Спустя 5 минут, 52 секунды (23.11.2010 - 23:34) waldicom написал(а):
Цитата (tomash @ 23.11.2010 - 22:29) |
храните список друзей строкой или сериализованой строкой user_id | friends_list |
И поимейте кучу проблем при поиске, вставке, удалении и редактировании
Спустя 7 минут, 49 секунд (23.11.2010 - 23:42) tomash написал(а):
Задача стояла упростить поиск всех друзей. Все равно одной таблицей не обойдеться.
Я бы еще добавил бы таблицу
id_user|id_friend - c составным ключом
Я бы еще добавил бы таблицу
id_user|id_friend - c составным ключом
Спустя 15 минут, 51 секунда (23.11.2010 - 23:58) maximko написал(а):
Цитата (waldicom @ 23.11.2010 - 20:34) |
храните список друзей строкой или сериализованой строкой user_id | friends_list |
однозначно, этот способ не годится
Спустя 2 часа, 7 минут, 21 секунда (24.11.2010 - 02:05) maximko написал(а):
мне интересно, как делают сами разработчики Vkontakte
Спустя 2 минуты, 33 секунды (24.11.2010 - 02:08) tomash написал(а):
думаю они используют не реляционную модель
Спустя 15 часов, 7 минут, 25 секунд (24.11.2010 - 17:15) maximko написал(а):
а
Цитата (tomash @ 23.11.2010 - 23:08) |
думаю они используют не реляционную модель |
может графы?