Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Model Basis Data untuk Platform MOOC

Jika Anda menjalankan platform pembelajaran online MOOC seperti edX atau Coursera, bagaimana Anda akan mengaturnya? Dalam artikel ini, kita akan melihat model database yang akan melakukan pekerjaan itu.

Anda mungkin pernah mendengar tentang MOOC (Massive Open Online Course), cara belajar online yang sedang tren. Dan jika Anda belum, pikirkan program MOOC sebagai mata pelajaran universitas dengan semua materi, tes, dan umpan balik tersedia secara online. Dua penyedia MOOC online paling populer adalah Coursera (didirikan oleh Stanford University) dan edX (didirikan oleh Massachusetts Institute of Technology dan Harvard University). Bekerja sama dengan universitas dan mitra lain, mereka menyediakan ratusan kursus untuk jutaan pelajar di seluruh dunia.

Dalam artikel ini, kita akan membahas versi sederhana dari model database yang dapat kita gunakan untuk menjalankan jenis layanan ini. Pertama, mari kita bicara tentang bagaimana sebenarnya MOOC bekerja dari perspektif non-teknis.

Bagaimana Platform MOOC Bekerja?

Secara pribadi, saya telah menggunakan Coursera dan saya sangat puas dengannya. Oleh karena itu, komentar saya di artikel ini sebagian besar berkaitan dengan model Coursera, meskipun saya yakin edX mengikuti pola yang sama.

Apa model bisnisnya?

Idenya sangat sederhana. Mitra – terutama universitas – membuat materi untuk kursus online, yang biasanya didasarkan pada penawaran kampus mereka. Materi ini dapat berupa video ceramah, bacaan, kuis, diskusi, proyek, tes online, dan terkadang tugas akhir. Sebagian besar materi berbasis video, sehingga pelajar mendapatkan "sentuhan manusia" itu. Saya menikmati beberapa mata kuliah bukan hanya karena apa yang diajarkan tetapi juga karena dosennya.

Siswa perlu melihat atau membaca materi yang diberikan, menyelesaikan tugas, menjawab kuis, dan mengerjakan tes. Biasanya ada juga satu atau lebih tugas proyek, dan nilai dari semua tugas ini merupakan nilai akhir. Jika nilai akhir mereka di atas nilai tertentu (misalnya 70%) siswa lulus kursus dan menerima sertifikat. Beberapa sertifikat gratis; yang lain membutuhkan pembayaran yang relatif kecil. Hal yang sama berlaku untuk kursus.

Kursus terkait dapat diatur ke dalam entitas yang lebih besar yang dikenal sebagai spesialisasi. Menyelesaikan spesialisasi memberi siswa sertifikat lain (serta seperangkat keterampilan yang lebih lengkap) dan mungkin lebih murah daripada menyelesaikan setiap kursus secara terpisah.

Semua kursus dan spesialisasi dapat memiliki sesi yang berbeda. Beberapa akan memiliki sesi baru setiap bulan, sementara yang lain akan memiliki satu sesi baru setiap tahun. Ada juga kursus yang tersedia sesuai permintaan.

Sertifikasi online belum memiliki bobot yang sama dengan sertifikat universitas, tetapi mereka menginginkannya. Beberapa kursus sudah disetujui untuk kredit perguruan tinggi, dan program studi online juga menjadi kenyataan sekarang.

Ada berapa mitra, kursus, dan siswa?

Jawaban sederhananya adalah “banyak”. Kursus diukur dalam ribuan, mitra dalam ratusan, dan siswa dalam jutaan – dari hampir semua negara di dunia.

Perubahan apa yang bisa kita harapkan untuk MOOC?

Hal hebat tentang MOOC adalah mereka dapat dengan cepat beradaptasi dengan perubahan. Mereka tidak dibatasi oleh peraturan negara bagian atau universitas dan tidak perlu menunggu persetujuan. Itu sangat penting, terutama untuk mata kuliah yang berhubungan dengan IT. Beberapa kursus dan spesialisasi tidak akan memiliki sesi baru:kursus baru lainnya akan muncul, dan kursus yang ada akan melalui berbagai pembaruan.

