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

Un modelo de base de datos para una plataforma MOOC

Si ejecutara una plataforma de aprendizaje en línea MOOC como edX o Coursera, ¿cómo la mantendría organizada? En este artículo, veremos un modelo de base de datos que haría el trabajo.

Probablemente hayas oído hablar de MOOC (Curso masivo abierto en línea), una forma popular de aprender en línea. Y si no lo ha hecho, piense en un programa MOOC como asignaturas universitarias con todos los materiales, pruebas y comentarios disponibles en línea. Dos de los proveedores de MOOC en línea más populares son Coursera (fundado por la Universidad de Stanford) y edX (fundado por el Instituto de Tecnología de Massachusetts y la Universidad de Harvard). En colaboración con otras universidades y socios, brindan cientos de cursos a millones de estudiantes en todo el mundo.

En este artículo, analizaremos una versión simplificada de un modelo de base de datos que podríamos usar para ejecutar este tipo de servicio. Primero, hablemos sobre cómo funcionan realmente los MOOC desde una perspectiva no técnica.

¿Cómo funcionan las plataformas MOOC?

Personalmente, he usado Coursera y estoy muy satisfecho con él. Por lo tanto, mis comentarios en este artículo se refieren principalmente al modelo de Coursera, aunque creo que edX sigue un patrón similar.

¿Cuál es el modelo de negocio?

La idea es muy simple. Los socios, principalmente universidades, crean materiales para cursos en línea, que generalmente se basan en las ofertas de sus campus. Estos materiales pueden incluir conferencias en video, lecturas, cuestionarios, debates, proyectos, pruebas en línea y, a veces, tareas finales. Gran parte del material está basado en videos, por lo que los alumnos obtienen ese "toque humano". Disfruté de algunos cursos no solo por lo que se enseñó sino también por los profesores.

Los estudiantes necesitan ver o leer los materiales provistos, completar tareas, responder cuestionarios y tomar exámenes. Por lo general, también hay una o más asignaciones de proyectos, y las calificaciones de todas estas asignaciones conforman la calificación final. Si su calificación final está por encima de cierto puntaje (por ejemplo, 70 %), los estudiantes aprueban el curso y reciben un certificado. Algunos certificados son gratuitos; otros requieren un pago relativamente pequeño. Lo mismo ocurre con los cursos.

Los cursos relacionados se pueden organizar en entidades más grandes conocidas como especializaciones. Completar la especialización le da al estudiante otro certificado (así como un conjunto de habilidades más completo) y puede ser menos costoso que completar cada curso por separado.

Todos los cursos y especializaciones pueden tener diferentes sesiones. Algunos tendrán nuevas sesiones cada mes, mientras que otros tendrán una nueva sesión cada año. También hay cursos que están disponibles bajo demanda.

Las certificaciones en línea aún no tienen el mismo peso que un certificado universitario, pero aspiran a él. Algunos cursos ya están aprobados para créditos universitarios y los programas de estudio en línea también son una realidad ahora.

¿Cuántos socios, cursos y estudiantes hay?

La respuesta simple es "mucho". Los cursos se miden por miles, los socios por cientos y los estudiantes por millones, de casi cualquier país del mundo.

¿Qué cambios podemos esperar para los MOOC?

Lo mejor de los MOOC es que pueden adaptarse rápidamente a los cambios. No están limitados por las regulaciones estatales o universitarias y no tienen que esperar la aprobación. Eso es muy importante, especialmente para los cursos relacionados con TI. Algunos cursos y especializaciones no tendrán sesiones nuevas:aparecerán otros cursos nuevos y los cursos existentes pasarán por varias actualizaciones.

El modelo de base de datos MOOC




He dividido el modelo de datos MOOC en tres áreas temáticas:

  • Course details
  • Specialization details
  • Student participation

Y hay tres tablas independientes:

  • institution
  • lecturer
  • student

Las tablas independientes se utilizan como fuentes de datos para varias tablas en las áreas temáticas. Dado que las áreas temáticas contienen la mayor parte de la lógica, las explicaré primero y luego pasaré a las tablas independientes.

Cursos y Materiales

Aunque las personas suelen ser la parte más importante de cualquier transacción, aquí haré una excepción. Sin los materiales del curso, no habría cursos y, por lo tanto, no habría interés en nuestra plataforma MOOC. En "Detalles del curso", agrupé todas las tablas que describen cursos, instituciones relacionadas, socios y materiales.

