sql >> Databáze >  >> RDS >> Database

Databázový model pro platformu MOOC

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 kurzu
  • commitment – textový popis pravděpodobného závazku, např. „5 týdnů studia, 5–7 hodin/týden“
  • description – popis kurzu
  • specialization_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í kapitolu
  • material_no – pořadové číslo přiřazené různým materiálům kapitol. Společně s chapter_id Tento atribut tvoří alternativní (jedinečný) klíč tabulky.
  • material_type_id – je odkaz na material_type stůl
  • mandatory – 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 zapsal
  • status_id – odkaz na status slovník; toto zaznamenává, jak si student v daném kurzu vedl
  • status_date – datum přidělení stavu
  • final_grade – známka (v procentech), které student za daný kurz dosáhl
  • certificate_ID – identifikační číslo certifikátu, které platforma vygeneruje, když student absolvuje kurz
  • certificate_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.


  1. Tabulka historie SQL serveru – naplnit pomocí SP nebo Trigger?

  2. Jak získat informace o typu definovaném uživatelem?

  3. podmíněné jedinečné omezení

  4. neplatný vzor názvu při pokusu o předání vlastního mapování objektů typu Oracle