Database
 sql >> Database >  >> RDS >> Database

Un modello di database per una piattaforma MOOC

Se gestissi una piattaforma di apprendimento online MOOC come edX o Coursera, come la terresti organizzata? In questo articolo, esamineremo un modello di database che farebbe il lavoro.

Probabilmente hai sentito parlare di MOOC (Massive Open Online Course), un modo di tendenza per imparare online. E se non l'hai fatto, pensa a un programma MOOC come a materie universitarie con tutti i materiali, i test e i feedback disponibili online. Due dei fornitori di MOOC online più popolari sono Coursera (fondata dalla Stanford University) ed edX (fondata dal Massachusetts Institute of Technology e dall'Università di Harvard). In collaborazione con altre università e partner, offrono centinaia di corsi a milioni di studenti in tutto il mondo.

In questo articolo, discuteremo una versione semplificata di un modello di database che potremmo utilizzare per eseguire questo tipo di servizio. Innanzitutto, parliamo di come funzionano effettivamente i MOOC da una prospettiva non tecnica.

Come funzionano le piattaforme MOOC?

Personalmente, ho usato Coursera e ne sono rimasto molto soddisfatto. Pertanto, i miei commenti in questo articolo riguardano principalmente il modello di Coursera, anche se credo che edX segua uno schema simile.

Qual ​​è il modello di business?

L'idea è molto semplice. I partner, principalmente le università, creano materiali per i corsi online, che di solito si basano sulle offerte del campus. Questi materiali possono includere lezioni video, letture, quiz, discussioni, progetti, test online e talvolta compiti finali. Gran parte del materiale è basato su video, quindi gli studenti ottengono quel "tocco umano". Alcuni corsi mi sono piaciuti non solo per ciò che è stato insegnato, ma anche per i docenti.

Gli studenti devono guardare o leggere i materiali forniti, completare i compiti, rispondere a quiz e sostenere i test. Di solito ci sono anche uno o più incarichi di progetto e i voti di tutti questi incarichi costituiscono il voto finale. Se il loro voto finale è superiore a un determinato punteggio (es. 70%) gli studenti superano il corso e ricevono un certificato. Alcuni certificati sono gratuiti; altri richiedono un pagamento relativamente piccolo. Lo stesso vale per i corsi.

I corsi correlati possono essere organizzati in entità più grandi note come specializzazioni. Il completamento della specializzazione dà allo studente un altro certificato (oltre a un set di abilità più completo) e può essere meno costoso rispetto al completamento di ciascun corso separatamente.

Tutti i corsi e le specializzazioni possono avere sessioni diverse. Alcuni avranno nuove sessioni ogni mese, mentre altri avranno una nuova sessione ogni anno. Ci sono anche corsi disponibili su richiesta.

Le certificazioni online non hanno ancora lo stesso peso di un certificato universitario, ma vi aspirano. Alcuni corsi sono già approvati per il credito universitario e ora anche i programmi di studio online sono una realtà.

Quanti partner, corsi e studenti ci sono?

La risposta semplice è "molto". I corsi sono misurati in migliaia, i partner in centinaia e gli studenti in milioni, da quasi tutti i paesi del mondo.

Quali cambiamenti possiamo aspettarci dai MOOC?

Il bello dei MOOC è che possono adattarsi rapidamente ai cambiamenti. Non sono limitati da regolamenti statali o universitari e non devono attendere l'approvazione. Questo è molto importante, soprattutto per i corsi relativi all'IT. Alcuni corsi e specializzazioni non avranno nuove sessioni:appariranno altri nuovi corsi e i corsi esistenti subiranno vari aggiornamenti.

Il modello di database MOOC




Ho suddiviso il modello di dati MOOC in tre aree tematiche:

  • Course details
  • Specialization details
  • Student participation

E ci sono tre tavoli standalone:

  • institution
  • lecturer
  • student

Le tabelle autonome vengono utilizzate come origini dati per varie tabelle nelle aree tematiche. Poiché le aree tematiche contengono la maggior parte della logica, prima le spiegherò e poi passerò alle tabelle autonome.

Corsi e materiali

Sebbene le persone siano di solito la parte più importante di qualsiasi transazione, farò un'eccezione qui. Senza i materiali del corso, non ci sarebbero corsi e quindi nessun interesse per la nostra piattaforma MOOC. In "Dettagli del corso", ho raggruppato tutte le tabelle che descrivono i corsi, le relative istituzioni, i partner e i materiali.

La tabella più importante in questa sezione è il course tavolo. Gli attributi sono:

  • name – un nome univoco per il corso
  • commitment – una descrizione testuale del probabile impegno, ad es. “5 settimane di studio, 5-7 ore/settimana”
  • description – una descrizione del corso
  • specialization_id – un riferimento alla relativa specializzazione, se applicabile. I corsi possono far parte di una sola specializzazione. Alcuni corsi non sono affiliati ad alcuna specializzazione, quindi questo attributo non è obbligatorio.
  • min_grade – il voto minimo necessario per superare un corso. Di solito verrà misurato in percentuale. Nella maggior parte dei corsi Coursera, questo è del 70%.
  • course_price – la quota che pagherai per un corso.
  • active – un interruttore on/off che indica se un corso avrà sessioni future. I corsi attivi avranno nuove sessioni, mentre i corsi inattivi no.

Nota che il course la tabella si chiama course:Course details . Questo perché ho utilizzato il course tabella di nuovo altrove per rendere il modello più chiaro. Per fare ciò, ho utilizzato le opzioni "Copia" e "Incolla come scorciatoia" di Vertabelo.

Ogni corso è composto da pochi capitoli. In Coursera, gli studenti di solito hanno una settimana per completare ogni capitolo. Un elenco di tutte le sottosezioni o capitoli del corso è memorizzato nel chapter tavolo. Il course_id l'attributo è un riferimento al course tavolo; chapter_no è il numero ordinale di un capitolo in quel corso. Questi due attributi insieme formano la chiave alternativa della tabella. L'ultimo attributo, description , memorizza una descrizione dettagliata per ogni capitolo.

Ogni capitolo è composto da video lezioni, letture, quiz, test e progetti. Non creeremo strutture separate nel database per memorizzare diversi tipi di materiale. Invece, memorizzeremo i collegamenti a questi materiali. Ed è qui che il material entra in gioco la tabella. Gli attributi in questa tabella sono:

  • chapter_id – un riferimento al relativo capitolo
  • material_no – un numero ordinale assegnato a vari materiali capitolari. Insieme al chapter_id attributo, questo attributo costituisce la chiave alternativa (univoca) della tabella.
  • material_type_id – è un riferimento al material_type tabella
  • mandatory – un valore booleano che denota se il materiale è richiesto o facoltativo (es. per credito extra)
  • max_points – il numero massimo di punti che lo studente può ottenere dopo aver completato questo materiale. Se non verranno assegnati punti, utilizzeremo semplicemente "0" come valore.

Il material_type table è un dizionario di tutti i possibili tipi di materiale. L'unico attributo accanto alla chiave primaria è type_name e ovviamente deve contenere solo valori univoci. Alcuni tipi di materiale previsti sono "lezione video" , "lettura" , "quiz" , "test" , "esame finale" e "assegnazione del progetto" .

Il on_course la tabella mette in relazione ogni corso con il/i docente/i che insegna quel corso. Contiene solo la sua chiave primaria e una coppia di chiavi esterne (lecturer_id e course_id ). La coppia di chiavi esterne costituisce la chiave univoca per la tabella.

Allo stesso modo, course_created_by mette in relazione un corso con tutte le istituzioni coinvolte nella sua realizzazione.

Specializzazioni

I corsi standalone sono fantastici, ma per padroneggiare una nuova abilità avrai bisogno di più di un corso. Le specializzazioni sono un passo in quella direzione. Sono una serie di corsi, spesso quattro o cinque, e un progetto finale in cui puoi applicare le abilità che hai appreso. Tutte le tabelle relative alla specializzazione si trovano nei Specialization details la zona.

La specialization table è la tabella centrale di questa sezione. Per ogni specializzazione, memorizzeremo un name univoco e description . Il specialization_discount è l'importo che uno studente risparmierà se si iscrive all'intera specializzazione piuttosto che ai corsi singoli individualmente. Come prima, il active è un semplice interruttore on/off che indica se la specializzazione avrà sessioni future o meno.

Si noti che la specialization anche la tabella appare due volte nel nostro modello. All'interno di quest'area, è denominata specialization:Specialization details .

Il on_specialization e specialization_created_by le tabelle hanno lo stesso scopo e seguono la stessa logica di on_course e course_created_by tavoli. Naturalmente, questa volta si occuperanno delle specializzazioni anziché dei corsi.

Studenti

E finalmente arriviamo alla sezione studenti. Nella Student participation area, memorizzeremo i record di studenti, sessioni e prestazioni degli studenti.

Ogni corso e specializzazione può avere più di una sessione, quindi dovremo memorizzare quando ogni corso e specializzazione inizia e quando finisce. Per i corsi è molto semplice. Ogni nuova sessione è solo una nuova istanza dello stesso corso. Una nuova sessione di specializzazione è una nuova istanza dell'intera specializzazione e di tutti i suoi corsi.

