web applications - tabulacion - La mejor manera de almacenar datos de encuestas?
tabulacion de encuestas en excel ejemplos (7)
Estoy desarrollando una aplicación de encuesta muy pequeña, probablemente de 3 a 4 páginas de aplicación web. entonces mi pregunta es ¿cuál es la mejor manera de guardar datos de encuestas?
por cierto, hasta ahora he encontrado las siguientes maneras.
guardar en la base de datos y marcar cada encuesta como incompleta. cuando el usuario envía el último formulario de la encuesta, verifique la integridad de la encuesta y márquelo como completo si está completo.
guardar en sesiones y guardar en la base de datos cuando el usuario envía el último formulario de la encuesta.
¿Qué piensas de esos métodos?
Ambos parecen estar bien, y eso dependerá de lo que esperas que hagan tus usuarios o de lo que esperas que se comporten tus usuarios.
El primer método permitirá a los usuarios regresar (incluso después de cerrar el navegador) para finalizar la encuesta. Ese es un buen punto, si su encuesta fue grande y los usuarios no pueden terminarla antes de perderse en otra cosa, pero eso también es un punto negativo si quiere obligar a los usuarios a terminar, quiero decir, si no quiere incompleto encuestas.
El segundo método obliga al usuario a terminar la encuesta al mismo tiempo que comienza. Ese es un buen punto si su encuesta es rápida y desea datos completos sobre ellos, pero es malo si su encuesta es larga y normalmente el usuario se distrae antes de terminarla.
Yo diría que el número de preguntas de cada una de las páginas será un factor determinante para elegir entre los dos métodos, tal vez también lo sea para usted.
Creo que la segunda opción sería tu mejor opción. Si su sitio recibe mucho tráfico, la opción 1 pondrá más énfasis en la base de datos y también saturará la base de datos con encuestas incompletas. Las sesiones suenan como una mejor opción porque, en realidad, no quieres los datos a menos que estén completos, ¿verdad?
He tenido algunos dolores de cabeza con este tipo de cosas y desaconsejaría usar Sessions si fuera posible. Cuando su sitio recibe tráfico moderadamente pesado, o si ASP.NET simplemente lo siente así, puede encontrar que pierde todas sus sesiones cuando .NET intenta liberar algo de memoria.
Me gustaría ponerlo en la base de datos tan pronto como sea posible. Use Guid.NewGuid () para generar una clave indescifrable única que puede pasar de una página a la siguiente en la cadena de consulta: esa será la clave para recuperar el registro de la base de datos.
Otras dos opciones que no ha considerado:
Publica la respuesta de una página a la siguiente. (Esto podría ser más complicado de lo que vale).
Usa el asp: control del asistente. De esta forma, sus 3-4 páginas serán en realidad 3-4 pasos en una sola página. Los datos de cada etapa se almacenan automáticamente en ViewState por usted, de modo que los campos de entrada del primer paso seguirán estando disponibles para usted cuando esté en el último paso.
(Aun así, elegiré tu opción número 1).
Si anticipa que su aplicación podría crecer en el futuro (proporcionando encuestas más largas, incluso en una forma en la que los usuarios pueden obtener los mismos resultados "intermedios" y un currículum en un momento posterior), definitivamente iría con la opción de base de datos.
Si desea que ellos puedan guardar sus resultados a mitad de la encuesta y regresar en otro momento para completarlos, entonces tendrá que almacenar la hora de inicio de la encuesta y la hora de finalización para saber que la completaron. También deberá almacenar todos sus valores hasta el momento.
Como es pequeño, lo mantendría en sesión y luego lo guardaré en la base de datos cuando se complete.
Así es como lo hago:
- Genero las ''preguntas'' de la base de datos, por lo tanto, solo hay una página utilizada para mostrar las diferentes preguntas.
- Guardo las respuestas a todas las preguntas tan pronto como el usuario haga clic en ''siguiente''. Esto tiene la gran ventaja de que el usuario puede regresar y comenzar desde donde ella se fue.
- Rastreo el progreso con un puntero que se actualiza junto con el guardado del resultado.
- No uso la sesión porque no quiero arriesgarme a perder datos y no quiero forzar la memoria.
- Cuando el puntero == número de preguntas, marque como completado.
No use sesiones para esto. Microsoft tiene un fantástico ejemplo de cómo no hacer encuestas en su aplicación que usan en TechEd. Cada vez que tiene que pensar en una respuesta, la sesión expira. Use ajax, guarde cada respuesta, incluso una parcial. Si se encuentra con problemas de rendimiento de DB, reúna todas las respuestas de todas las encuestas durante un tiempo determinado y guárdelas juntas. Con algunos javascript puede hacer una devolución de llamada al servidor solo cuando algo cambió en los últimos segundos, o antes de que se cierre la ventana.
A menos que, por supuesto, tenga un límite de tiempo para responder las preguntas.