Database
 sql >> Baza danych >  >> RDS >> Database

Model bazy danych dla platformy MOOC

Jeśli prowadziłeś internetową platformę edukacyjną MOOC, taką jak edX lub Coursera, jak byś ją zorganizował? W tym artykule przyjrzymy się modelowi bazy danych, który wykonałby zadanie.

Prawdopodobnie słyszałeś o MOOC (Massive Open Online Course), popularnym sposobie nauki online. A jeśli nie, pomyśl o programie MOOC jako przedmiotach uniwersyteckich ze wszystkimi materiałami, testami i opiniami dostępnymi online. Dwóch najpopularniejszych dostawców internetowych MOOC to Coursera (założony przez Uniwersytet Stanforda) i edX (założony przez Massachusetts Institute of Technology i Harvard University). We współpracy z innymi uniwersytetami i partnerami zapewniają setki kursów milionom uczniów na całym świecie.

W tym artykule omówimy uproszczoną wersję modelu bazy danych, którego moglibyśmy użyć do uruchomienia tego typu usługi. Najpierw porozmawiajmy o tym, jak faktycznie działają MOOC z nietechnicznej perspektywy.

Jak działają platformy MOOC?

Osobiście korzystałam z Coursera i byłam z niej bardzo zadowolona. Dlatego moje komentarze w tym artykule odnoszą się głównie do modelu Coursera, chociaż uważam, że edX podąża za podobnym wzorcem.

Jaki jest model biznesowy?

Pomysł jest bardzo prosty. Partnerzy – przede wszystkim uczelnie – tworzą materiały do ​​kursów online, które zazwyczaj opierają się na ich ofercie kampusowej. Materiały te mogą obejmować wykłady wideo, odczyty, quizy, dyskusje, projekty, testy online, a czasem zadania końcowe. Wiele materiałów jest opartych na materiałach wideo, więc uczący się otrzymują ten „ludzki dotyk”. Podobały mi się niektóre kursy nie tylko ze względu na to, czego nauczano, ale także ze względu na wykładowców.

Uczniowie muszą oglądać lub czytać dostarczone materiały, wykonywać zadania, odpowiadać na quizy i przystąpić do testów. Zazwyczaj jest też jedno lub więcej zadań projektowych, a oceny ze wszystkich tych zadań składają się na ocenę końcową. Jeśli ich ocena końcowa jest wyższa od określonego wyniku (np. 70%) kursanci zaliczają kurs i otrzymują certyfikat. Niektóre certyfikaty są bezpłatne; inne wymagają stosunkowo niewielkiej opłaty. To samo dotyczy kursów.

Kursy pokrewne można organizować w większe jednostki zwane specjalizacjami. Ukończenie specjalizacji daje uczniowi kolejny certyfikat (jak również bardziej zaokrąglony zestaw umiejętności) i może być mniej kosztowne niż ukończenie każdego kursu osobno.

Wszystkie kursy i specjalizacje mogą mieć różne sesje. Niektórzy będą mieli nowe sesje co miesiąc, podczas gdy inni będą mieli jedną nową sesję każdego roku. Istnieją również kursy dostępne na żądanie.

Certyfikaty online nie mają jeszcze takiej samej wagi jak certyfikat uniwersytecki, ale aspirują do tego. Niektóre kursy są już zatwierdzone do zaliczenia na studiach, a programy studiów online są teraz rzeczywistością.

Ilu jest partnerów, kursów i studentów?

Prosta odpowiedź brzmi „dużo”. Kursy są mierzone w tysiącach, partnerzy w setkach, a studenci w milionach – z niemal każdego kraju na świecie.

Jakich zmian możemy się spodziewać w przypadku MOOC?

