Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Diseño para un sistema de mensajes privados

Estas en el tema de Diseño para un sistema de mensajes privados en el foro de Bases de Datos General en Foros del Web. Hola. Necesito diseñar un sistema para almacenar los mensajes privados que se mandan usuarios en una web. Esta parte es fácil y no tiene dificultad, ...
  #1 (permalink)  
Antiguo 08/04/2014, 12:32
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 12 años, 4 meses
Puntos: 1
Diseño para un sistema de mensajes privados

Hola. Necesito diseñar un sistema para almacenar los mensajes privados que se mandan usuarios en una web. Esta parte es fácil y no tiene dificultad, pero además el sistema debe poder almacenar "conversaciones" entre varios usuarios (al estilo de las conversaciones de Facebook). Además, debe haber algún sistema que marque los mensajes como leídos. Si un mensaje pertenece a una conversación entre 3 o más usuarios, el mensaje debe aparecer como no leído para cada miembro de la conversación.

Al principio pensé en diseñar las dos partes por separado, pero me di cuenta de que un mensaje privado entre dos usuarios no es más que una conversación entre dos usuarios. Por tanto, pensé en diseñarlo todo junto.

Se me ha ocurrido lo siguiente, pero estoy seguro de que no es óptimo porque hay una tabla con un único atributo.

Si alguien se anima a darme una solución alternativa y mejor, encantado.

- Una tabla para almacenar las conversaciones, pero solo se me ocurre que tenga un atributo

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `tbl_conversaciones` (
  2.   `idconversacion` INT(11) NOT NULL AUTO_INCREMENT,
  3.   PRIMARY KEY (`idconversacion`)
  4. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci AUTO_INCREMENT=1 ;

- Una tabla para almacenar los mensajes, que tenga un atributo que indique a que conversación pertenece.

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `tbl_mensajes` (
  2.   `idmensaje` INT(11) NOT NULL AUTO_INCREMENT,
  3.   `autor` INT(11) NOT NULL,
  4.   `fecha_envio` datetime NOT NULL,
  5.   `contenido` VARCHAR(400) COLLATE utf8_spanish_ci NOT NULL,
  6.   `idconversacion` INT(11) NOT NULL
  7.   PRIMARY KEY (`idmensaje`)
  8. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci AUTO_INCREMENT=1 ;

- Una tabla para almacenar los miembros de cada conversación
Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `tbl_conversaciones_miembros` (
  2.   `idconversacion` INT(11) NOT NULL,
  3.   `miembro` INT(11) NOT NULL,
  4.   PRIMARY KEY (`idconversacion`,`miembro`),
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;

- Y finalmente una tabla para almacenar los mensajes no leidos de cada usuario:
Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `tbl_mensajes_no_leidos` (
  2.   `idmensaje` INT(11) NOT NULL,
  3.   `idusuario` INT(11) NOT NULL,
  4.   PRIMARY KEY (`idmensaje`,`idusuario`)
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;

Gracias!!
  #2 (permalink)  
Antiguo 12/04/2014, 08:09
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Diseño para un sistema de mensajes privados

Nadie sabe decirme si está bien o no?

He hecho el modelo relacional y entidad-relación. A ver si así ayuda.

Gracias.

http://www.subeimagenes.com/img/diag...-r-921759.html


http://www.subeimagenes.com/img/diag...al-921760.html

Etiquetas: diseño, mensajes, privados, siguiente, sistema, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:56.