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

Ayuda por FAVOR !!!! (diseño BD)

Estas en el tema de Ayuda por FAVOR !!!! (diseño BD) en el foro de Bases de Datos General en Foros del Web. Hola a todos... les cuento... estoy construyendo un modelo conceptual de datos en power designer de una WEB para un colegio.... la verdad tengo el ...
  #1 (permalink)  
Antiguo 21/02/2007, 21:13
 
Fecha de Ingreso: febrero-2007
Mensajes: 70
Antigüedad: 17 años, 9 meses
Puntos: 1
Ayuda por FAVOR !!!! (diseño BD)

Hola a todos... les cuento... estoy construyendo un modelo conceptual de datos en power designer de una WEB para un colegio.... la verdad tengo el modelo casi listo pero quedé pegado en una parte y no hay caso.. he llegado a enredarme solo con todo el modelo y creo que es en parte que ya no veo la solución y me da la impresion de que es mas sensilla de lo que a mi me parece y que si el problema es visto desde afuera me ayudaría con el caldo de cabeza que tengo hace 2 dias.

A parte de todo lo que tiene la web, quiero implementar un servicio de mensajes privados para los usuarios, esto significaría que los usuarios tendrían un buzón de mensajes donde quedarían almacenados los MENSAJES ENVIADOS y los MENSAJES RECIVIDOS.

primero les presento una version simplificada de la Entidad usuario:
USUARIO
id_usuario (pk)
nombres
apellido_pat
apellido_mat
tipo_us
password

no tiene mas atributos ya que realicé una especialización (es un) donde usuario es un: apoderado, alumno, profesor, administrador.. y cada una de ellas tienen sus atributos y se suponen eredan la clave primaria de la entidad usuario (padre).
bueno se supone que esa entidad usuario estaria relacionada con la entidad MENSAJES... a estas alturas lo unico que logro ver es que la entidad mensajes sería mas o menos así

mensajes
id_rte
id_destino
fecha
asunto
estado (leido-no leido)
id_text_mensaje (fk)

no logro ver las cardinalidades ya que siempre se me susitan problemas.. por ejemplo, dejo el texto del mensaje en una entidad aparte.. para no guardar el texto 2 veces ( en el buzon de entrada del receptor y en el buzon de salida del emisor), no se si será bueno hacer 2 tablas... una de mensajes recibidos y otra de enviados, lo que significaria que cada mensaje lo guardaria 2 veces...
un usuario envia n mensajes... (1...n),
pero un usuario recive tambien n mensajes y un mensaje puede ser recivido por n usuarios... el problema que se me da derrepente, entre otros, es que si el usuario que envia borra el msg de su buzon de salida este tambien se borra del buzon de entrada del usuario receptor
en el fondo lo que quiero hacer es un sistema de mensajes privados como el que tiene vbulletin (identico), no puedo usar vbulletin por que es un proyecto de tesis y no puedo utilizar script hechos... bueno espero me puedan ayudar , les estare eternamente agradecido.. terminando el modelo de datos podría empezar a programar... gracias de antemano y saludos
  #2 (permalink)  
Antiguo 22/02/2007, 07:27
Avatar de Pierre  
Fecha de Ingreso: diciembre-2006
Mensajes: 140
Antigüedad: 17 años, 11 meses
Puntos: 4
Re: Ayuda por FAVOR !!!! (diseño BD)

hola, no he trabajado mucho con power designer... pero lo que haceshasta ahora es analisis asi que podre ayudar en algo jeje :P

Estas seguro de que cuando el Usuario elimine el mensaje enviado se tiene que borrar tambien el mensaje recibido de otro Usuario?... porque lo que yo veo usualmente en otros servicios es que esos mensajes ya enviados no los puedes borrar... a no ser el Usuario haga esa peticion. Y si creo que lo mejor seria utilizar las dos tablas... la de enviados y recibidos.

Suerte y dinos que tal vas
  #3 (permalink)  
Antiguo 22/02/2007, 11:53
 
Fecha de Ingreso: febrero-2007
Mensajes: 70
Antigüedad: 17 años, 9 meses
Puntos: 1
Re: Ayuda por FAVOR !!!! (diseño BD)

Cita:
Iniciado por Pierre Ver Mensaje
hola, no he trabajado mucho con power designer... pero lo que haceshasta ahora es analisis asi que podre ayudar en algo jeje :P

Estas seguro de que cuando el Usuario elimine el mensaje enviado se tiene que borrar tambien el mensaje recibido de otro Usuario?...

Suerte y dinos que tal vas
no .. no se debería borrar de hecho ese es uno de los problemas que tengo.
debería ser asi: yo te envío un mensaje.. por lo tanto ese mensaje queda en tu bandeja de mensajes recibidos y a la vez se almacena en mi bandeja de mensajes enviados. como quiero limitar el maximo de mensajes guardados a 30(mensajes guardados = mensajes recibidos + mensajes enviados) a mi no me interesa guardar la copia del mensaje que te envie asi que decido borrarla de mi buzon de mensajes enviados, pero el mensaje debería seguir estando en tu buzon de mensajes recibidos ya que yo nisiquiera se si lo has leido.. eso es tal cual como funcionan los mensajes privados de VBULLETIN
Se me ocurrió una idea que voy a tratar de hacer ahora en la tarde.. si resulta la posteo, a mas de alguien le servirá... si alguien me quiere ayudar .. aun es bienvenido... saludos
  #4 (permalink)  