Wspaniałą rzeczą w MOOC jest to, że mogą szybko dostosowywać się do zmian. Nie są ograniczone przepisami stanowymi lub uniwersyteckimi i nie muszą czekać na zatwierdzenie. To bardzo ważne, zwłaszcza w przypadku kursów związanych z informatyką. Niektóre kursy i specjalizacje nie będą miały nowych sesji:pojawią się inne nowe kursy, a istniejące kursy przejdą różne aktualizacje.

Model bazy danych MOOC




Podzieliłem model danych MOOC na trzy obszary tematyczne:

  • Course details
  • Specialization details
  • Student participation

I są trzy samodzielne stoły:

  • institution
  • lecturer
  • student

Samodzielne tabele są używane jako źródła danych dla różnych tabel w obszarach tematycznych. Ponieważ obszary tematyczne zawierają większość logiki, najpierw je wyjaśnię, a następnie przejdę do samodzielnych tabel.

Kursy i materiały

Chociaż ludzie są zwykle najważniejszą częścią każdej transakcji, tutaj zrobię wyjątek. Bez materiałów szkoleniowych nie byłoby kursów, a zatem nie byłoby zainteresowania naszą platformą MOOC. W „Szczegółach kursów” pogrupowałem wszystkie tabele opisujące kursy, powiązane instytucje, partnerów i materiały.

Najważniejszą tabelą w tej sekcji jest course stół. Atrybuty to:

  • name – unikalna nazwa kursu
  • commitment – opis tekstowy prawdopodobnego zaangażowania, m.in. „5 tygodni nauki, 5-7 godzin tygodniowo”
  • description – opis kursu
  • specialization_id – odniesienie do powiązanej specjalizacji, jeśli dotyczy. Kursy mogą być częścią tylko jednej specjalizacji. Niektóre kursy nie są powiązane z żadną specjalizacją, więc ten atrybut nie jest obowiązkowy.
  • min_grade – minimalna ocena potrzebna do zaliczenia przedmiotu. Zwykle będzie to mierzone w procentach. Na większości kursów Coursera jest to 70%.
  • course_price – opłata, jaką zapłacisz za kurs.
  • active – włącznik/wyłącznik, który wskazuje, czy kurs będzie miał przyszłe sesje. Aktywne kursy będą miały nowe sesje, a nieaktywne nie.

Zauważ, że course tabela ma nazwę course:Course details . Dzieje się tak, ponieważ korzystałem z course tabeli ponownie w innym miejscu, aby model był bardziej przejrzysty. Aby to zrobić, użyłem opcji „Kopiuj” i „Wklej jako skrót” Vertabelo.

Każdy kurs składa się z kilku rozdziałów. Na Coursera uczniowie zwykle mają tydzień na ukończenie każdego rozdziału. Lista wszystkich podrozdziałów lub rozdziałów kursu jest przechowywana w chapter stół. course_id atrybut jest odniesieniem do course stół; chapter_no to numer porządkowy rozdziału w tym kursie. Te dwa atrybuty razem tworzą klucz alternatywny tabeli. Ostatni atrybut, description , przechowuje szczegółowy opis każdego rozdziału.

Każdy rozdział składa się z wykładów wideo, lektur, quizów, testów i projektów. Nie będziemy tworzyć osobnych struktur w bazie danych do przechowywania różnych typów materiałów. Zamiast tego będziemy przechowywać linki do tych materiałów. I właśnie tam material pojawia się tabela. Atrybuty w tej tabeli to:

  • chapter_id – odniesienie do odpowiedniego rozdziału
  • material_no – liczba porządkowa przypisywana różnym materiałom rozdziałów. Wraz z chapter_id atrybut, ten atrybut tworzy alternatywny (unikalny) klucz tabeli.
  • material_type_id – jest odniesieniem do material_type stół
  • mandatory – wartość logiczna, która wskazuje, czy materiał jest wymagany, czy opcjonalny (tj. za dodatkowy kredyt)
  • max_points – maksymalna liczba punktów, jaką uczeń może osiągnąć po ukończeniu tego materiału. Jeśli nie zostaną przyznane żadne punkty, użyjemy po prostu „0” jako wartości.

