Ir para conteúdo

Arquivado

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

Guilherme Oderdenge

Chat coletivo - Pensando na tabela ideal

Recommended Posts

Olá!

 

Cavalheiros, estou desenvolvendo um chat coletivo utilizando com o banco de dados o SQL Server. Farei um chat utilizando C# e AJAX para web. Esse chat, no entanto, será coletivo. Usuários poderão adicionar usuários.

 

No chat, ainda, teremos o recurso do histórico. Digamos que eu crie um chat com três usuários; esses três usuários terão um histórico sobre a conversa que eles tiveram. Mas vamos supor que um quarto usuário entre nessa conversa. Ele, por sua vez, terá um outro histórico. O histórico do quarto usuário será diferente porque ele só conseguirá ver o histórico a partir do momento que ele entrou na conversa.

 

Se vocês utilizarem o Skype, tenham em mente que é o mesmo modelo de conversa do aplicativo. Infelizmente eu não consigo seguir o modelo do Skype porque eles tem a vantagem de salvar este histórico localmente utilizando XML. Estarei na web, portanto, não posso utilizar a tecnologia em questão.

 

Baseado nisso tudo, pergunto: qual o melhor modelo de tabelas para solucionar este problema? Estou desde sexta-feira tentando pensar no modelo ideal, mas eu sempre encontro um problema. Já ouvi diversas opiniões, mas sempre é-se encontrado brechas. Poderiam, vocês, mestres, me ajudar?

 

Como já sabido, talvez seja facilmente resolvido este problema utilizando "gambiarra", ou, não muito mais longe, ignorando normas de qualidade. De qualquer forma, a aplicação em questão exige uma boa performance e uma flexibilidade de manutenção.

 

Desde já, agradeço.

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, depois de analisar e correr um pouco mais atrás, consegui "um pouco" da resposta. Vejam a estrutura:

 

  • Users (UserId, Name)
  • Chat (ChatId, ChatName)
  • ChatParticipation (ChatParticipationId, UserId, JoinChatMessageId, LeaveMessageId)
  • ChatMessages (ChatMessageId, ChatId, UserId, Message)

Foi no melhor resultado que consegui chegar. Alguém tem mais alguma sugestão?

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.