Model Basis Data MOOC




Saya telah membagi model data MOOC menjadi tiga bidang subjek:

  • Course details
  • Specialization details
  • Student participation

Dan ada tiga tabel mandiri:

  • institution
  • lecturer
  • student

Tabel mandiri digunakan sebagai sumber data untuk berbagai tabel di area subjek. Karena area subjek berisi sebagian besar logika, saya akan menjelaskannya terlebih dahulu, lalu pindah ke tabel mandiri.

Kursus dan Materi

Meskipun orang biasanya merupakan bagian terpenting dari transaksi apa pun, saya akan membuat pengecualian di sini. Tanpa materi kursus, tidak akan ada kursus dan oleh karena itu tidak ada minat pada platform MOOC kami. Di “Detail kursus”, saya telah mengelompokkan semua tabel yang menjelaskan kursus, institusi terkait, mitra, dan materi.

Tabel terpenting di bagian ini adalah course meja. Atributnya adalah:

  • name – nama kursus yang unik
  • commitment – deskripsi teks tentang kemungkinan komitmen, mis. “5 minggu belajar, 5-7 jam/minggu”
  • description – deskripsi kursus
  • specialization_id – referensi ke spesialisasi terkait, jika ada. Kursus dapat menjadi bagian dari hanya satu spesialisasi. Beberapa kursus tidak berafiliasi dengan spesialisasi apa pun, jadi atribut ini tidak wajib.
  • min_grade - nilai minimum yang diperlukan untuk lulus kursus. Biasanya itu akan diukur sebagai persentase. Pada sebagian besar kursus Coursera, ini adalah 70%.
  • course_price – biaya yang akan Anda bayar untuk kursus.
  • active – sakelar hidup/mati yang menunjukkan apakah suatu kursus akan memiliki sesi di masa mendatang. Kursus aktif akan memiliki sesi baru, sedangkan kursus tidak aktif tidak.

Perhatikan bahwa course tabel diberi nama course:Course details . Ini karena saya telah menggunakan course tabel lagi di tempat lain untuk membuat model lebih jelas. Untuk melakukan ini, saya menggunakan opsi “Salin” dan “Tempel sebagai pintasan” Vertabelo.

Setiap kursus terdiri dari beberapa bab. Di Coursera, siswa biasanya memiliki waktu seminggu untuk menyelesaikan setiap bab. Daftar semua subbagian atau bab kursus disimpan di chapter meja. course_id atribut adalah referensi ke course meja; chapter_no adalah nomor urut bab dalam kursus itu. Kedua atribut ini bersama-sama membentuk kunci alternatif dari tabel. Atribut terakhir, description , menyimpan deskripsi terperinci untuk setiap bab.

Setiap bab terdiri dari video ceramah, bacaan, kuis, tes, dan proyek. Kami tidak akan membuat struktur terpisah dalam database untuk menyimpan jenis material yang berbeda. Sebagai gantinya, kami akan menyimpan tautan ke materi ini. Dan di situlah material tabel masuk. Atribut dalam tabel ini adalah:

  • chapter_id – referensi ke bab terkait
  • material_no – nomor urut yang ditetapkan untuk berbagai materi bab. Bersama dengan chapter_id atribut, atribut ini membentuk kunci alternatif (unik) tabel.
  • material_type_id – adalah referensi ke material_type meja
  • mandatory – nilai boolean yang menunjukkan jika materi diperlukan atau opsional (yaitu untuk kredit tambahan)
  • max_points – jumlah poin maksimum yang dapat dicapai siswa setelah menyelesaikan materi ini. Jika tidak ada poin yang diberikan, kami hanya akan menggunakan “0” sebagai nilainya.

