Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Diego Macêdo

Como funciona o Auto-Relacionamento de usuários em rede sociais?

Recommended Posts

Gostaria de saber como funciona a lógica no BD para realizar um relacionamento de amizade em uma rede social ou qualquer coisa do tipo.

 

Alguém poderia dar um exemplo?

 

Gostaria de entender esse controle no BD quanto a enviar convite de amizade e ficar pendente até o outro aceitar e depois de aceito já estar feita a vinculada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, nao vou colocar SQL, mas vou escrever a lógica:

 

TABELA | CAMPOS

usuario | id, nome, e-mail, ...

usuario_amigos | usuario_1, usuario_2, amizade_status

 

No caso o usuário enviaria o convite para outro, e na tabelas usuario_amigos os campos usuario_1 e usuario_2 seriam chaves estrangeiras, do campo id da tabela usuario. No amizade_status você definiria o status (ex: 0-convite pendente, 1-amigo aceito, 2-bloqueado) e caso a amizade fosse recusada deletaria os dados da tabela.

 

Pensei e já fui postando, mas funcionaria +/- assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa parte aí eu tinha pensado, mas a dúvida seria o seguinte:

 

Como vou saber através deste status quem enviou o convite? Pois só assim com estas informações, não tem como saber, então este convite para ser aceito seria visualizado pelos 2. Não tem controle neste caso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa parte aí eu tinha pensado, mas a dúvida seria o seguinte:

 

Como vou saber através deste status quem enviou o convite? Pois só assim com estas informações, não tem como saber, então este convite para ser aceito seria visualizado pelos 2. Não tem controle neste caso.

 

Apartir daí tanto faz, depende de sua organização... Você poderia definir o usuario_1 como quem enviou o convite e usuario_2 como sendo sempre quem recebeu.

 

E para o select mostrar as solicitações de amizades pendentes usaria apenas:

SELECT * FROM usuarios_amigos WHERE usuario_2='  /* ID DO USUARIO LOGADO NA REDE */ ' AND amizade_status = '0'

No caso, considerei amizade_status='0' igual a convite pendente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.