Projeto pergunta: Como você projetar um sistema de mensagens / caixa de entrada?

StackOverflow https://stackoverflow.com/questions/123783

  •  02-07-2019
  •  | 
  •  

Pergunta

Muitos sites têm o conceito de envio de mensagens de usuário para usuário. Quando você envia uma mensagem para outro usuário, a mensagem iria aparecer na sua caixa de entrada. Você pode responder à mensagem, e ele iria mostrar-se como uma nova entrada nesse segmento de mensagem.

Você deve ser capaz de ver se você leu uma determinada mensagem já, e as mensagens que tenho uma nova resposta deve ser capaz de estar no topo.

Como você projetar as classes (ou tabelas ou qualquer outro) para apoiar um tal sistema?

Foi útil?

Solução

user
 id
 name

messages
 id
 to_user_id
 from_user_id
 title
 date

message_post
 id
 message_id
 user_id
 message
 date

aulas iria reflectir este tipo de esquema

Outras dicas

Você pode querer estender o esquema de Owen para mensagens em massa de apoio onde a mensagem é armazenado apenas uma vez. Também modificado por isso há apenas um remetente, e muitos receptores (nunca há mais de um remetente neste esquema)

user
  id
  name

message
  id
  recipient_id
  content_id 
  date_time_sent
  date_time_read
  response_to_message_id (refers to the email this one is in response to - threading)
  expires
  importance
  flags (read, read reply, etc)

content
  id
  message_id
  sender_id 
  title
  message

Existem muitas, muitas outras características que poderiam ser adicionados, é claro, mas a maioria das pessoas acha que as anteriores características quando eles pensam "email".

-Adam

É uma estrutura de tabela bastante simples. Um de / para, assunto e, em seguida, a mensagem. Agora o importante é os campos de data. O DateSent diz quando foi enviada, o DateRead diz que a mensagem foi lida, eo DateDeletedTo diz que o usuário apagou, eo DateDeletedFROM diz que o DE usuário excluído que (estes são exclusões lógicas para este exemplo).

tblMessage
ID  BIGINT 
ToUserID GUID/BIGINT
FromUserID GUID/BIGINT
Subject NVARCHAR(150)
Message NVARCHAR(Max)
DateDeletedFrom DATETIME
DateDeletedTo DATETIME
DateSent DATETIME
DateRead DATETIME

Na verdade, estou fazendo isso como parte de um desenvolvimento interno no trabalho. Faça uma tabela chamada [mensagens] e dar-lhe as seguintes colunas.

  • MID (mensagem de ID)
  • FROM_USER
  • to_user
  • mensagem
  • tempo
  • TID (ID da thread)
  • ler (a boolean)

Algo assim deve funcionar para o design da tabela. As classes depender de qual sistema você está projetando-lo.

Table Message:
id INTEGER
recipient_id INTEGER -- FK to users table
sender_id INTEGER -- ditto
subject VARCHAR
body TEXT

Table Thread
parent_id -- FK to message table
child_id -- FK to message table

Em seguida, você poderia simplesmente ir através da tabela de Tópico para obter um fio de mensagens.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top