X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Система друзей на сайте
ZhukV
ZhukV
Topic Starter сообщение 30.10.2012, 14:03; Ответить: ZhukV
Сообщение #1


Доброе время суток всем.

Есть вопрос о сложении структуры для системы друзей на сайте. Используется Sumfony 2.1 & Doctrine 2.3

Сейчас есть две идеи о сложении структуры:



id | uid | receiver | status

id - Primary key
uid - Юзер от которого пошло пришлашение
receiver - К которому пришло
status - статус подтверждения

Плюсы: Очень легко обрабатывать запросы на добавления в друзья
Минусы: тяжело выводить всех моих друзей и заявки в друзья

Есть второй вариант:
Структура та же, теперь uid - это как бы сказать "уникальный ключ", по которому ведеться поиск всех моих друзей. Тоесть, если есть два пользователя, и они дружат между собой, таблица будет иметь вид:

id | uid | receiver | status
1 | 1 | 2 | true
2 | 2 | 1 | true

Если же пользователь отмнил, то статус для другого пользователя будет 0


В результате, если пользователь подверждает дружбу то создается вторя связь.

Плюсы: быстрый поиск друзей и заявок в друзья.
Минусы: количество записей растет в 2 раза.


Стоит PostgreSql 9.1. Нагрузки на сервер не страшны, главное - удобство!

У кого есть какие мысли, относительно сложении структуры.
Заранее благодарен.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
xdrew
xdrew
сообщение 31.10.2012, 12:09; Ответить: xdrew
Сообщение #2


Во втором случае вид будет скорее:
id | uid | receiver | status
1 | 1 | 2 | true
2 | 2 | 2 | true
Потому что в противном случае получается, что два приглашающих в одном отношении + логичнее указывать инициатора.
А вообще, вопрос упирается в ограничение доктрины на дополнительные поля в отношении многие-ко-многим.
Можно почитать на эту тему здесь и здесь
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 31.10.2012, 22:25; Ответить: Arks
Сообщение #3


обычная связь много ко многим

tbl1:
id, name ... прочие поля
1 Вася
2 Коля
3 Петя

tbl_friendship
initiator receiver (составной PK аналогичен)
1 2

Запись означает Что юзер Вася послал пригашение юзеру Коле.
Через некоторое время Коля может подтвердить его и появится запись
2 1
Если Вася передумает - его связь исчезает.

Аналогичные таблицы для любых других связей между пользователем, например блеклист, отклоненные заявки в друзья и т.д.
При этом все взаимодействие между списками по сути сводится к ряду триггеров между списками, а не к доктрине.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыБыстрый и качественный обмен на сайте Baksman.org
Обмен Bitcoin, BTC-e, PM, Qiwi, Yandex money, Карты банк
52 Baksman 33589 18.4.2024, 5:02
автор: Baksman
Открытая тема (нет новых ответов) Боты могут делать пушподписки на моём сайте?
0 Megaspryt 477 17.4.2024, 23:29
автор: Megaspryt
Горячая тема (нет новых ответов) CryptoCloud — прием USDT, BTC, ETH, LTC на любом сайте
36 CryptoCLoud 10639 16.4.2024, 16:02
автор: CryptoCLoud
Горячая тема (нет новых ответов) Странный трафик на сайте длительное время
33 TABAK 8793 12.4.2024, 5:56
автор: Skyworker
Открытая тема (нет новых ответов) Алтуально ли заработок на сайте?
Оцение пожалуйста идею
10 hitman20 1882 1.2.2024, 5:37
автор: Liudmila


 



RSS Текстовая версия Сейчас: 20.4.2024, 7:33
Дизайн