material_type table to słownik wszystkich możliwych rodzajów materiałów. Jedynym atrybutem obok klucza podstawowego jest type_name i oczywiście musi zawierać tylko unikalne wartości. Niektóre oczekiwane typy materiałów to „wykład wideo” , „czytanie” , „quiz” , „test” , „egzamin końcowy” i „przypisanie projektu” .

on_course tabela wiąże każdy kurs z wykładowcą (wykładowcami) prowadzącymi ten kurs. Zawiera tylko klucz podstawowy i parę kluczy obcych (lecturer_id i course_id ). Para kluczy obcych tworzy unikalny klucz dla tabeli.

W ten sam sposób course_created_by dotyczy kursu ze wszystkimi instytucjami, które były zaangażowane w jego tworzenie.

Specjalizacje

Samodzielne kursy są świetne, ale aby opanować nową umiejętność, potrzebujesz więcej niż jednego kursu. Specjalizacje to krok w tym kierunku. Są to serie kursów, często cztery lub pięć, oraz końcowy projekt, w którym możesz zastosować nabyte umiejętności. Wszystkie tabele związane ze specjalizacją znajdują się w Specialization details powierzchnia.

specialization tabela jest centralną tabelą tej sekcji. Dla każdej specjalizacji przechowujemy unikalną name i description . specialization_discount to kwota, jaką student zaoszczędzi, zapisując się na całą specjalizację, a nie na samodzielne kursy. Tak jak poprzednio, active atrybut to prosty włącznik/wyłącznik, który wskazuje, czy specjalizacja będzie miała przyszłe sesje, czy nie.

Zauważ, że specialization stół pojawia się również dwukrotnie w naszym modelu. Wewnątrz tego obszaru nosi nazwę specialization:Specialization details .

on_specialization i specialization_created_by tabele mają ten sam cel i działają zgodnie z tą samą logiką, co on_course i course_created_by tabele. Oczywiście tym razem zajmą się raczej specjalizacjami niż kursami.

Uczniowie

I wreszcie dochodzimy do sekcji studentów. W Student participation obszarze, będziemy przechowywać zapisy uczniów, sesji i wyników uczniów.

Każdy kurs i specjalizacja może mieć więcej niż jedną sesję, więc musimy przechowywać, kiedy każdy kurs i specjalizacja się rozpoczyna i kiedy się kończy. W przypadku kursów jest to bardzo proste. Każda nowa sesja to tylko nowa instancja tego samego kursu. Nowa sesja specjalizacyjna to nowa instancja całej specjalizacji i wszystkich jej kursów.

Pamiętaj, że studenci mogą zapisać się na jeden kurs ze specjalizacji lub na wszystkie. course_sessions i specialization_session tabele dostarczają nam tych informacji. Oprócz dat zawierają tylko klucze obce do course i specialization_table tabele. Data początkowa klucza obcego para tworzy unikalny klucz w obu tabelach.

Sesje kursów mogą być również częścią sesji specjalizacyjnych, więc musimy dodać (nieobowiązkowy) klucz obcy.

status słownik zawiera listę wszystkich możliwych statusów związanych z wynikami studenta podczas kursu. Kilka możliwych stanów to „wycofane” , „zaliczone” i „nieudane” .

Użyjemy enrolled_course tabela do przechowywania wszystkich zapisów w dowolnej sesji kursu. Ta tabela zawiera dwa klucze obce, student_id i course_session_id i razem tworzą alternatywny (unikalny) klucz dla tabeli. Inne atrybuty w tabeli to:

  • enrollment_date – data zapisania się ucznia na ten kurs
  • status_id – odniesienie do status słownik; to rejestruje wyniki ucznia na tym kursie
  • status_date – data nadania statusu
  • final_grade – ocena (w procentach), jaką uczeń uzyskał z tego kursu
  • certificate_ID – numer identyfikacyjny certyfikatu, który platforma generuje, gdy student zaliczy kurs
  • certificate_location – link do dokładnej lokalizacji, w której przechowywany jest certyfikat

