Ver Mensaje Individual
  #6 (permalink)  
Antiguo 27/07/2010, 06:16
Avatar de perryjr
perryjr
 
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 13 años, 9 meses
Puntos: 27
Respuesta: Implementar un sistema de novedades

no, si en verdad una pequeña modificación de tu método es lo único que a mí se me ha ocurrido y será lo que use, pero quería ver si había alguien que tenía alguna otra idea para ello.

Al final cogeré una tabla de eventos, cuando alguien publique un post por ejemplo, se meterá una entrada, y una columna para los destinatarios(bloggeros, usuarios normales, administradores, todos). El motor de la base de datos no tiene joins pero un tipo de dato muy útil y rápido son las listas. Así que otra columna para mantener una lista de usuarios que lo han visto. La fecha y hora del evento y el número de usuarios que tengo en la base de datos.
(el contador lo llevo por otro sitio ya de antes) y otra columna más para usuarios que lo han visto.

Luego, cuando alguien entre busca los eventos a los que esté destinado y que todavía no esté en esa lista. al verlo se le añade a la lista y se incrementa el contador. La fecha y la hora del evento se usan para discriminar los que se tienen que mostrar(imagina un usuario recien registrado, no le tendrían que salir eventos anteriores al registro, claro xD). Además un cron job que se ejecuta cada día comprobará que eventos tienen usuarios que lo han visto igual a usuarios que habia en el momentod e lanzar el evento(te recuerdo que como se discrimina por fecha da lo mismo cuantos nuevos usuarios haya, no interfieren). Los que ya hayan sido descartados pues se eliminan.

Me parece la mejor opción porque asi se mete solo un registro para cada evento y para todos los usuarios(o todos los de un tipo) y además se pueden eliminar los antiguos.

Para los que usan bases de datos relacionales en vez de mantener una columna con la lista, es más rápido usar otra tabla adicional. A mi me viene mejor la lista.

Y muchas gracias Hidek1 por contestar-