La tabla más importante de esta sección es el course mesa. Los atributos son:

  • name – un nombre de curso único
  • commitment – una descripción de texto del compromiso probable, p. “5 semanas de estudio, 5-7 horas/semana”
  • description – una descripción del curso
  • specialization_id – una referencia a la especialización relacionada, si corresponde. Los cursos pueden ser parte de una sola especialización. Algunos cursos no están afiliados a ninguna especialización, por lo que este atributo no es obligatorio.
  • min_grade – la nota mínima necesaria para aprobar una asignatura. Por lo general, eso se medirá como un porcentaje. En la mayoría de los cursos de Coursera, esto es del 70 %.
  • course_price – la tarifa que pagará por un curso.
  • active – un interruptor de encendido/apagado que indica si un curso tendrá sesiones futuras. Los cursos activos tendrán nuevas sesiones, mientras que los cursos inactivos no.

Tenga en cuenta que el course la tabla se llama course:Course details . Esto se debe a que he usado el course tabla de nuevo en otro lugar para que el modelo sea más claro. Para ello, utilicé las opciones "Copiar" y "Pegar como acceso directo" de Vertabelo.

Cada curso se compone de unos pocos capítulos. En Coursera, los estudiantes suelen tener una semana para completar cada capítulo. Se almacena una lista de todas las subsecciones o capítulos del curso en el chapter mesa. El course_id el atributo es una referencia al course mesa; chapter_no es el número ordinal de un capítulo en ese curso. Estos dos atributos juntos forman la clave alternativa de la tabla. El último atributo, description , almacena una descripción detallada de cada capítulo.

Cada capítulo se compone de conferencias en video, lecturas, cuestionarios, pruebas y proyectos. No crearemos estructuras separadas en la base de datos para almacenar diferentes tipos de materiales. En su lugar, almacenaremos enlaces a estos materiales. Y ahí es donde el material entra la tabla. Los atributos de esta tabla son:

  • chapter_id – una referencia al capítulo relacionado
  • material_no – un número ordinal asignado a varios materiales del capítulo. Junto con el chapter_id atributo, este atributo forma la clave alternativa (única) de la tabla.
  • material_type_id – es una referencia al material_type mesa
  • mandatory – un valor booleano que indica si el material es obligatorio u opcional (es decir, para crédito adicional)
  • max_points – el número máximo de puntos que el estudiante puede alcanzar después de completar este material. Si no se otorgarán puntos, simplemente usaremos "0" como valor.

El material_type table es un diccionario de todos los tipos de materiales posibles. El único atributo al lado de la clave principal es type_name y, por supuesto, debe contener solo valores únicos. Algunos tipos de materiales esperados son “video conferencia” , “leyendo” , “cuestionario” , “prueba” , “examen final” y “asignación de proyecto” .

El on_course La tabla relaciona cada curso con los profesores que imparten ese curso. Contiene solo su clave principal y un par de claves foráneas (lecturer_id y course_id ). El par de claves foráneas forma la clave única para la tabla.

De la misma manera, course_created_by relaciona un curso con todas las instituciones que intervinieron en su creación.

Especializaciones

Los cursos independientes son geniales, pero para dominar una nueva habilidad necesitarás más de un curso. Las especializaciones son un paso en esa dirección. Son una serie de cursos, a menudo cuatro o cinco, y un proyecto final donde puedes aplicar las habilidades que has aprendido. Todas las tablas relacionadas con la especialización se encuentran en Specialization details área.

La specialization table es la tabla central de esta sección. Para cada especialización, almacenaremos un name único y description . El specialization_discount es la cantidad que un estudiante ahorrará si se inscribe en la especialización completa en lugar de en los cursos independientes individualmente. Como antes, el active El atributo es un simple interruptor de encendido/apagado que indica si la especialización tendrá sesiones futuras o no.

Tenga en cuenta que la specialization table también aparece dos veces en nuestro modelo. Dentro de esta área, se denomina specialization:Specialization details .

El on_specialization y specialization_created_by las tablas tienen el mismo propósito y siguen la misma lógica que on_course y course_created_by mesas. Por supuesto, esta vez manejarán especializaciones en lugar de cursos.

Estudiantes

Y finalmente llegamos a la sección de estudiantes. En la Student participation almacenaremos los registros de los estudiantes, las sesiones y el rendimiento de los estudiantes.

Cada curso y especialización puede tener más de una sesión, por lo que necesitaremos almacenar cuándo comienza y cuándo finaliza cada curso y especialización. Para los cursos, es muy simple. Cada nueva sesión es solo una nueva instancia del mismo curso. Una nueva sesión de especialización es una nueva instancia de toda la especialización y todos sus cursos.

