Estructura BBDD simple para mensajes privados

SicKneSs

Buenas,

tengo que hacer un pequeño desarrollo en PHP basado en un mensajería interna simple.

el sistema debería:

  1. Una bandeja de entrada con todos los mensajes de un usuario.
  2. Enviar mensajes.
  3. varios destinatarios en los mensajes !
  4. Respuesta a mensajes.
  5. Estado de mensajes (en principio Leido/No leido)

He hecho la siguiente estructura pero no la veo la mejor opcion

=> USUARIOS

  • idusuario
  • nombre
  • ...

=> MENSAJES

  • idmensaje
  • idusuario (autor)
  • titulo
  • cuerpo
  • fecha
  • idmensaje_padre

Por ej. creo un mensaje con ID=1, el idmensaje_padre=0 porque es elo mensaje padre. Y para cada una de sus respuestas el iidmensaje_padre valdrá 1.

=> MensajesUsuarios

  • idmensaje
  • idusuario (destinatario)
  • Leido/No Leido

Pero me lio con la respuestas a los mensajes ..

Se entiende no ? Cómo lo haríais ?

salu2.

APOCa

Para que quieres MensajesUsuarios si no aporta nada?

SicKneSs

Porque un mensaje peude tener varios destinatarios ! es un muchos a muchos entre Usuarios y Mensajes.

PinVa

Lo tienes bien planteado, el idmensaje_padre supongo que sera para identificar una conversación, por ejemplo idmensaje_padre=1 quiere decir que todos los id's de mensaje padre que tienen en una misma conversación sera 1, aunque el id de mensaje y usuarios cambie (solo dos usuarios), quizá quieres decir otra cosa con eso de mensaje_padre que supongo que sera el primero en ese caso deberas añadir un campo en MensajesUsuarios que fuera por ejemplo conversación. Ej:

MensajesUsuarios:

conversacion=1 idmensaje=5 idusuario=100 leido=false(este cambiaria a true, posteriormente)
conversacion=1 idmensaje=6 idusuario=50 leido=false
conversacion=2 idmensaje=7 idusuario=39 leido=false

Con esto tienes un control sobre los mensajes y las conversaciones de unos y otros.

Aunque lo mejor seria hacer una tabla temporal pero eso es mas complicado que sea una tabla exclusiva sin tanta conversación de unos y otros, y después registrarla en los mensajes de un usuario.

1 respuesta
SicKneSs

#4

y porqué metes idconversacion en MensajesUsuarios ? no bastaría ponerlo en Mensajes ?

por ej. El usuario 75 escribe un mensaje añl 100 y 50... y luego el 50 les responde (reponen a todos los destinatarios originales, sin incluirse el mismo).

Mensajes:

idmensaje=1 fecha idautor=75 idconversacion=1 (primer mensaje)
idmensaje=2 fecha idautor=50 idconversacion=1 (respuesta al 1)

MensajesUsuarios (por ej. 2 destinatarios)

idmensaje=1 idusuario=100 leido=0
idmensaje=1 idusuario=50 Leido=1
idmensaje=2 idusuario=75 leido=0
idmensaje=2 idusario=100 ledio=0

Tendría controlado todos los casos ahi no ?

Gracias, salu2

PinVa

Si, pero así también, podrías poner idusuariodestino y te ahorras esa tabla que lo único que tiene es a que usuario va y si esta leído.

Pero tienes mas control como lo estas haciendo, aunque el mensaje lo podrías dejar con idmensaje y el texto y las características de un mensaje, y los autores en mensajesUsuarios.

Por ejemplo leído o no leído es de mensaje, un idautor es un usuario, etc.. así.

10 días después
kraneok

#1 Si aún no lo has solucionado puedo intentar echarte una mano, utilizando DER

11 días después
SicKneSs

#1 ya más o emnos me las arreglé usando una estructura similar a la que expuse, prácticamente iigual.

me interesa, aun así, tu propuesta :)

Usuarios habituales

  • SicKneSs
  • kraneok
  • PinVa
  • APOCa