material_type tabel adalah kamus dari semua jenis material yang mungkin. Satu-satunya atribut di samping kunci utama adalah type_name dan tentu saja harus hanya berisi nilai-nilai unik. Beberapa jenis materi yang diharapkan adalah “kuliah video” , “membaca” , “kuis” , “ujian” , “ujian akhir” dan “tugas proyek” .

on_course tabel menghubungkan setiap mata kuliah dengan dosen yang mengajar mata kuliah tersebut. Ini hanya berisi kunci utama dan pasangan kunci asing (lecturer_id dan course_id ). Pasangan kunci asing membentuk kunci unik untuk tabel.

Dengan cara yang sama, course_created_by menghubungkan kursus dengan semua institusi yang terlibat dalam pembuatannya.

Spesialisasi

Kursus mandiri memang bagus, tetapi untuk menguasai keterampilan baru, Anda memerlukan lebih dari satu kursus. Spesialisasi adalah langkah ke arah itu. Mereka adalah serangkaian kursus, seringkali empat atau lima, dan proyek akhir di mana Anda dapat menerapkan keterampilan yang telah Anda pelajari. Semua tabel terkait spesialisasi ada di Specialization details daerah.

specialization tabel adalah tabel pusat dari bagian ini. Untuk setiap spesialisasi, kami akan menyimpan name yang unik dan description . specialization_discount adalah jumlah yang akan dihemat siswa jika mereka mendaftar di seluruh spesialisasi daripada di kursus mandiri secara individual. Seperti sebelumnya, kode active atribut adalah sakelar hidup/mati sederhana yang menunjukkan apakah spesialisasi akan memiliki sesi mendatang atau tidak.

Perhatikan bahwa specialization tabel juga muncul dua kali dalam model kami. Di dalam area ini, namanya specialization:Specialization details .

on_specialization dan specialization_created_by tabel memiliki tujuan yang sama dan mengikuti logika yang sama dengan on_course dan course_created_by tabel. Tentu saja, kali ini mereka akan menangani spesialisasi daripada kursus.

Siswa

Dan akhirnya kita sampai pada bagian mahasiswa. Dalam Student participation area, kami akan menyimpan catatan siswa, sesi, dan penampilan siswa.

Setiap kursus dan spesialisasi dapat memiliki lebih dari satu sesi, jadi kita perlu menyimpan kapan setiap kursus dan spesialisasi dimulai dan kapan berakhir. Untuk kursus, ini sangat sederhana. Setiap sesi baru hanyalah contoh baru dari kursus yang sama. Sesi spesialisasi baru adalah contoh baru dari seluruh spesialisasi dan semua programnya.

Ingatlah bahwa siswa dapat mendaftar di satu kursus dari satu spesialisasi atau semuanya. course_sessions dan specialization_session tabel memberi kami informasi itu. Selain tanggal, mereka hanya berisi kunci asing ke course dan specialization_table tabel. Tanggal mulai kunci asing pair membentuk kunci unik di kedua tabel.

Sesi kursus juga dapat menjadi bagian dari sesi spesialisasi, jadi kita perlu menambahkan kunci asing (tidak wajib).

status kamus mencantumkan semua kemungkinan status yang terkait dengan kinerja siswa selama kursus. Beberapa kemungkinan status “putus” , “lulus” dan “gagal” .

Kami akan menggunakan enrolled_course tabel untuk menyimpan setiap pendaftaran dalam setiap sesi kursus. Tabel ini berisi dua kunci asing, student_id dan course_session_id , dan bersama-sama mereka membentuk kunci alternatif (unik) untuk tabel. Atribut lain dalam tabel adalah:

  • enrollment_date – tanggal ketika seorang siswa mendaftar di kursus tersebut
  • status_id – referensi ke status kamus; ini merekam performa siswa di mata kuliah tersebut
  • status_date – tanggal saat status ditetapkan
  • final_grade – nilai (sebagai persentase) yang dicapai siswa untuk kursus tersebut
  • certificate_ID – nomor identifikasi sertifikat yang dihasilkan platform saat siswa lulus kursus
  • certificate_location – tautan ke lokasi persis tempat sertifikat disimpan

