Database
 sql >> база данни >  >> RDS >> Database

Модел на база данни за MOOC платформа

Ако управлявате MOOC платформа за онлайн обучение като edX или Coursera, как бихте я поддържали организирана? В тази статия ще разгледаме модел на база данни, който би свършил работата.

Вероятно сте чували за MOOC (Massive Open Online Course), модерен начин за учене онлайн. И ако не сте, помислете за MOOC програма като университетски предмети с всички материали, тестове и обратна връзка, достъпни онлайн. Два от най-популярните онлайн доставчици на MOOC са Coursera (основана от Станфордския университет) и edX (основана от Масачузетския технологичен институт и Харвардския университет). В сътрудничество с други университети и партньори, те предоставят стотици курсове на милиони учащи се по целия свят.

В тази статия ще обсъдим опростена версия на модел на база данни, която бихме могли да използваме за стартиране на този тип услуга. Първо, нека поговорим за това как MOOC всъщност работят от нетехническа гледна точка.

Как работят MOOC платформите?

Лично аз съм използвал Coursera и съм много доволен от него. Следователно коментарите ми в тази статия се отнасят най-вече за модела на Coursera, въпреки че вярвам, че edX следва подобен модел.

Какъв е бизнес моделът?

Идеята е много проста. Партньорите – предимно университети – създават материали за онлайн курсове, които обикновено се основават на техните предложения в кампуса. Тези материали могат да включват видео лекции, четения, викторини, дискусии, проекти, онлайн тестове и понякога финални задачи. Голяма част от материала е базиран на видео, така че обучаемите получават това „човешко докосване“. Наслаждавах се на някои курсове не само заради преподаваното, но и заради лекторите.

Учениците трябва да гледат или четат предоставените материали, да изпълняват задачи, да отговарят на викторини и да вземат тестове. Обикновено има и една или повече проектни задачи и оценките от всички тези задачи съставляват крайната оценка. Ако крайната им оценка е над определен резултат (например 70%), студентите преминават курса и получават сертификат. Някои сертификати са безплатни; други изискват сравнително малко плащане. Същото важи и за курсовете.

Свързаните курсове могат да бъдат организирани в по-големи единици, известни като специализации. Завършването на специализацията дава на студента друг сертификат (както и по-заоблен набор от умения) и може да бъде по-евтино от завършването на всеки курс поотделно.

Всички курсове и специализации могат да имат различни сесии. Някои ще имат нови сесии всеки месец, докато други ще имат една нова сесия всяка година. Има и курсове, които се предлагат при поискване.

Онлайн сертификатите все още нямат същата тежест като университетския сертификат, но се стремят към него. Някои курсове вече са одобрени за колеж, а онлайн програмите за обучение също са реалност.

Колко партньори, курсове и студенти има?

Простият отговор е „много“. Курсовете се измерват в хиляди, партньорите в стотици, а студентите в милиони – от почти всяка страна по света.

Какви промени можем да очакваме за MOOC?

Страхотното при MOOC е, че те могат бързо да се адаптират към промяната. Те не са ограничени от държавни или университетски разпоредби и не е нужно да чакат одобрение. Това е много важно, особено за курсовете, свързани с ИТ. Някои курсове и специализации няма да имат нови сесии:други нови курсове ще се появят, а съществуващите курсове ще преминат през различни актуализации.

Моделът на базата данни MOOC




Разделих модела на данни MOOC на три предметни области:

  • Course details
  • Specialization details
  • Student participation

И има три самостоятелни таблици:

  • institution
  • lecturer
  • student

Самостоятелните таблици се използват като източници на данни за различни таблици в предметните области. Тъй като предметните области съдържат по-голямата част от логиката, първо ще ги обясня и след това ще премина към самостоятелните таблици.

Курсове и материали

Въпреки че хората обикновено са най-важната част от всяка транзакция, тук ще направя изключение. Без учебни материали нямаше да има курсове и следователно нямаше интерес към нашата MOOC платформа. В „Подробности за курса“ съм групирал всички таблици, които описват курсове, свързани институции, партньори и материали.

