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

Un modelo de base de datos para una encuesta en línea. Parte 2

En parte 1 de esta serie de artículos, discutimos un diseño básico para una encuesta en línea. En la conclusión de ese artículo, mencioné que la parte 2 cubriría funciones más avanzadas para nuestra encuesta, como:

  • Diferentes tipos de preguntas como preguntas de opción múltiple
  • Orden condicional de las preguntas en una encuesta o, en otras palabras, la posibilidad de una ruta condicional a través de la encuesta
  • Administración de las encuestas
  • Informes y analítica

Comencemos ampliando la funcionalidad para admitir diferentes tipos de preguntas.

Tipos de preguntas

En parte 1 de esta serie de artículos, solo estábamos usando preguntas abiertas que consistían en una pregunta y una respuesta. En este artículo, definiremos diferentes tipos de preguntas como preguntas polares (sí-no) y preguntas de opción múltiple . Cada pregunta irá asociada a un tipo. Para preguntas polares, solo permitiremos sí/no como respuesta, pero, en el futuro, podríamos permitir variaciones como verdadero/falso. Las preguntas que no son abiertas tendrán posibles respuestas entre las que el encuestado puede elegir.

En el futuro, agregaremos preguntas que requieran una respuesta calificada. Por ejemplo, “¿Cuánto te gusta el diseño de bases de datos; califique entre 1 y 100 (donde 1 indica que le gusta muy poco y 100 indica que le gusta muchísimo)?”

Entidades y Relaciones

Para los diferentes tipos de preguntas de la encuesta, ampliaré el área de "preguntas" con tipos y opciones de respuesta.

Idealmente, me gustaría crear una clave externa entre las respuestas reales y las posibles respuestas para preguntas de opción múltiple (response_choice) para garantizar la integridad de los datos. Esto funcionaría si todas las preguntas tuvieran opciones de respuesta y no se permitieran preguntas abiertas. Como necesito admitir preguntas abiertas, tendré que garantizar la integridad de las respuestas en el código de la aplicación.

Diseño formal

Necesitamos extender el ERD que se creó en la parte 1 de esta serie de artículos. Como antes, usaré Vertabelo, un modelador de bases de datos en línea. Si aún no tiene una cuenta de Vertabelo, puede registrarse para una prueba gratuita aquí.

Haré un comentario; encontrará que generalmente uso números redondos como 100 o 1000 para definir la longitud de los campos varchar; No estoy sugiriendo que estos sean necesariamente del tamaño apropiado, sino que lo uso como una forma abreviada en lugar de dejar la longitud sin definir. Cuando utilice este modelo, ajuste las longitudes para sus requisitos particulares. Por ejemplo, ¿permitirá que un encuestado escriba una respuesta muy, muy larga a una pregunta abierta, o la limitará a, digamos, 1000 caracteres? Esto puede depender de la aplicación que esté creando para usar la base de datos, ya que puede tener limitaciones en la longitud de los campos.

Agrego una tabla de tipo de pregunta vinculada a la pregunta:estos pueden tener un nombre "abierto", "sí-no", "opción múltiple" y, en el futuro, "calificación". Para las preguntas de opción múltiple, cada pregunta tendría opciones de respuesta para elegir.

Incluso podría usar esto para implementar preguntas polares, pero creo que es una exageración. Otra solución sería vincular opción_respuesta a tipo_pregunta, de modo que la fila tipo_pregunta "sí-no" se vincule a las filas opción_respuesta "Sí" y "No", pero nuevamente, no creo que sea necesario, pero podría hacerlo si desea posibilidades multilingües. Luego, incluiría un campo para el idioma del encuestado dentro de la tabla response_choice, o administraría la internacionalización en la interfaz de usuario.




He coloreado las tablas creadas en parte 1 en  amarillo y las tablas recién agregadas en  naranja para que sea más fácil ver las adiciones.

Conclusión

Ahora hemos comenzado a implementar las mejoras que se discutieron en la parte 1 de esta serie de artículos.

En el próximo artículo, agregaré más soporte para las siguientes funciones:

  • Orden condicional de las preguntas en una encuesta
  • Administración de las encuestas
  • Informes y análisis