[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