Най-важната таблица в този раздел е course маса. Атрибутите са:

  • name – уникално име на курс
  • commitment – текстово описание на вероятна ангажираност, напр. „5 седмици обучение, 5-7 часа/седмица“
  • description – описание на курса
  • specialization_id – препратка към съответната специализация, ако е приложимо. Курсовете могат да бъдат част само от една специализация. Някои курсове не са свързани с никаква специализация, така че този атрибут не е задължителен.
  • min_grade – минималната оценка, необходима за преминаване на курс. Обикновено това се измерва като процент. В повечето курсове на Coursera това е 70%.
  • course_price – таксата, която ще платите за курс.
  • active – превключвател за включване/изключване, който показва дали даден курс ще има бъдещи сесии. Активните курсове ще имат нови сесии, докато неактивните няма.

Обърнете внимание, че course таблицата се казва course:Course details . Това е така, защото използвах course таблица отново на друго място, за да направи модела по-ясен. За да направя това, използвах опциите „Копиране“ и „Поставяне като пряк път“ на Vertabelo.

Всеки курс се състои от няколко глави. В Coursera студентите обикновено имат една седмица, за да завършат всяка глава. Списък с всички подраздели или глави на курса се съхранява в chapter маса. course_id атрибутът е препратка към course маса; chapter_no е поредният номер на глава от този курс. Тези два атрибута заедно образуват алтернативния ключ на таблицата. Последният атрибут, description , съхранява подробно описание за всяка глава.

Всяка глава е съставена от видео лекции, четения, викторини, тестове и проекти. Няма да създаваме отделни структури в базата данни, за да съхраняваме различни видове материали. Вместо това ще съхраняваме връзки към тези материали. И тук е material таблицата идва. Атрибутите в тази таблица са:

  • chapter_id – препратка към свързаната глава
  • material_no – пореден номер, присвоен на различни материали от главите. Заедно с chapter_id атрибут, този атрибут формира алтернативния (уникален) ключ на таблицата.
  • material_type_id – е препратка към material_type таблица
  • mandatory – булева стойност, която обозначава дали материалът е задължителен или незадължителен (т.е. за допълнителен кредит)
  • max_points – максималният брой точки, които ученикът може да постигне след завършване на този материал. Ако няма да бъдат присъдени точки, просто ще използваме „0“ като стойност.

material_type таблицата е речник на всички възможни видове материали. Единственият атрибут до първичния ключ е type_name и разбира се трябва да съдържа само уникални стойности. Някои очаквани типове материали са „видео лекция“ , „четене“ , „тест“ , „тест“ , „заключителен изпит“ и „задаване на проект“ .

on_course таблицата свързва всеки курс с лектора(ите), преподаващ този курс. Той съдържа само своя първичен ключ и двойка външен ключ (lecturer_id и course_id ). Двойката външни ключове формира уникалния ключ за таблицата.

По същия начин course_created_by свързва курс с всички институции, които са участвали в създаването му.

Специализации

Самостоятелните курсове са страхотни, но за да овладеете ново умение, ще ви трябват повече от един курс. Специализациите са стъпка в тази посока. Те са поредица от курсове, често четири или пет, и финален проект, в който можете да приложите уменията, които сте научили. Всички таблици, свързани със специализациите, са в Specialization details ■ площ.

specialization таблицата е централната таблица на този раздел. За всяка специализация ще съхраняваме уникално name и description . specialization_discount е сумата, която студентът ще спести, ако се запише в цялата специализация, а не в отделните курсове поотделно. Както и преди, active атрибутът е прост превключвател за включване/изключване, който показва дали специализацията ще има бъдещи сесии или не.

Обърнете внимание, че specialization таблицата също се появява два пъти в нашия модел. В тази област се нарича specialization:Specialization details .

on_specialization и specialization_created_by таблиците имат същата цел и следват същата логика като on_course и course_created_by маси. Разбира се, този път те ще се справят със специализации, а не с курсове.

Ученици

И накрая стигаме до секцията за ученици. В Student participation област, ще съхраняваме записи на ученици, сесии и представяне на учениците.

Всеки курс и специализация може да има повече от една сесия, така че ще трябва да съхраняваме кога всеки курс и специализация започва и кога приключва. За курсовете е много просто. Всяка нова сесия е просто нов екземпляр от същия курс. Нова сесия за специализация е нов екземпляр на цялата специализация и всички нейни курсове.

Не забравяйте, че студентите могат да се запишат в един курс от специалност или във всички от тях. course_sessions и specialization_session таблиците ни предоставят тази информация. Освен датите, те съдържат само външни ключове за course и specialization_table маси. Начална дата на външен ключ двойка формира уникалния ключ в двете таблици.

