Sistema de mensajería esquema de base de datos

Estoy tratando de implementar un sistema de mensajería en PHP y MySQL, pero estoy teniendo algunos problemas para decidir sobre cómo debo hacer las tablas y consultas.

¿Cuál sería el mejor enfoque para un sistema que permite múltiples participantes? Estoy pensando que probablemente iba a necesitar 3 tablas (aparte de una tabla de usuarios).

Algo como

Conversation
------------
id

Messages
--------
id
conversation_id
from_id
subject
message
from_timestamp

Participants
------------
conversation_id
user_id
last_read_timestamp

La forma es la configuración que yo tendría que ver para leer los mensajes de la marca de tiempo en lugar de marcar cada mensaje. También me gustaría ser capaz de añadir a los participantes en cualquier momento.

¿Ustedes qué piensan?

Gracias de antemano.

  • El ‘from_id’ sería el user_id del remitente del mensaje. Muchos de los participantes pueden pertenecer a una conversación, sino un mensaje sólo puede pertenecer a uno de los participantes (o ex participante – sigue pensando en cómo hacer esto). Todos los participantes de una conversación puede ver los mensajes relacionados con él. Saludos
  • Creo que from_id es el user_id del autor. Si he entendido correctamente los «participantes» en la tabla de enlaces conversaciones a la tabla de usuarios (que no se muestra aquí) y almacena la última vez que el usuario lea esta conversación.
  • Me encantaría ver cómo se reparten con el participante en cuestión! Este es uno de los mejores esquemas de tabla que he visto.
InformationsquelleAutor RS7 | 2011-05-17

2 Kommentare

  1. 3

    No veo mucho de qué quejarse 🙂 yo probablemente caché de la última fecha de modificación en la tabla de conversaciones, de modo que una lista de «no leídos» las conversaciones se pueden mostrar rápidamente. Esta fecha se actualizará cada vez que un mensaje publicado en la conversación.

  2. 1

    Yo habría puesto el campo asunto de la conversación de la mesa. Poner en cada uno de los mensajes parece redundante.
    También, me gustaría guardar el tiempo de creación y el autor de id de usuario de la conversación en la mesa.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea