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

Ein Datenbankmodell für eine MOOC-Plattform

Wenn Sie eine MOOC-Online-Lernplattform wie edX oder Coursera betreiben würden, wie würden Sie diese organisieren? In diesem Artikel sehen wir uns ein Datenbankmodell an, das die Aufgabe erfüllen würde.

Sie haben wahrscheinlich schon von MOOC (Massive Open Online Course) gehört, einer trendigen Art, online zu lernen. Und wenn Sie dies nicht getan haben, stellen Sie sich ein MOOC-Programm als Universitätsfächer vor, bei denen alle Materialien, Tests und Rückmeldungen online verfügbar sind. Zwei der beliebtesten Online-MOOC-Anbieter sind Coursera (gegründet von der Stanford University) und edX (gegründet vom Massachusetts Institute of Technology und der Harvard University). In Zusammenarbeit mit anderen Universitäten und Partnern bieten sie Hunderte von Kursen für Millionen von Lernenden auf der ganzen Welt an.

In diesem Artikel diskutieren wir eine vereinfachte Version eines Datenbankmodells, das wir verwenden könnten, um diese Art von Dienst auszuführen. Lassen Sie uns zunächst darüber sprechen, wie MOOCs tatsächlich aus einer nicht-technischen Perspektive funktionieren.

Wie funktionieren MOOC-Plattformen?

Ich persönlich habe Coursera verwendet und war sehr zufrieden damit. Daher beziehen sich meine Kommentare in diesem Artikel hauptsächlich auf das Modell von Coursera, obwohl ich glaube, dass edX einem ähnlichen Muster folgt.

Was ist das Geschäftsmodell?

Die Idee ist sehr einfach. Partner – in erster Linie Universitäten – erstellen Materialien für Online-Kurse, die in der Regel auf ihren Campus-Angeboten basieren. Diese Materialien können Videovorträge, Lesungen, Quiz, Diskussionen, Projekte, Online-Tests und manchmal Abschlussaufgaben umfassen. Ein Großteil des Materials ist videobasiert, sodass die Lernenden diese „menschliche Note“ bekommen. Einige Kurse haben mir nicht nur wegen dem, was gelehrt wurde, sondern auch wegen der Dozenten gefallen.

Die Schüler müssen bereitgestellte Materialien ansehen oder lesen, Aufgaben erledigen, Quizfragen beantworten und Tests absolvieren. In der Regel gibt es auch eine oder mehrere Projektarbeiten, deren Noten in die Abschlussnote eingehen. Liegt die Abschlussnote über einer bestimmten Punktzahl (z. B. 70 %), bestehen die Studierenden den Kurs und erhalten ein Zertifikat. Einige Zertifikate sind kostenlos; andere verlangen eine relativ geringe Zahlung. Dasselbe gilt für die Kurse.

Verwandte Kurse können in größeren Einheiten organisiert werden, die als Spezialisierungen bezeichnet werden. Durch den Abschluss der Spezialisierung erhält der Student ein weiteres Zertifikat (sowie umfassendere Fähigkeiten) und ist möglicherweise kostengünstiger als der separate Abschluss jedes Kurses.

Alle Kurse und Spezialisierungen können unterschiedliche Sitzungen haben. Einige haben jeden Monat neue Sitzungen, während andere jedes Jahr eine neue Sitzung haben. Es gibt auch Kurse, die auf Anfrage verfügbar sind.

Online-Zertifizierungen haben noch nicht das gleiche Gewicht wie ein Universitätszertifikat, aber sie streben danach. Einige Kurse sind bereits für Hochschulkredite zugelassen, und auch Online-Studienprogramme sind jetzt Realität.

Wie viele Partner, Kurse und Studenten gibt es?

Die einfache Antwort ist „viel“. Kurse werden in Tausenden gemessen, Partner in Hunderten und Studenten in Millionen – aus fast allen Ländern der Welt.

Welche Änderungen können wir für MOOCs erwarten?

Das Tolle an MOOCs ist, dass sie sich schnell an Veränderungen anpassen können. Sie sind nicht durch staatliche oder universitäre Vorschriften eingeschränkt und müssen nicht auf Genehmigungen warten. Das ist gerade bei IT-nahen Studiengängen sehr wichtig. Einige Kurse und Spezialisierungen haben keine neuen Sitzungen:andere neue Kurse werden erscheinen und bestehende Kurse werden verschiedenen Aktualisierungen unterzogen.

Das MOOC-Datenbankmodell




Ich habe das MOOC-Datenmodell in drei Themenbereiche aufgeteilt:

  • Course details
  • Specialization details
  • Student participation

Und es gibt drei eigenständige Tabellen:

  • institution
  • lecturer
  • student

Die Standalone-Tabellen dienen als Datenquellen für verschiedene Tabellen in den Fachgebieten. Da die Themenbereiche den größten Teil der Logik enthalten, erkläre ich sie zuerst und gehe dann zu den eigenständigen Tabellen über.

Kurse und Materialien

Obwohl Menschen normalerweise der wichtigste Teil jeder Transaktion sind, mache ich hier eine Ausnahme. Ohne Kursmaterialien gäbe es keine Kurse und somit kein Interesse an unserer MOOC-Plattform. In „Kursdetails“ habe ich alle Tabellen gruppiert, die Kurse, verwandte Institutionen, Partner und Materialien beschreiben.

Die wichtigste Tabelle in diesem Abschnitt ist der course Tisch. Die Attribute sind:

  • name – ein eindeutiger Kursname
  • commitment – eine Textbeschreibung des voraussichtlichen Engagements, z. „5 Wochen Studium, 5-7 Stunden/Woche“
  • description – eine Beschreibung des Kurses
  • specialization_id – ggf. Verweis auf die entsprechende Spezialisierung. Kurse können nur Teil einer Spezialisierung sein. Einige Kurse sind keiner Spezialisierung zugeordnet, daher ist dieses Attribut nicht obligatorisch.
  • min_grade – die Mindestnote, die zum Bestehen eines Kurses erforderlich ist. Normalerweise wird das in Prozent gemessen. Bei den meisten Coursera-Kursen sind es 70 %.
  • course_price – die Gebühr, die Sie für einen Kurs zahlen.
  • active – ein Ein-/Ausschalter, der angibt, ob ein Kurs zukünftige Sitzungen haben wird. Aktive Kurse haben neue Sitzungen, inaktive Kurse nicht.

Beachten Sie, dass der course Die Tabelle heißt course:Course details . Das liegt daran, dass ich den course Tabelle an anderer Stelle erneut, um das Modell klarer zu machen. Dazu habe ich die Optionen „Kopieren“ und „Als Verknüpfung einfügen“ von Vertabelo verwendet.

Jeder Kurs besteht aus einigen Kapiteln. In Coursera haben die Schüler normalerweise eine Woche Zeit, um jedes Kapitel abzuschließen. Im chapter Tisch. Die course_id -Attribut ist ein Verweis auf den course Tisch; chapter_no ist die Ordnungszahl eines Kapitels in diesem Kurs. Diese beiden Attribute bilden zusammen den alternativen Schlüssel der Tabelle. Das letzte Attribut, description , speichert eine detaillierte Beschreibung für jedes Kapitel.

Jedes Kapitel besteht aus Videovorträgen, Lesungen, Quizfragen, Tests und Projekten. Wir werden keine separaten Strukturen in der Datenbank erstellen, um verschiedene Materialtypen zu speichern. Stattdessen speichern wir Links zu diesen Materialien. Und das ist das material Tabelle kommt herein. Die Attribute in dieser Tabelle sind:

  • chapter_id – ein Verweis auf das entsprechende Kapitel
  • material_no – eine Ordnungszahl, die verschiedenen Kapitelmaterialien zugeordnet ist. Zusammen mit der chapter_id -Attribut bildet dieses Attribut den alternativen (eindeutigen) Schlüssel der Tabelle.
  • material_type_id – ist ein Verweis auf den material_type Tabelle
  • mandatory – ein boolescher Wert, der angibt, ob das Material erforderlich oder optional ist (z. B. für zusätzliche Punkte)
  • max_points – die maximale Punktzahl, die der Student nach Abschluss dieses Materials erreichen kann. Wenn keine Punkte vergeben werden, verwenden wir einfach „0“ als Wert.

Der material_type table ist ein Lexikon aller möglichen Materialarten. Das einzige Attribut neben dem Primärschlüssel ist type_name und natürlich darf es nur eindeutige Werte enthalten. Einige erwartete Materialarten sind „Videovortrag“ , „Lesen“ , "Quiz" , "testen" , „Abschlussprüfung“ und „Projektauftrag“ .

Der on_course Tabelle verbindet jeden Kurs mit dem Dozenten, der diesen Kurs unterrichtet. Es enthält nur seinen Primärschlüssel und ein Fremdschlüsselpaar (lecturer_id und course_id ). Das Fremdschlüsselpaar bildet den eindeutigen Schlüssel für die Tabelle.

Auf die gleiche Weise course_created_by verknüpft einen Studiengang mit allen Institutionen, die an seiner Erstellung beteiligt waren.

Spezialisierungen

Eigenständige Kurse sind großartig, aber um eine neue Fertigkeit zu meistern, benötigen Sie mehr als einen Kurs. Spezialisierungen sind ein Schritt in diese Richtung. Es handelt sich um eine Reihe von Kursen, oft vier oder fünf, und ein Abschlussprojekt, bei dem Sie die erlernten Fähigkeiten anwenden können. Alle fachrichtungsbezogenen Tabellen befinden sich in den Specialization details Bereich.

Die specialization Tabelle ist die zentrale Tabelle dieses Abschnitts. Für jede Spezialisierung speichern wir einen eindeutigen name und description . Der specialization_discount ist der Betrag, den ein Student spart, wenn er sich für die gesamte Spezialisierung einschreibt und nicht für die eigenständigen Kurse einzeln. Wie zuvor, der active -Attribut ist ein einfacher Ein/Aus-Schalter, der angibt, ob die Spezialisierung zukünftige Sitzungen haben wird oder nicht.

Beachten Sie, dass die specialization Tabelle kommt in unserem Modell ebenfalls zweimal vor. Innerhalb dieses Bereichs heißt es specialization:Specialization details .

Der on_specialization und specialization_created_by Tabellen haben den gleichen Zweck und folgen der gleichen Logik wie on_course und course_created_by Tische. Natürlich werden sie sich diesmal eher mit Spezialisierungen als mit Kursen befassen.

Studenten

Und schließlich kommen wir zum Studentenbereich. In der Student participation Bereich speichern wir Aufzeichnungen über Schüler, Sitzungen und Schülerleistungen.

Jeder Kurs und jede Spezialisierung kann mehr als eine Sitzung umfassen, daher müssen wir speichern, wann jeder Kurs und jede Spezialisierung beginnt und wann sie endet. Für Kurse ist es sehr einfach. Jede neue Sitzung ist nur eine neue Instanz desselben Kurses. Eine neue Spezialisierungssitzung ist eine neue Instanz der gesamten Spezialisierung und aller ihrer Kurse.

Denken Sie daran, dass sich die Studierenden für einen Kurs aus einer Spezialisierung oder für alle einschreiben können. Die course_sessions und specialization_session Tabellen liefern uns diese Informationen. Neben Datumsangaben enthalten sie nur Fremdschlüssel zum course und specialization_table Tische. Ein Fremdschlüssel-Startdatum Paar bildet den eindeutigen Schlüssel in beiden Tabellen.

Kurssitzungen können auch Teil der Spezialisierungssitzungen sein, daher müssen wir einen (nicht obligatorischen) Fremdschlüssel hinzufügen.

Der status Wörterbuch listet alle möglichen Status bezüglich der Schülerleistung während eines Kurses auf. Einige mögliche Status sind „ausgestiegen“ , „bestanden“ und „fehlgeschlagen“ .

Wir verwenden den enrolled_course Tabelle zum Speichern jeder Anmeldung in jeder Kurssitzung. Diese Tabelle enthält zwei Fremdschlüssel, student_id und course_session_id , und zusammen bilden sie den alternativen (eindeutigen) Schlüssel für die Tabelle. Andere Attribute in der Tabelle sind:

  • enrollment_date – das Datum, an dem sich ein Student für diesen Kurs eingeschrieben hat
  • status_id – ein Verweis auf den status Wörterbuch; dies zeichnet auf, wie ein Student in diesem Kurs abgeschnitten hat
  • status_date – das Datum, an dem ein Status zugewiesen wurde
  • final_grade – die Note (in Prozent), die der Student für diesen Kurs erreicht hat
  • certificate_ID – eine Zertifikatsidentifikationsnummer, die die Plattform generiert, wenn ein Student den Kurs besteht
  • certificate_location – ein Link zum genauen Speicherort des Zertifikats

