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 únicocommitment
– una descripción de texto del compromiso probable, p. “5 semanas de estudio, 5-7 horas/semana”description
– una descripción del cursospecialization_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 relacionadomaterial_no
– un número ordinal asignado a varios materiales del capítulo. Junto con elchapter_id
atributo, este atributo forma la clave alternativa (única) de la tabla.material_type_id
– es una referencia almaterial_type
mesamandatory
– 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 cursostatus_id
– una referencia alstatus
diccionario; esto registra cómo se ha desempeñado un estudiante en ese cursostatus_date
– la fecha en que se asignó un estadofinal_grade
– la calificación (como porcentaje) que el estudiante obtuvo en ese cursocertificate_ID
– un número de identificación del certificado que genera la plataforma cuando un estudiante aprueba el cursocertificate_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.