Recuerda que los estudiantes pueden matricularse en un curso de una especialización o en todos ellos. Las course_sessions y specialization_session las tablas nos proporcionan esa información. Además de las fechas, solo contienen claves externas al course y specialization_table mesas. Una fecha de inicio de clave externa par forma la clave única en ambas tablas.

Las sesiones del curso también pueden ser parte de las sesiones de especialización, por lo que necesitaremos agregar una clave externa (no obligatoria).

El status El diccionario enumera todos los estados posibles relacionados con el desempeño de los estudiantes durante un curso. Algunos estados posibles son “abandonado” , “aprobado” y “fallido” .

Usaremos el enrolled_course tabla para almacenar cada inscripción en cualquier sesión del curso. Esta tabla contiene dos claves foráneas, student_id y course_session_id , y juntos forman la clave alternativa (única) para la tabla. Otros atributos en la tabla son:

  • enrollment_date – la fecha en que un estudiante se inscribió en ese curso
  • status_id – una referencia al status diccionario; esto registra cómo se ha desempeñado un estudiante en ese curso
  • status_date – la fecha en que se asignó un estado
  • final_grade – la calificación (como porcentaje) que el estudiante obtuvo en ese curso
  • certificate_ID – un número de identificación del certificado que genera la plataforma cuando un estudiante aprueba el curso
  • certificate_location – un enlace a la ubicación exacta donde se almacena el certificado

La enrolled_specialization la tabla sigue la misma lógica que el enrolled_course mesa. La diferencia es que relaciona a los estudiantes con especializaciones en lugar de cursos.

Usaremos los student_results tabla para almacenar las actuaciones de los estudiantes en materiales específicos del curso. Para cada material (material_id ) y la inscripción de cada estudiante (enrolled_course_id ) podríamos tener más de un intento. Por lo tanto, el attempt atributo es el número ordinal del intento de cada alumno. Estos tres atributos juntos forman la clave alternativa de la tabla.

En esta tabla, el attempt_link es la ubicación de cada instancia de pruebas o proyectos presentados por los estudiantes. Podemos suponer que para cada intento generaremos una prueba "nueva" con preguntas elegidas al azar. Si el material no requiere respuestas de los estudiantes, entonces el enlace no existirá y almacenaremos un valor NULL aquí.

Finalmente, los student_results la tabla almacena cuándo un estudiante started y ended un intento y la score logrado. También puede almacenar resultados de rendimiento en tareas no calificadas, así como registrar qué videos vieron y cuándo, qué materiales leyeron, etc.

Instituciones

La institution table es un catálogo simple que enumera todas las instituciones que crearon cursos o cuyos profesores participan en cursos.

Conferencistas

Podríamos ir con una tabla mucho más detallada aquí, pero almacenar el nombre y apellido de cada profesor, el título y el nombre de su universidad es suficiente para nuestros propósitos. No en vano, todo esto se guarda en el lecturer mesa.

Estudiantes

Terminaré la descripción general de la tabla con el student mesa. Una vez más, solo necesitamos atributos básicos aquí, y deberían explicarse por sí mismos.

¿Cómo podemos mejorar este modelo?

Este modelo soporta las funcionalidades básicas necesarias para crear una plataforma MOOC. Aún así, probablemente pueda pensar fácilmente en muchas adiciones útiles. Aquí hay algunos que se me ocurrieron:

  • Idioma del curso y subtítulos para conferencias en video
  • Calificación automática
  • Estudiantes revisando y calificando las tareas de los demás
  • Ayuda financiera
  • Una opción que permite a los estudiantes reanudar un curso después de abandonarlo

También vale la pena mencionar que, según Wikipedia “... Los servidores de la base de datos de Coursera (que se ejecutan en RDS) responden a 10 000 millones de consultas SQL, y Coursera atiende alrededor de 500 TB de tráfico al mes”. Esto fue en 2013. Un modelo de base de datos MOOC real podría parecerse al que se presenta en este artículo, ¡pero hay mucho más trabajo por hacer en el modelado y la infraestructura!

En este artículo he intentado mostrar la complejidad del modelo que se esconde detrás de una plataforma MOOC. Me enfoqué principalmente en Coursera y edX como mis ejemplos. Este modelo contiene 18 mesas, pero solo araña la superficie. Siéntase libre de comentar y compartir las mejoras que implementaría en el modelo. Si crees que me perdí algo importante, ¡avísame!

¿Te gusta aprender en línea? Pruebe LearnSQL.com:cursos de SQL interactivos, disponibles en su navegador.