enrolled_specialization tabel mengikuti logika yang sama seperti enrolled_course meja. Perbedaannya adalah bahwa ini menghubungkan siswa dengan spesialisasi daripada kursus.

Kami akan menggunakan student_results meja untuk menyimpan penampilan siswa pada materi pelajaran tertentu. Untuk setiap materi (material_id ) dan setiap pendaftaran siswa (enrolled_course_id ) kita bisa memiliki lebih dari satu upaya. Oleh karena itu, attempt atribut adalah nomor urut usaha setiap siswa. Ketiga atribut ini bersama-sama membentuk kunci alternatif dari tabel.

Dalam tabel ini, attempt_link adalah lokasi setiap contoh tes atau proyek yang diajukan oleh siswa. Kita dapat berasumsi bahwa untuk setiap upaya kita akan menghasilkan tes "baru" dengan pertanyaan yang dipilih secara acak. Jika materi tidak memerlukan jawaban siswa, maka tautan tidak akan ada dan kami akan menyimpan nilai NULL di sini.

Terakhir, student_results tabel menyimpan ketika seorang siswa started dan ended percobaan dan score tercapai. Itu juga dapat menyimpan hasil kinerja pada tugas yang tidak dinilai serta merekam video mana yang mereka tonton dan kapan, materi mana yang mereka baca, dll.

Lembaga

institution tabel adalah katalog sederhana yang berisi daftar semua institusi yang membuat kursus atau yang dosennya terlibat dalam kursus.

Dosen

Kita bisa pergi dengan tabel yang lebih rinci di sini, tetapi menyimpan nama depan dan belakang setiap dosen, gelar, dan nama universitas mereka sudah cukup untuk tujuan kita. Tidak heran, semua ini disimpan di lecturer tabel.

Siswa

Saya akan menyelesaikan ringkasan tabel dengan student meja. Sekali lagi, kita hanya membutuhkan atribut dasar di sini, dan atribut tersebut harus cukup jelas.

Bagaimana Kami Dapat Meningkatkan Model Ini?

Model ini mendukung fungsionalitas dasar yang diperlukan untuk membuat platform MOOC. Namun, Anda mungkin dapat dengan mudah memikirkan banyak tambahan yang berguna. Berikut adalah beberapa yang saya buat:

  • Bahasa kursus dan subtitel untuk video ceramah
  • Penilaian mesin
  • Siswa meninjau dan menilai tugas satu sama lain
  • Bantuan keuangan
  • Opsi yang memungkinkan siswa untuk melanjutkan kursus setelah putus sekolah

Perlu juga disebutkan bahwa, menurut Wikipedia “... Server database Coursera (berjalan di RDS) menjawab 10 miliar kueri SQL, dan Coursera melayani sekitar 500 TB lalu lintas per bulan.” Ini terjadi pada tahun 2013. Model basis data MOOC yang sebenarnya mungkin terlihat seperti yang disajikan dalam artikel ini, tetapi masih banyak pekerjaan yang harus dilakukan pada pemodelan dan infrastruktur!

Pada artikel ini saya mencoba menunjukkan kompleksitas model yang ada di balik platform MOOC. Saya fokus terutama pada Coursera dan edX sebagai contoh saya. Model ini berisi 18 tabel, tetapi hanya menggores permukaan. Jangan ragu untuk berkomentar dan berbagi peningkatan yang akan Anda terapkan dalam model. Jika menurut Anda saya melewatkan sesuatu yang penting, beri tahu saya!

Suka belajar online? Cobalah LearnSQL.com – kursus SQL interaktif, tersedia di browser Anda.


  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, Menangani sel kosong

  2. Pemindaian Urutan Alokasi

  3. SQL ANTARA-Tips Cerdas untuk Memindai Rentang Nilai

  4. Tugas Postgres Umum di CentOS 7

  5. Tingkat Kompatibilitas dan Estimasi Kardinalitas Primer