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

Duda diseño tabla usuarios online

Estas en el tema de Duda diseño tabla usuarios online en el foro de Mysql en Foros del Web. Buenas, Me gustaría que me dieráis vuestra opinión respecto al diseño de la base de datos Me he propuesto los siguiente requisitos: Disponer del número ...
  #1 (permalink)  
Antiguo 23/09/2010, 13:18
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Duda diseño tabla usuarios online

Buenas,

Me gustaría que me dieráis vuestra opinión respecto al diseño de la base de datos

Me he propuesto los siguiente requisitos:
  1. Disponer del número de usuarios logeados en mi web y el número de visitantes anónimos cuando visitan mi web.
  2. Saber la última vez que el usuario inició sesión en la pagina (login)
  3. El tiempo que lleva visitando la web (aprox.)
  4. Registrar todos los intentos de login exitosos o no.
    Con el fin de sacar reports del tipo: ¿Qué día o qué hora es la más visitada, cuanto tiempo permanece el usuario en la página, cuántos intentos de login fallidos se registran al día, etc...)

Para ello tengo diseñado la siguiente estructura de tablas para el usuario:



Me gustaría saber vuestra opinión y consejo a la hora de cumplir con los requisitos que me he propuesto.

Cómo veis en la imagen superior, tengo definido algunos campos que me ayudarían como por ejemplo en la tbl_user:
user_ip
user_lastvisit
user_online


Pero no se si debería crear una nueva tabla dedicada a cumplir los objetivos propuestos... tipo

user_ip (guarda la ip del visitante)
user_login (guarda el nombre del usuario en caso que haya hecho login, sino anónimo)
user_lastvisit (timestamp de la ultima vez que el usuario hizo login en la pagina)
user_lastactivity (timestamp de la última vez que recargó una página de la web)
user_online (si el tiempo de last_activity es menor de 1 hora, esto será 1, sino 0)

El problema que le veo a esta forma es que esta tabla puede crecer muchísimo, porque guardaría un registro nuevo:
  • Cada vez que el usuario hace login en la pagina
  • Cada vez que entra un usuario nuevo a la pagina y no se logea, compararía si la ip está en la tabla y si el estado de user_online es 0. Ya que si fuese 1 significaría que lleva menos de 1 hora navegando por la web.
  • Tendría que tener un cron que comprobase cada hora cuantos usuarios reales están online (mirando el tiempo user_lastactivity)
  • Y luego tendría que contar todos los usuarios que están online, diferenciando los que tienen nombre distinto de anónimo en el campo user_login, ya que los que aparece con nombre son usuarios registrados...x ej.

¿Se os ocurre una mejor forma de tener estos datos, qué opináis?

Muchas gracias de antemano!

Última edición por neodani; 29/09/2010 a las 16:31

Etiquetas: diseño, usuarios, tablas
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 00:59.