Die enrolled_specialization Tabelle folgt der gleichen Logik wie enrolled_course Tisch. Der Unterschied besteht darin, dass es Studenten mit Spezialisierungen und nicht mit Kursen in Beziehung setzt.

Wir verwenden die student_results Tabelle zum Speichern der Schülerleistungen zu bestimmten Kursmaterialien. Für jedes Material (material_id ) und die Einschreibung jedes Kursteilnehmers (enrolled_course_id ) könnten wir mehr als einen Versuch haben. Daher der attempt Das Attribut ist die Ordnungszahl des Versuchs jedes Schülers. Diese drei Attribute bilden zusammen den alternativen Schlüssel der Tabelle.

In dieser Tabelle der attempt_link ist der Ort jeder Instanz von Tests oder Projekten, die von Studenten eingereicht wurden. Wir können davon ausgehen, dass wir für jeden Versuch einen „neuen“ Test mit zufällig ausgewählten Fragen generieren. Wenn für das Material keine Schülerantworten erforderlich sind, existiert der Link nicht und wir speichern hier einen NULL-Wert.

Schließlich die student_results Tabelle speichert, wann ein Schüler started hat und ended ein Versuch und die score erreicht. Es kann auch Leistungsergebnisse zu nicht benoteten Aufgaben speichern sowie aufzeichnen, welche Videos sie wann angesehen haben, welche Materialien sie gelesen haben usw.

Institutionen

Die institution table ist ein einfacher Katalog, der alle Institutionen auflistet, die Lehrveranstaltungen erstellt haben oder deren Dozenten an Lehrveranstaltungen beteiligt sind.

Dozenten

Wir könnten hier eine viel detailliertere Tabelle verwenden, aber das Speichern des Vor- und Nachnamens jedes Dozenten, seines Titels und seines Universitätsnamens reicht für unsere Zwecke aus. Es überrascht nicht, dass dies alles im lecturer Tabelle.

Studenten

Ich beende die Tabellenübersicht mit dem student Tisch. Noch einmal, wir brauchen hier nur grundlegende Attribute, und sie sollten selbsterklärend sein.

Wie könnten wir dieses Modell verbessern?

Dieses Modell unterstützt die grundlegenden Funktionalitäten, die zum Erstellen einer MOOC-Plattform erforderlich sind. Trotzdem fallen Ihnen wahrscheinlich viele nützliche Ergänzungen ein. Hier sind ein paar, die mir eingefallen sind:

  • Kurssprache und Untertitel für Videovorträge
  • Maschinelle Sortierung
  • Schüler überprüfen und benoten gegenseitig die Aufgaben
  • Finanzielle Hilfe
  • Eine Option, die es Studenten ermöglicht, einen Kurs fortzusetzen, nachdem sie ihn abgebrochen haben

Erwähnenswert ist auch, dass laut Wikipedia „... die Datenbankserver von Coursera (die auf RDS laufen) 10 Milliarden SQL-Anfragen beantworten und Coursera etwa 500 TB Datenverkehr pro Monat verarbeitet.“ Das war im Jahr 2013. Ein echtes MOOC-Datenbankmodell könnte wie das in diesem Artikel vorgestellte aussehen, aber es gibt noch viel mehr Arbeit an der Modellierung und Infrastruktur!

In diesem Artikel habe ich versucht, die Komplexität des Modells aufzuzeigen, das hinter einer MOOC-Plattform steckt. Ich habe mich hauptsächlich auf Coursera und edX als meine Beispiele konzentriert. Dieses Modell enthält 18 Tabellen, aber es kratzt nur an der Oberfläche. Fühlen Sie sich frei, die Verbesserungen zu kommentieren und zu teilen, die Sie in das Modell implementieren würden. Wenn Sie der Meinung sind, dass ich etwas Wichtiges verpasst habe, lassen Sie es mich bitte wissen!

Sie lernen gerne online? Probieren Sie LearnSQL.com aus – interaktive SQL-Kurse, verfügbar in Ihrem Browser.