Курсовите сесии също могат да бъдат част от сесиите за специализация, така че ще трябва да добавим (незадължителен) външен ключ.

status речникът изброява всички възможни състояния, свързани с представянето на студента по време на курс. Няколко възможни състояния са „отпаднали“ , „издържан“ и „неуспешен“ .

Ще използваме enrolled_course таблица за съхраняване на всяко записване във всяка сесия на курса. Тази таблица съдържа два външни ключа, student_id и course_session_id , и заедно образуват алтернативния (уникален) ключ за масата. Други атрибути в таблицата са:

  • enrollment_date – датата, на която студентът се е записал в този курс
  • status_id – препратка към status речник; това записва как студентът се е представил на този курс
  • status_date – датата, на която е присвоен статус
  • final_grade – оценката (като процент), която студентът е постигнал за този курс
  • certificate_ID – идентификационен номер на сертификат, който платформата генерира, когато студент премине курса
  • certificate_location – връзка към точното място, където се съхранява сертификатът

enrolled_specialization таблицата следва същата логика като enrolled_course маса. Разликата е, че той свързва студентите със специализации, а не с курсове.

Ще използваме student_results таблица за съхраняване на изпълненията на учениците върху конкретни материали за курса. За всеки материал (material_id ) и записването на всеки студент (enrolled_course_id ) бихме могли да направим повече от един опит. Следователно attempt атрибутът е поредният номер на опита на всеки ученик. Тези три атрибута заедно образуват алтернативния ключ на таблицата.

В тази таблица attempt_link е местоположението на всеки екземпляр на тестове или проекти, представени от студенти. Можем да предположим, че за всеки опит ще генерираме „нов“ тест с произволно избрани въпроси. Ако материалът не изисква отговори на учениците, връзката няма да съществува и тук ще съхраняваме стойност NULL.

И накрая, student_results таблицата съхранява, когато ученик started и ended опит и score постигнати. Освен това може да съхранява резултати за изпълнение на задачи без оценка, както и да записва кои видеоклипове са гледали и кога, кои материали са чели и т.н.

Институции

institution таблицата е прост каталог, който изброява всички институции, които са създали курсове или чиито преподаватели участват в курсове.

Лектори

Бихме могли да продължим с много по-подробна таблица тук, но съхраняването на име и фамилия на всеки преподавател, заглавие и името на университета е достатъчно за нашите цели. Не е изненадващо, че всичко това се съхранява в lecturer таблица.

Ученици

Ще завърша прегледа на таблицата с student маса. Още веднъж, тук ни трябват просто основни атрибути и те трябва да се обясняват сами.

Как бихме могли да подобрим този модел?

Този модел поддържа основните функционалности, необходими за създаване на MOOC платформа. Все пак вероятно лесно можете да измислите много полезни допълнения. Ето няколко, които измислих:

  • Език на курса и субтитри за видео лекции
  • Машинно класиране
  • Учениците си преглеждат и оценяват задачите един на друг
  • Финансова помощ
  • Опция, която позволява на студентите да възобновят курс след отпадане от него

Също така си струва да се спомене, че според Wikipedia „... сървърите на база данни на Coursera (работещи на RDS) отговарят на 10 милиарда SQL заявки, а Coursera обслужва около 500 TB трафик на месец.“ Това беше през 2013 г. Истински модел на база данни MOOC може да изглежда като този, представен в тази статия, но има още много работа за вършене по моделирането и инфраструктурата!

В тази статия се опитах да покажа сложността на модела, който се крие зад MOOC платформа. Фокусирах се главно върху Coursera и edX като мои примери. Този модел съдържа 18 маси, но само надрасква повърхността. Чувствайте се свободни да коментирате и споделяте подобренията, които бихте приложили в модела. Ако смятате, че съм пропуснал нещо важно, моля, уведомете ме!

Като учене онлайн? Изпробвайте LearnSQL.com – интерактивни курсове по SQL, налични във вашия браузър.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Параметър Sniffing Primer

  2. Анализирането на смъртта от хиляда съкращава натоварването

  3. Преглед на функцията DBCC CheckDB

  4. Разширяване на използването на DBCC CLONEDATABASE

  5. Основи на табличните изрази, част 13 – Вградени функции с таблично стойности, продължение