enrolled_specialization tabela ma tę samą logikę, co enrolled_course stół. Różnica polega na tym, że dotyczy raczej studentów specjalizacji niż kursów.

Użyjemy student_results stół do przechowywania występów uczniów na określonych materiałach szkoleniowych. Dla każdego materiału (material_id ) i rejestrację każdego ucznia (enrolled_course_id ) możemy mieć więcej niż jedną próbę. Dlatego attempt atrybut to numer porządkowy próby każdego ucznia. Te trzy atrybuty razem tworzą klucz alternatywny tabeli.

W tej tabeli attempt_link to lokalizacja każdego wystąpienia testów lub projektów przesłanych przez studentów. Możemy założyć, że dla każdej próby wygenerujemy „nowy” test z losowo wybranymi pytaniami. Jeśli materiał nie wymaga odpowiedzi uczniów, link nie będzie istniał i zapiszemy tutaj wartość NULL.

Wreszcie student_results tabela przechowuje, gdy uczeń started i ended próba i score osiągnięty. Może również przechowywać wyniki wydajności w nieocenionych projektach, a także rejestrować, które filmy obejrzeli i kiedy, jakie materiały przeczytali itp.

Instytucje

institution tabela to prosty katalog, który zawiera listę wszystkich instytucji, które stworzyły kursy lub których wykładowcy są zaangażowani w kursy.

Wykładowcy

Moglibyśmy tutaj skorzystać ze znacznie bardziej szczegółowej tabeli, ale przechowywanie imienia i nazwiska każdego wykładowcy, tytułu i nazwy uczelni wystarczy do naszych celów. Nic dziwnego, że wszystko to jest przechowywane w lecturer tabela.

Uczniowie

Skończę przegląd tabeli z student stół. Jeszcze raz potrzebujemy tutaj tylko podstawowych atrybutów, które powinny być oczywiste.

Jak możemy ulepszyć ten model?

Model ten obsługuje podstawowe funkcjonalności potrzebne do stworzenia platformy MOOC. Mimo to prawdopodobnie łatwo wymyślisz wiele przydatnych dodatków. Oto kilka, które wymyśliłem:

  • Język kursu i napisy do wykładów wideo
  • Klasyfikacja maszyn
  • Uczniowie sprawdzają i oceniają swoje projekty nawzajem
  • Pomoc finansowa
  • Opcja, która umożliwia studentom wznowienie kursu po jego opuszczeniu

Warto również wspomnieć, że według Wikipedii „... Serwery baz danych Coursera (działające na RDS) odpowiadają na 10 miliardów zapytań SQL, a Coursera obsługuje około 500 TB ruchu miesięcznie”. To było w 2013 roku. Prawdziwy model bazy danych MOOC może wyglądać tak, jak ten przedstawiony w tym artykule, ale jest dużo więcej do zrobienia w zakresie modelowania i infrastruktury!

W tym artykule starałem się pokazać złożoność modelu stojącego za platformą MOOC. Skupiłem się głównie na Coursera i edX jako moich przykładach. Ten model zawiera 18 stolików, ale tylko rysuje powierzchnię. Zapraszam do komentowania i dzielenia się ulepszeniami, które wdrożyłeś w modelu. Jeśli uważasz, że przegapiłem coś ważnego, daj mi znać!

Lubisz uczyć się online? Wypróbuj LearnSQL.com – interaktywne kursy SQL dostępne w Twojej przeglądarce.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL CREATE TABLE dla początkujących

  2. Ciekawe rzeczy o wyzwalaczach ZAMIAST

  3. Korzystanie z Salesforce SOQL z systemu Linux

  4. SQL MAX() dla początkujących

  5. Co to jest testowanie bazy danych i jak je wykonać?