sql >> Base de Datos >  >> RDS >> Database

Un modelo de base de datos para una encuesta en línea. parte 4

En este artículo final de una serie de cuatro partes, completo el diseño de una base de datos de encuestas en línea para brindar flexibilidad para múltiples encuestas, reutilización de preguntas, respuestas de opción múltiple, ordenación de preguntas, saltos condicionales en la encuesta según las respuestas y control sobre el acceso de los usuarios a las encuestas a través de grupos de propietarios de encuestas.

Introducción

En la conclusión de la Parte 3 de esta serie de artículos, mencioné que agregaría funciones más avanzadas en este artículo. Esas características avanzadas son:

  • administración de las encuestas
  • informes y analítica

Como recordatorio, aquí estaba el modelo después de la Parte 3:



Administración

Mi objetivo en la administración de encuestas es permitir que una encuesta y su información correspondiente sea manejada por un grupo. Permitiré que un usuario administrativo defina grupos de usuarios que puedan mantener conjuntamente una encuesta en línea y sus preguntas. El propietario del grupo puede definir qué funciones pueden realizar los demás usuarios del grupo; por ejemplo, Jeff puede cambiar y eliminar encuestas y preguntas, pero Joe solo puede ver encuestas y preguntas, pero no cambiarlas ni eliminarlas.

Una cosa que puede notar es que los usuarios están separados de los encuestados en la encuesta. Por supuesto, un usuario también puede responder a una encuesta, pero me gustaría mantenerlos separados para poder requerir menos información de un encuestado que de un usuario (por ejemplo, eliminé el campo de contraseña de un encuestado para que es más fácil para las personas responder a la encuesta sin crear un inicio de sesión/cuenta).

Básicamente, para esta administración, crearé tablas para grupos y usuarios, y los roles y permisos o acciones correspondientes que se permiten. Esto permite flexibilidad en lugar de un vínculo codificado entre los roles y las acciones permitidas por cada rol. Por supuesto, la aplicación correspondiente debe construirse para comprender qué funcionalidad permite cada permiso y debe adaptarse cuando se agrega una nueva funcionalidad, pero no será necesario cambiar el diseño de la base de datos cuando se agregue la funcionalidad; se agregarán nuevas filas a la tabla que vincula roles a permisos.

También puede notar que he usado una longitud extraña para el email columna en el user y respondent tablas y un valor impar para la ip_address columna para el respondent; 254 es la longitud máxima que puede tener una dirección de correo electrónico según las definiciones de RFC, mientras que 45 es la longitud máxima que puede tener una dirección IPv6 (con tunelización IPv4).




Además, agregaré un enlace del group tabla a la survey tabla desde la que los enlaces van a todas las tablas asociadas (question_order , survey_response , conditional_order , question_type , response_choice ). De esa manera, cuando se elimine el grupo, puedo advertir al propietario del grupo que se eliminará toda la información correspondiente.

Prefiero este enfoque de vincular los datos de la tabla a algo que no sea el usuario específico en lugar de no vincular los datos a nada. Si no vinculamos los datos a nada (ni al grupo ni al usuario) como parecía haber hecho en partes anteriores de esta serie de artículos, entonces tendremos el desafío de "limpiar" los datos obsoletos cuando se elimine un usuario de la encuesta en línea. solicitud. Al vincularlo con el concepto más abstracto de "grupo", el propietario puede reasignar la propiedad del grupo y todos los datos correspondientes (encuestas, preguntas, respuestas, etc.) a otro miembro del grupo si es necesario.

Diseño formal

Luego ampliamos el ERD que se creó en las otras partes de esta serie de artículos.




He coloreado las tablas que se crearon en el artículo de la Parte 1 en amarillo, coloreé las tablas agregadas en la Parte 2 en naranja, coloreé las tablas agregadas en la Parte 3 en verde y las tablas recién agregadas en azul claro para que sea más fácil ver las adiciones. No se agregó color a las columnas y claves foráneas que se agregaron en este artículo final, por lo que tendría que comparar el modelo actual con el anterior de la Parte 3 para ver las diferencias.

Informes y análisis

Tenemos suficiente información que se puede extraer de las tablas para producir varios informes.

Por ejemplo, qué preguntas se respondieron de una manera particular ("en la encuesta 7, ¿cuántas veces los encuestados respondieron 'Sí' a la pregunta 10?"). Este nivel de información probablemente esté bien para los informes básicos sobre las respuestas de la encuesta.

También podemos extraer cuánto tiempo les tomó a los encuestados responder a una encuesta en particular ("en la encuesta 5, el tiempo promedio dedicado a la encuesta fue de 13 minutos"); nuevamente, esta podría ser información útil para que los propietarios de una encuesta puedan ajustar las preguntas de la encuesta para que no requieran más tiempo del que un encuestado típico está dispuesto a gastar o lo que el encuestador ha "prometido" a los encuestados (por ejemplo, "esta encuesta debe tomar entre 5 y 10 minutos”). Sé que cuando alguien me dice que debo terminar en menos de 10 minutos y sigo respondiendo preguntas 15 minutos más tarde, entonces me enojo y generalmente no estoy dispuesto a responder a otra encuesta de ellos.

Según las direcciones IP de los encuestados, podríamos hacer una búsqueda inversa para tener una idea aproximada de dónde son los encuestados o al menos de dónde parece ser su dirección IP cuando respondieron. Tenga en cuenta que esta información no es del todo confiable, ya que las personas pueden conectarse a través de VPN u otros mecanismos que disocian su dirección IP de su ubicación física.

Incluso podemos extraer cómo respondieron las preguntas los primeros encuestados en comparación con cómo respondieron los últimos encuestados. Esto podría presentar un ángulo interesante en su encuesta, por ejemplo, ¿las personas ansiosas que respondieron la encuesta primero respondieron de manera diferente a las personas que no estaban tan ansiosas y respondieron la encuesta más tarde?

En esta etapa, creo que estos informes serán suficientes y que no son necesarios análisis más avanzados, ya que la información más importante es, obviamente, el informe básico de qué respuestas se dieron a cada pregunta en una encuesta. Si necesita análisis más avanzados, considere cuáles son sus requisitos y cómo los datos existentes o las nuevas estructuras pueden respaldar esos análisis.

Conclusión

Y ahí lo tienes. No diré que este es el diseño para la base de datos de encuestas en línea ideal, pero satisfará mis necesidades en términos de flexibilidad:encuestas múltiples, reutilización de preguntas, respuestas de opción múltiple, ordenación de preguntas, saltos condicionales en la encuesta basados ​​en respuestas y control sobre el acceso de los usuarios a las encuestas a través de grupos de propietarios de encuestas.

Como he hecho en cada parte anterior de esta serie de artículos, señalaré que es posible que tengas otros requisitos. Identifica tus requerimientos e implementa o adapta lo que necesitas. Creo firmemente en reutilizar y no en reinventar la rueda.


Si desea que rediseñemos o amplíemos este modelo de acuerdo con las necesidades de su aplicación, háganoslo saber. Podemos ayudarte.


Un modelo de base de datos para una encuesta en línea:la serie completa

Parte 1 Parte 2 Parte 3 Parte 4