La comunicación entre los usuarios de Facebook parece estar almacenada en una "conversación" larga. Entonces, los correos electrónicos enviados y los mensajes de chat privados intercambiados parecen ser parte de una larga conversación en curso.Diseño de la base de datos: chat privado, chat de grupo y correos electrónicos
Creo que esta implementación funciona bien para los usuarios (al menos lo hace para mí). Asumo el diseño de tabla para esta parte podría ser implementado de esta manera:
TABLE: message
- message_id
- timestamp
- from_user_id
- to_user_id
- message
Lo que si quería apoyar chat de grupo? Haría algo como esto:
TABLE: message
- message_id
- timestamp
- from_user_id
- message
TABLE: message_recipient
- message_recipient_id
- message_id
- to_user_id
Creo que va a funcionar. Sin embargo, me pregunto si tendría sentido para el usuario si mostrara cada una de las cosas que el usuario ha enviado a alguien en una larga conversación. Probablemente no. Imagine una conversación con la persona A se mezcla con la conversación en grupo con A, B, C, D mezclado con conversación con la persona E y así sucesivamente ....
Cualquier sugerencia sobre lo que sería un concepto útil para poner en práctica?