Como representar uma auto para auto relacionamento no RDBMS?
-
07-07-2019 - |
Pergunta
Esperamos que esta é uma pergunta boba, mas meu cérebro está frito e eu não consigo pensar em como fazê-lo agora.
Estou brincando tentando fazer uma coisinha de rede social e terá de manter o controle de "seguidores" de uma pessoa. Eu tenho uma tabela de usuário já fez, mas como faço para representar a idéia de usuários a ser associado com o outro? Esta é uma relação de uma forma btw, por isso, se pessoa um "gosta" pessoa b, o inverso não é necessariamente verdadeiro.
A única coisa que eu posso pensar é uma tabela que só tem uma lista de um-para-um, assim:
user a -> user b
user a -> user c
user a -> user d
user b -> user d
user b -> user c
...
mas isso parece fora para mim.
Graças
Simon
edit: talvez um seguidor no twitter é mais análogo ao que eu estou tentando fazer
Solução
Criar uma tabela que detém apenas seguidor informações id assim:
user_id | follower_id
Isso deve ser ele. de modo a ter, por exemplo, usuário # 56.
ele provavelmente tem linhas como este na tabela de seguidor:
56 | 53453
56 | 323
56 | 463
Basta adicionar uma restrição exclusiva em ambas as colunas de modo que ele não pode amigo alguém duas vezes.
Outras dicas
Talvez uma tabela que se parece com:
RelationshipId Follower Target
Int Int Int
Onde Seguidor é o ID do UserA, e Target é o Id de UserB e UserA é seguir UserB.