Pokud byste provozovali online vzdělávací platformu MOOC, jako je edX nebo Coursera, jak byste ji udrželi uspořádanou? V tomto článku se podíváme na databázový model, který by tuto práci zvládl.
Pravděpodobně jste slyšeli o MOOC (Massive Open Online Course), trendovém způsobu učení online. A pokud ne, představte si program MOOC jako univerzitní předměty se všemi materiály, testy a zpětnou vazbou dostupnými online. Dva z nejpopulárnějších online poskytovatelů MOOC jsou Coursera (založená Stanfordskou univerzitou) a edX (založená Massachusettským technologickým institutem a Harvardskou univerzitou). Ve spolupráci s dalšími univerzitami a partnery poskytují stovky kurzů milionům studentů po celém světě.
V tomto článku budeme diskutovat o zjednodušené verzi databázového modelu, který bychom mohli použít ke spuštění tohoto typu služby. Nejprve si promluvme o tom, jak MOOC skutečně fungují z netechnického hlediska.
Jak fungují platformy MOOC?
Osobně jsem Courseru používal a byl jsem s ní velmi spokojen. Proto se mé komentáře v tomto článku týkají převážně modelu Coursera, i když věřím, že edX se řídí podobným vzorem.
Jaký je obchodní model?
Myšlenka je velmi jednoduchá. Partneři – především univerzity – vytvářejí materiály pro online kurzy, které obvykle vycházejí z nabídky jejich kampusu. Tyto materiály mohou zahrnovat video přednášky, čtení, kvízy, diskuze, projekty, online testy a někdy i závěrečné úkoly. Velká část materiálu je založena na videu, takže studenti získají „lidský dotek“. Některé kurzy mě bavily nejen kvůli tomu, co se učilo, ale také kvůli lektorům.
Studenti musí sledovat nebo číst poskytnuté materiály, plnit úkoly, odpovídat na kvízy a skládat testy. Obvykle existuje také jeden nebo více projektových úkolů a známky ze všech těchto úkolů tvoří konečnou známku. Pokud je jejich výsledná známka nad určitým skóre (např. 70 %), studenti kurz absolvují a obdrží certifikát. Některé certifikáty jsou zdarma; jiné vyžadují relativně malou platbu. Totéž platí pro kurzy.
Související kurzy lze organizovat do větších celků známých jako specializace. Dokončením specializace získá student další certifikát (a také obsáhlejší soubor dovedností) a může být levnější než absolvování každého kurzu samostatně.
Všechny kurzy a specializace mohou mít různá zasedání. Některé budou mít nové sezení každý měsíc, zatímco jiné budou mít jedno nové sezení každý rok. Existují také kurzy, které jsou k dispozici na vyžádání.
Online certifikace zatím nemají stejnou váhu jako univerzitní certifikát, ale aspirují na něj. Některé kurzy jsou již schváleny pro zápočet na vysoké škole a online studijní programy jsou nyní také realitou.
Kolik je partnerů, kurzů a studentů?
Jednoduchá odpověď je „hodně“. Kurzy se měří v tisících, partneři ve stovkách a studenti v milionech – téměř z jakékoli země na světě.
Jaké změny můžeme očekávat u MOOC?
Na MOOCech je skvělé, že se dokážou rychle přizpůsobit změnám. Nejsou omezeni státními ani univerzitními předpisy a nemusí čekat na schválení. To je velmi důležité, zejména u kurzů souvisejících s IT. Některé kurzy a specializace nebudou mít nové kurzy:objeví se další nové kurzy a stávající kurzy projdou různými aktualizacemi.
Model databáze MOOC
Datový model MOOC jsem rozdělil do tří tematických oblastí:
Course details
Specialization details
Student participation
A jsou tam tři samostatné tabulky:
institution
lecturer
student
Samostatné tabulky se používají jako zdroje dat pro různé tabulky v předmětných oblastech. Protože předmětové oblasti obsahují většinu logiky, nejprve je vysvětlím a poté přejdu k samostatným tabulkám.
Kurzy a materiály
Ačkoli lidé jsou obvykle nejdůležitější součástí jakékoli transakce, zde udělám výjimku. Bez učebních materiálů by nebyly žádné kurzy, a tedy ani zájem o naši platformu MOOC. V části Podrobnosti o kurzu jsem seskupil všechny tabulky, které popisují kurzy, související instituce, partnery a materiály.
Nejdůležitější tabulkou v této sekci je course
stůl. Atributy jsou:
name
– jedinečný název kurzucommitment
– textový popis pravděpodobného závazku, např. „5 týdnů studia, 5–7 hodin/týden“description
– popis kurzuspecialization_id
– případně odkaz na související specializaci. Kurzy mohou být součástí pouze jedné specializace. Některé kurzy nejsou přidruženy k žádné specializaci, takže tento atribut není povinný.min_grade
– minimální známka potřebná k absolvování kurzu. Obvykle se to bude měřit v procentech. Na většině kurzů Coursera je to 70 %.course_price
– poplatek, který zaplatíte za kurz.active
– vypínač, který indikuje, zda bude mít kurz budoucí sezení. Aktivní kurzy budou mít nové relace, zatímco neaktivní kurzy ne.
Všimněte si, že course
tabulka se jmenuje course:Course details
. Je to proto, že jsem použil course
tabulku znovu jinde, aby byl model přehlednější. K tomu jsem použil možnosti „Kopírovat“ a „Vložit jako zástupce“ Vertabelo.
Každý kurz se skládá z několika kapitol. V Courseře mají studenti obvykle týden na dokončení každé kapitoly. Seznam všech podsekcí nebo kapitol kurzu je uložen v chapter
stůl. course_id
atribut je odkaz na course
stůl; chapter_no
je pořadové číslo kapitoly v tomto kurzu. Tyto dva atributy společně tvoří alternativní klíč tabulky. Poslední atribut, description
, ukládá podrobný popis každé kapitoly.
Každá kapitola se skládá z video přednášek, čtení, kvízů, testů a projektů. V databázi nebudeme vytvářet samostatné struktury pro ukládání různých typů materiálů. Místo toho uložíme odkazy na tyto materiály. A tam je material
tabulka přichází. Atributy v této tabulce jsou:
chapter_id
– odkaz na související kapitolumaterial_no
– pořadové číslo přiřazené různým materiálům kapitol. Společně schapter_id
Tento atribut tvoří alternativní (jedinečný) klíč tabulky.material_type_id
– je odkaz namaterial_type
stůlmandatory
– booleovská hodnota, která označuje, zda je materiál povinný nebo volitelný (tj. pro extra kredit)max_points
– maximální počet bodů, kterých může student po absolvování tohoto materiálu dosáhnout. Pokud nebudou uděleny žádné body, použijeme jako hodnotu jednoduše „0“.
material_type
tabulka je slovník všech možných typů materiálů. Jediný atribut vedle primárního klíče je type_name
a samozřejmě musí obsahovat pouze jedinečné hodnoty. Některé očekávané typy materiálů jsou „video přednáška“ , „čtení“ , „kvíz“ , „test“ , „závěrečná zkouška“ a „zadání projektu“ .
on_course
tabulka uvádí každý kurz do souvislosti s lektorem (učiteli), kteří daný kurz vyučují. Obsahuje pouze svůj primární klíč a pár cizích klíčů (lecturer_id
a course_id
). Dvojice cizích klíčů tvoří jedinečný klíč pro tabulku.
Stejným způsobem course_created_by
spojuje kurz se všemi institucemi, které se podílely na jeho vytvoření.
Specializace
Samostatné kurzy jsou skvělé, ale k zvládnutí nové dovednosti budete potřebovat více než jeden kurz. Specializace jsou krokem tímto směrem. Jedná se o sérii kurzů, často čtyři nebo pět, a závěrečný projekt, kde můžete uplatnit dovednosti, které jste se naučili. Všechny tabulky související se specializací jsou v Specialization details
plocha.
specialization
tabulka je ústřední tabulkou této sekce. Pro každou specializaci uložíme jedinečný name
a description
. specialization_discount
je částka, kterou student ušetří, pokud si zapíše celou specializaci spíše než samostatné kurzy jednotlivě. Stejně jako dříve, active
atribut je jednoduchý přepínač zapnutí/vypnutí, který označuje, zda bude mít specializace budoucí relace nebo ne.
Všimněte si, že specialization
tabulka se také v našem modelu objevuje dvakrát. V této oblasti se nazývá specialization:Specialization details
.
on_specialization
a specialization_created_by
tabulky mají stejný účel a řídí se stejnou logikou jako on_course
a course_created_by
tabulky. Samozřejmě, že tentokrát budou řešit spíše specializace než kurzy.
Studenti
A konečně se dostáváme do sekce pro studenty. V Student participation
oblasti, budeme ukládat záznamy studentů, relací a výkonů studentů.
Každý kurz a specializace může mít více než jednu relaci, takže budeme muset uložit, kdy každý kurz a specializace začíná a kdy končí. U kurzů je to velmi jednoduché. Každá nová relace je pouze novou instancí stejného kurzu. Nová specializační seance je novou instancí celé specializace a všech jejích kurzů.
Pamatujte, že studenti si mohou zapsat jeden kurz ze specializace nebo všechny. course_sessions
a specialization_session
tyto informace nám poskytují tabulky. Kromě termínů obsahují pouze cizí klíče ke course
a specialization_table
tabulky. Datum zahájení cizího klíče pár tvoří jedinečný klíč v obou tabulkách.
Kurzy mohou být také součástí specializačních sezení, takže budeme muset přidat (nepovinný) cizí klíč.
status
slovník uvádí všechny možné stavy související s výkonem studenta během kurzu. Několik možných stavů je „vypuštěno“ , „prošlo“ a „neúspěšné“ .
Použijeme enrolled_course
tabulka pro uložení každého zápisu v jakékoli relaci kurzu. Tato tabulka obsahuje dva cizí klíče, student_id
a course_session_id
a společně tvoří alternativní (jedinečný) klíč pro tabulku. Další atributy v tabulce jsou:
enrollment_date
– datum, kdy se student do daného kurzu zapsalstatus_id
– odkaz nastatus
slovník; toto zaznamenává, jak si student v daném kurzu vedlstatus_date
– datum přidělení stavufinal_grade
– známka (v procentech), které student za daný kurz dosáhlcertificate_ID
– identifikační číslo certifikátu, které platforma vygeneruje, když student absolvuje kurzcertificate_location
– odkaz na přesné místo, kde je certifikát uložen
enrolled_specialization
tabulka má stejnou logiku jako enrolled_course
stůl. Rozdíl je v tom, že se týká studentů se specializací spíše než s kurzy.
Použijeme student_results
tabulka pro ukládání výkonů studentů na konkrétní materiály kurzu. Pro každý materiál (material_id
) a zápis každého studenta (course_id
zapsaného_kurzu). ) mohli jsme mít více než jeden pokus. Proto attempt
atribut je pořadové číslo pokusu každého studenta. Tyto tři atributy společně tvoří alternativní klíč tabulky.
V této tabulce attempt_link
je umístění každé instance testů nebo projektů předložených studenty. Můžeme předpokládat, že pro každý pokus vygenerujeme „nový“ test s náhodně vybranými otázkami. Pokud materiál nevyžaduje odpovědi studentů, odkaz nebude existovat a zde uložíme hodnotu NULL.
Nakonec student_results
tabulka ukládá, kdy student started
a ended
pokus a score
dosaženo. Může také ukládat výsledky výkonu u neohodnocených úkolů a také zaznamenávat, která videa sledovali a kdy, které materiály četli atd.
Instituce
institution
tabulka je jednoduchý katalog, který uvádí všechny instituce, které kurzy vytvořily nebo jejichž lektoři se kurzů účastní.
Lektoři
Zde bychom mohli jít s mnohem podrobnější tabulkou, ale pro naše účely postačí uložení jména a příjmení každého přednášejícího, titulu a jména univerzity. Není divu, že to vše je uloženo vlecturer
tabulka.
Studenti
Přehled tabulky dokončím se student
stůl. Ještě jednou, potřebujeme zde pouze základní atributy, které by měly být samozřejmé.
Jak bychom mohli tento model vylepšit?
Tento model podporuje základní funkce potřebné k vytvoření platformy MOOC. Přesto vás pravděpodobně snadno napadne mnoho užitečných doplňků. Zde je několik, na které jsem přišel:
- Jazyk kurzu a titulky pro video přednášky
- Strojové hodnocení
- Studenti si vzájemně kontrolují a hodnotí své úkoly
- Finanční pomoc
- Možnost, která studentům umožňuje pokračovat v kurzu poté, co jej opustí
Za zmínku také stojí, že podle Wikipedie „...databázové servery Coursera (běžící na RDS) odpovídají na 10 miliard SQL dotazů a Coursera obsluhuje přibližně 500 TB provozu za měsíc.“ Bylo to v roce 2013. Skutečný databázový model MOOC může vypadat jako ten prezentovaný v tomto článku, ale na modelování a infrastruktuře je potřeba udělat mnohem více!
V tomto článku jsem se pokusil ukázat složitost modelu, který stojí za platformou MOOC. Jako své příklady jsem se zaměřil hlavně na Coursera a edX. Tento model obsahuje 18 stolů, ale poškrábe pouze povrch. Neváhejte komentovat a sdílet vylepšení, která byste do modelu implementovali. Pokud si myslíte, že jsem něco důležitého přehlédl, dejte mi prosím vědět!
Líbí se vám učení online? Vyzkoušejte LearnSQL.com – interaktivní kurzy SQL dostupné ve vašem prohlížeči.