Cuestión de diseño:¿Cómo diseñar una mensajería/bandeja de entrada del sistema?

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

  •  02-07-2019
  •  | 
  •  

Pregunta

Muchos sitios web tienen el concepto de envío de mensajes de usuario a usuario.Cuando usted envía un mensaje a otro usuario, el mensaje se mostrará en la bandeja de entrada.Usted podría responder al mensaje, y aparecería como una nueva entrada en la que el hilo de mensajes.

Usted debe ser capaz de ver si has leído un mensaje dado ya, y los mensajes que han recibido una nueva respuesta debe ser capaz de estar en la parte superior.

¿Cómo calificaría el diseño de las clases (o tablas o lo que sea) en apoyo de tal sistema?

¿Fue útil?

Solución

user
 id
 name

messages
 id
 to_user_id
 from_user_id
 title
 date

message_post
 id
 message_id
 user_id
 message
 date

clases de reflejar este tipo de esquema

Otros consejos

Querrá extender Owen esquema para el apoyo masivo de mensajes donde el mensaje se almacena sólo una vez.También se modifican de modo que sólo hay un emisor y muchos receptores (nunca hay más de un remitente en este 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

Hay muchas, muchas otras características que se podrían añadir, por supuesto, pero la mayoría de la gente piensa de las características anteriores cuando piensan en "correo electrónico".

-Adam

Es bastante simple la estructura de la tabla.Un a/de, asunto y el mensaje.Ahora lo importante es el de los campos de fecha.El DateSent dice cuando fue enviado, el DateRead dice que el mensaje fue leído, y la DateDeletedTo dice que el usuario ha eliminado, y el DateDeletedFROM dice que el usuario eliminado (estos son lógicos elimina para este ejemplo).

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

Yo realmente estoy haciendo esto como parte de algunos internos de desarrollo en el trabajo.Hacer una tabla llamada [Mensajes] y darle las columnas siguientes.

  • mID (ID de mensaje)
  • from_user
  • to_user
  • mensaje
  • tiempo
  • tID (ID del hilo)
  • leer (booleano)

Algo así como que debe trabajar para el diseño de la tabla.Las clases dependen de cuál sea el sistema que estamos diseñando en.

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

Entonces, usted puede ir a través del Hilo de la tabla para obtener un hilo de mensajes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top