Ако управлявате 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, налични във вашия браузър.