Ricorda che gli studenti possono iscriversi a un corso di una specializzazione oa tutti. Le course_sessions e specialization_session le tabelle ci forniscono tali informazioni. Oltre alle date, contengono solo chiavi esterne al course e specialization_table tavoli. Una data di inizio della chiave esterna coppia forma la chiave univoca in entrambe le tabelle.

Le sessioni del corso possono anche far parte delle sessioni di specializzazione, quindi dovremo aggiungere una chiave esterna (non obbligatoria).

Lo status il dizionario elenca tutti i possibili stati relativi alle prestazioni degli studenti durante un corso. Alcuni possibili stati sono "abbandonato" , "superato" e "non riuscito" .

Utilizzeremo il enrolled_course tabella per memorizzare ogni iscrizione a qualsiasi sessione del corso. Questa tabella contiene due chiavi esterne, student_id e course_session_id e insieme formano la chiave alternativa (unica) per la tabella. Altri attributi nella tabella sono:

  • enrollment_date – la data in cui uno studente si è iscritto a quel corso
  • status_id – un riferimento allo status dizionario; questo registra il rendimento di uno studente in quel corso
  • status_date – la data in cui è stato assegnato uno stato
  • final_grade – il voto (in percentuale) che lo studente ha conseguito per quel corso
  • certificate_ID – un numero identificativo del certificato che la piattaforma genera quando uno studente supera il corso
  • certificate_location – un collegamento alla posizione esatta in cui è archiviato il certificato

La enrolled_specialization la tabella segue la stessa logica del enrolled_course tavolo. La differenza è che mette in relazione gli studenti con le specializzazioni piuttosto che con i corsi.

Utilizzeremo i student_results tabella per memorizzare le prestazioni degli studenti su specifici materiali del corso. Per ogni materiale (material_id ) e l'iscrizione di ogni studente (enrolled_course_id ) potremmo avere più di un tentativo. Pertanto, il attempt attributo è il numero ordinale del tentativo di ogni studente. Questi tre attributi insieme formano la chiave alternativa della tabella.

In questa tabella, il attempt_link è l'ubicazione di ogni istanza di test o progetti presentati dagli studenti. Possiamo presumere che per ogni tentativo genereremo un "nuovo" test con domande scelte casualmente. Se il materiale non richiede le risposte degli studenti, il collegamento non esisterà e memorizzeremo un valore NULL qui.

Infine, i student_results la tabella memorizza quando uno studente started e ended un tentativo e il score raggiunto. Può anche memorizzare i risultati delle prestazioni su compiti non valutati, nonché registrare quali video hanno guardato e quando, quali materiali hanno letto, ecc.

Istituzioni

L'institution table è un semplice catalogo che elenca tutte le istituzioni che hanno creato corsi o i cui docenti sono coinvolti nei corsi.

Docenti

Potremmo andare con una tabella molto più dettagliata qui, ma memorizzare il nome e cognome, il titolo e il nome dell'università di ciascun docente è sufficiente per i nostri scopi. Non sorprende che tutto questo sia conservato nel lecturer tabella.

Studenti

Concludo la panoramica della tabella con lo student tavolo. Ancora una volta, abbiamo solo bisogno di attributi di base qui e dovrebbero essere autoesplicativi.

Come potremmo migliorare questo modello?

Questo modello supporta le funzionalità di base necessarie per creare una piattaforma MOOC. Tuttavia, probabilmente puoi facilmente pensare a molte utili aggiunte. Eccone alcune che mi sono venute in mente:

  • Lingua del corso e sottotitoli per le video lezioni
  • Valutazione macchina
  • Studenti che esaminano e valutano i compiti l'uno dell'altro
  • Aiuti finanziari
  • Un'opzione che consente agli studenti di riprendere un corso dopo averlo abbandonato

Vale anche la pena ricordare che, secondo Wikipedia "... I server di database di Coursera (in esecuzione su RDS) rispondono a 10 miliardi di query SQL e Coursera serve circa 500 TB di traffico al mese." Era il 2013. Un vero modello di database MOOC potrebbe assomigliare a quello presentato in questo articolo, ma c'è ancora molto lavoro da fare sulla modellazione e l'infrastruttura!

In questo articolo ho cercato di mostrare la complessità del modello che sta dietro a una piattaforma MOOC. Mi sono concentrato principalmente su Coursera ed edX come esempi. Questo modello contiene 18 tavoli, ma graffia solo la superficie. Sentiti libero di commentare e condividere i miglioramenti che implementeresti nel modello. Se pensi che mi sia perso qualcosa di importante, fammi sapere!

Ti piace imparare online? Prova LearnSQL.com:corsi SQL interattivi, disponibili nel tuo browser.