[firebase-br] Auto relacionamento m:n

Fábio Marques fmarques em nautilus.com.br
Sex Maio 22 16:52:39 -03 2009


        Caros,

    Trata-se uma questão de modelagem, então de antemão, peço desculpas 
pelo off.

    Estou precisando modelar uma entidade auto relacionada com 
cardinalidade muitos para muitos. É o caso similar ao protocolo de 
mensagens instantâneas ou então de sites de relacionamentos, onde um 
usuário adiciona o outro e caso o convite seja aceito, ambos tornam-se 
amigos (em igual nível).

    Logo, não trata-se de um auto relacionamento trivialmente visto por 
ai, do tipo, funcionário/gerente, onde temos a hierarquia que diferencia 
as tuplas envolvidas. Então poderia ter-se a seguinte modelagem:

          Usuario (_id_, nome);
          Usuario_has_Usuario(usuario1, usuario2, aceitacao);

    Porém imaginem só: Qual a rede de amigos do usuário João? Eu teria 
que percorrer a entidade "Usuario_has_Usuario", os atributos "usuario1" 
e "usuario2", buscando a ocorrência do usuário João, e que tivessem sido 
aceitas ("/SELECT * FROM Usuario_has_Usuario WHERE ((usuario1 = 
id_do_João OR usuario2 = id_do_João) AND aceitacao = 'S');/"). Confesso 
que a solução não agradou-me, mas já estou me resignando a aceitá-la.

    Gostaria de ouvir a opinião dos colegas, pois acredito que alguém 
(quer seja o hotmail, quer seja o orkut) já deu uma solução (elegante ou 
nem tanto) para o problema.

Muito grato a todos,

-- 
F. Marques
Systems Analyst/IT Consultant
E-mail/MSN: fmarques em nautilus.com.br
Home Page: www.nautilus.com.br/~fmarques
Mobile: 91 8208-5996 (TIM) & 8859-3998 (OI) / ICQ: 267-074-196
Linux Registred User #362204 (debian 5.0 "Lenny")
Brazilian Computer Society Member #18201

"The box said: Requires MS Windows or better, so I instaled Linux"





Mais detalhes sobre a lista de discussão lista