Cuestión de diseño:¿Cómo diseñar una mensajería/bandeja de entrada del sistema?
-
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?
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.