2011-07-22 11 views
7

acabo de leer los siguientes mensajes sobre el mismo tema:Base de datos para realizar un seguimiento de las notificaciones de usuario o la actividad (como Facebook)

Facebook like notifications tracking (DB Design) y Database design to store notifications to users

Algunas soluciones se ofrecen, pero no exactamente lo que necesitan y cómo debería ser para un sistema de notificación similar a Facebook.

En una notificación, a menudo tenemos algunos enlaces que apuntan al usuario que realizó alguna acción, un enlace a una publicación o video que comentó, un enlace a cualquier cosa, o bien tenemos varios enlaces en una sola notificación.

notification 
----------------- 
id (pk) 
userid 
notification_type 
notification_text 
timestamp 
last_read 

Con esta estructura de tabla podemos mostrar todas las notificaciones para un solo usuario y es una solución bastante sólida. Pero en este caso, solo podemos mostrar una notificación de texto sin formato. No podemos simplemente vincular a un usuario o una publicación en el muro.

estoy tratando de llegar a una solución a este problema. Una de ellas es almacenar los códigos BB en la propiedad notification_text, pero luego debe escribir el analizador de código BB para aplicaciones web y móviles. Otra sería la creación de otra tabla que se deriva de esta tabla de notificación con ID para las entidades que necesitamos. Un ejemplo:

PostCommentNotification : Notification 
---------------------------------------- 
id 
userId (user who commented on a wall post) 
postId (post where comment was made) 

Ahora podemos escribir una plantilla para la visualización de la notificación (que no necesitamos la propiedad de texto en la tabla notificaciones más ahora) y luego manejar mostrarla. Tampoco estoy satisfecho con esta solución, ya que el número de tablas que se derivan de la tabla de notificaciones podría ser grande (para cada tipo de notificación).

estoy en busca de ideas! :)

Respuesta

8

Desafortunadamente no un montón de respuestas aquí. Tuve el mismo problema y no encontré ninguna buena solución. La herencia en las bases de datos siempre es complicada y se vuelve compleja demasiado rápido. Así que terminé con una solución simple: almacenar una matriz de valores clave de los recursos envueltos en JSON en una columna de "datos".

Algo como esto:

notification 
----------------- 
id (pk) 
userid 
notification_type 
notification_data 
timestamp 
last_read 

Por ejemplo, para una notificación de comentarios, podrás almacenar

[{"author_id": "1234", "comment_id":"1234"}] 

A continuación, se utiliza el NOTIFICATION_TYPE para formatear correctamente sus datos en el lado del cliente.

no puede ver los inconvenientes ya que sólo necesitamos recursos Identificación de cliente para crear direcciones URL o las intenciones, que tiene campos atómicos para los índices no sirve para nada.

Espero que esto ayude.

+0

¿trató de leer los datos JSON con javascript? No lo hice, pero puedo decirte que cuando obtienes los datos json con php, no puede leer los datos json como objeto json. php lo lee como una cadena y no puede decodificar cadena como datos json. –

+1

funcionan perfectamente en php usando json_decode –

+0

A continuación, se utiliza el NOTIFICATION_TYPE para formatear correctamente sus datos en el lado del cliente. No se pueden ver inconvenientes, ya que solo necesitamos la identificación de recursos en el cliente para crear urls o intents, tener campos atómicos para los índices es inútil. Espero que esto ayude. –

Cuestiones relacionadas