Antiguo 22/02/2007, 14:19
Avatar de Pierre  
Fecha de Ingreso: diciembre-2006
Mensajes: 140
Antigüedad: 17 años, 11 meses
Puntos: 4
Busqueda Re: Ayuda por FAVOR !!!! (diseño BD)

pues entonces la cosa va bien... el analisis me parece ser el correcto... creo que para limitar lo que es mensajes guardados tienes antes de permitir guardar hacer un count de las 2 tablas(enviados y recibidos) luego sumar esos 2 count y ver si excede o no los 30 mensajes.. si es asi pues lo restringes y no le permites hacer nada.

Por otro lado lo de los mensajes a borrar lo podrias hacer borrando siempre y cuando cumpla con dos requisitos, que encuentre el ID del Mensaje y que encuentre el ID de Usuario, solo asi cuando encuentres los dos sera borrado solo ese mensaje.. ejm:

Recibido Enviado
Id User: U01 U02
Id Msg: M01 M01

Asi cuando elimines el msg del enviado del usuario2 estaras borrando solo el mensaje de el.. no se si me dejo entender.

Pues un pequeño detalle para terminar.. tu tabla mensajes creo que deberias llamarla Bandeja, y esta dividirse en Entrada y Salida.

Saludos y suerte me interesaria y esperare por la solucion
  #5 (permalink)  
Antiguo 22/02/2007, 19:16
 
Fecha de Ingreso: febrero-2007
Mensajes: 70
Antigüedad: 17 años, 9 meses
Puntos: 1
Re: Ayuda por FAVOR !!!! (diseño BD)

llegué a una solución que parece funcionar pero tiene otros peros...

usuario-----1(envia)N-----mensajes-----1(tiene)N-----destinatarios

esas serían las relaciones... cuando envío un mensaje realizo un insert a la tabla mensaje que sería esta:

id_mensaje
id_rte (remitente)
asunto
fecha
flag_destinos
flag_rte
texto_del_mensaje

y tambien un insert ala tabla destinatario que sería esta:

id_mensaje (fk) (PK)
id_destinatario (PK)
estado

el atributo flag_destinos sería el numero de personas que reciben el mensaje.. si se lo envío a 20 personas, flag_destinos = 20.... para que? cada vez que un destinatario borre el mensaje de su bandeja de entrada se elimina ese registro de la tabla DESTINATARIOS y además se le resta 1 a flag_destinos.
si yo borro el mensaje de mi bandeja de salida dejo flag_rte = 0, de esta forma cuando yo vea mi bandeja de entrada no me mostraria ese mensaje ya que la sentencia diria: when id_rte= mi id and flag=1 (para que te hagas una idea..
entonces....
el mensaje se borra definitivamente cuando ambos flag estan en 0....
no se si es lo mas optimo pero creo que funciona.. corregime por favor si no es asi...

pero sorpresa !!!!!! surgio otro problema... cuando le envío el mensaje a una persona se realiza un insert en la tabla destinatarios.. verdad?? si le envío el mensaje a 20 personas, son 20 insert, a 30 son 30 insert... la cantidad de insert es variable y ahi quede pegado ahora...
por que tendría que contar el numero de destinatarios antes de enviar los mensajes y eso no se como hacerlo... y eso es necesario tanto para saber cuantos insert voy a realizar como para saber que valor va a tener el atributo flag_destinos... SI SABES ALGO AVISAME...

PERO ME DESANIMÉ, la otra solución es penca pero facilita las cosas: dejar que un usuario envíe solo un mensaje a la vez.. ahí todo es mas facil... si pudiera conseguir el modelo de datos de los mensajes privados de vbulletin, pero no he podido encontrar nada en la web... saludos

Última edición por mreyesb; 22/02/2007 a las 19:35
  #6 (permalink)  
Antiguo 23/02/2007, 07:53
Avatar de Pierre  
Fecha de Ingreso: diciembre-2006
Mensajes: 140
Antigüedad: 17 años, 11 meses
Puntos: 4
Re: Ayuda por FAVOR !!!! (diseño BD)

si vas a empezar a hacerlo de eso modo, pues las cosas se ven mas diferentes. Lo del flag no es mala idea, creo que si funcionaria... en cuanto a los msg's enviar uno solo no me parece lo ideal, seria la solucion mas simple pero no la mejor.. y creo que en eso estamos de acuerdo.

Pues supongo que la manera de decirle cuantos msg's son estara en la manera de hacerle un count a un arraylist... me explico... para mandarle los correos pues tendras un arraylist de n elementos: "juanito;pepito;sultano;mengano...n", lo que tendrias que saber (cosa que yo no se porque no lo he utilizado mucho como ya mencione :D jeje), es el count del arraylist y el split, para saber el caracter de seraparcion de los elementos. Creo que con eso podrias solucionar lo de cuantos destinatarios seran.

Y si pues de esa forma harias 25mil inserts en la tabla jeje... no crees que en la tabla destinatario tambien tendria que ir el id de remitente? supongo yo que si para saber quien le envio no.. bueno seguimos en contacto y espero haber ayudado.
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 23:01.