Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Mô hình cơ sở dữ liệu cho nền tảng MOOC

Nếu bạn điều hành một nền tảng học tập trực tuyến MOOC như edX hoặc Coursera, bạn sẽ tổ chức nó như thế nào? Trong bài viết này, chúng ta sẽ xem xét một mô hình cơ sở dữ liệu sẽ thực hiện công việc.

Có thể bạn đã nghe nói về MOOC (Khóa học trực tuyến mở rộng rãi), một cách học trực tuyến thịnh hành. Và nếu bạn chưa có, hãy nghĩ về chương trình MOOC như các môn học đại học với tất cả tài liệu, bài kiểm tra và phản hồi đều có sẵn trực tuyến. Hai trong số các nhà cung cấp MOOC trực tuyến phổ biến nhất là Coursera (do Đại học Stanford thành lập) và edX (do Viện Công nghệ Massachusetts và Đại học Harvard thành lập). Phối hợp với các trường đại học và đối tác khác, họ cung cấp hàng trăm khóa học cho hàng triệu người học trên khắp thế giới.

Trong bài viết này, chúng ta sẽ thảo luận về phiên bản đơn giản hóa của mô hình cơ sở dữ liệu mà chúng ta có thể sử dụng để chạy loại dịch vụ này. Đầu tiên, hãy nói về cách MOOC thực sự hoạt động từ góc độ phi kỹ thuật.

Nền tảng MOOC hoạt động như thế nào?

Cá nhân tôi đã sử dụng Coursera và tôi rất hài lòng với nó. Do đó, nhận xét của tôi trong bài viết này chủ yếu liên quan đến mô hình của Coursera, mặc dù tôi tin rằng edX tuân theo một mô hình tương tự.

Mô hình kinh doanh là gì?

Ý tưởng rất đơn giản. Các đối tác - chủ yếu là các trường đại học - tạo tài liệu cho các khóa học trực tuyến, thường dựa trên các dịch vụ trong khuôn viên trường của họ. Những tài liệu này có thể bao gồm video bài giảng, bài đọc, câu đố, thảo luận, dự án, bài kiểm tra trực tuyến và đôi khi là bài tập cuối kỳ. Phần lớn tài liệu dựa trên video, vì vậy người học có được “cảm ứng của con người”. Tôi thích một số khóa học không chỉ vì những gì được giảng dạy mà còn vì các giảng viên.

Học sinh cần xem hoặc đọc tài liệu được cung cấp, hoàn thành bài tập, trả lời câu đố và làm bài kiểm tra. Thông thường cũng có một hoặc nhiều bài tập dự án và điểm từ tất cả các bài tập này sẽ tạo nên điểm tổng kết. Nếu điểm tổng kết của họ trên một số điểm nhất định (ví dụ:70%) học sinh vượt qua khóa học và nhận được chứng chỉ. Một số chứng chỉ là miễn phí; những người khác yêu cầu một khoản thanh toán tương đối nhỏ. Đối với các khóa học cũng vậy.

Các khóa học liên quan có thể được tổ chức thành các thực thể lớn hơn được gọi là các chuyên ngành. Hoàn thành chuyên môn mang lại cho sinh viên một chứng chỉ khác (cũng như một bộ kỹ năng hoàn thiện hơn) và có thể ít tốn kém hơn so với việc hoàn thành từng khóa học riêng biệt.

Tất cả các khóa học và chuyên ngành có thể có các buổi học khác nhau. Một số sẽ có phiên mới mỗi tháng, trong khi những người khác sẽ có một phiên mới mỗi năm. Ngoài ra còn có các khóa học được cung cấp theo yêu cầu.

Chứng chỉ trực tuyến chưa có trọng lượng như chứng chỉ đại học, nhưng họ khao khát có được. Một số khóa học đã được chấp thuận cho tín chỉ đại học và các chương trình học trực tuyến cũng đã trở thành hiện thực.

Có bao nhiêu đối tác, khóa học và sinh viên?

Câu trả lời đơn giản là "rất nhiều". Các khóa học được tính bằng hàng nghìn, đối tác tính bằng hàng trăm và hàng triệu sinh viên - đến từ hầu hết các quốc gia trên thế giới.

Chúng ta có thể mong đợi những thay đổi nào đối với MOOC?

Điều tuyệt vời về MOOC là chúng có thể nhanh chóng thích ứng với sự thay đổi. Chúng không bị giới hạn bởi các quy định của tiểu bang hoặc trường đại học và không phải đợi phê duyệt. Điều đó rất quan trọng, đặc biệt là đối với các khóa học liên quan đến CNTT. Một số khóa học và chuyên môn sẽ không có phiên mới:các khóa học mới khác sẽ xuất hiện và các khóa học hiện có sẽ được cập nhật nhiều lần.

Mô hình cơ sở dữ liệu MOOC




Tôi đã chia mô hình dữ liệu MOOC thành ba lĩnh vực chủ đề:

  • Course details
  • Specialization details
  • Student participation

Và có ba bảng độc lập:

  • institution
  • lecturer
  • student

Các bảng độc lập được sử dụng làm nguồn dữ liệu cho các bảng khác nhau trong các lĩnh vực chủ đề. Vì các lĩnh vực chủ đề chứa hầu hết logic, trước tiên tôi sẽ giải thích chúng và sau đó chuyển sang các bảng độc lập.

Các khóa học và tài liệu

Mặc dù mọi người thường là phần quan trọng nhất của bất kỳ giao dịch nào, nhưng tôi sẽ đưa ra một ngoại lệ ở đây. Nếu không có tài liệu khóa học, sẽ không có khóa học nào và do đó không có hứng thú với nền tảng MOOC của chúng tôi. Trong “Chi tiết khóa học”, tôi đã nhóm tất cả các bảng mô tả các khóa học, tổ chức liên quan, đối tác và tài liệu.

Bảng quan trọng nhất trong phần này là course bàn. Các thuộc tính là:

  • name - một tên khóa học duy nhất
  • commitment - mô tả bằng văn bản về cam kết có thể xảy ra, ví dụ:“5 tuần học, 5-7 giờ / tuần”
  • description - mô tả về khóa học
  • specialization_id - tham chiếu đến chuyên môn liên quan, nếu có. Các khóa học chỉ có thể là một phần của một chuyên ngành. Một số khóa học không liên kết với bất kỳ chuyên ngành nào nên thuộc tính này không bắt buộc.
  • min_grade - điểm tối thiểu cần thiết để vượt qua một khóa học. Thông thường điều đó sẽ được đo dưới dạng phần trăm. Trên hầu hết các khóa học Coursera, con số này là 70%.
  • course_price - khoản phí bạn sẽ trả cho một khóa học.
  • active - một công tắc bật / tắt cho biết liệu một khóa học sẽ có các phiên trong tương lai hay không. Các khóa học đang hoạt động sẽ có các phiên mới, trong khi các khóa học không hoạt động thì không.

Lưu ý rằng course bảng được đặt tên là course:Course details . Điều này là do tôi đã sử dụng course bảng lại ở nơi khác để làm cho mô hình rõ ràng hơn. Để thực hiện việc này, tôi đã sử dụng các tùy chọn "Sao chép" và "Dán dưới dạng phím tắt" của Vertabelo.

Mỗi khóa học bao gồm một vài chương. Trong Coursera, sinh viên thường có một tuần để hoàn thành mỗi chương. Danh sách tất cả các tiểu mục hoặc chương của khóa học được lưu trữ trong chapter bàn. course_id thuộc tính là một tham chiếu đến course bàn; chapter_no là số thứ tự của một chương trong khóa học đó. Hai thuộc tính này cùng nhau tạo thành khóa thay thế của bảng. Thuộc tính cuối cùng, description , lưu trữ mô tả chi tiết cho từng chương.

Mỗi chương bao gồm các bài giảng video, bài đọc, câu đố, bài kiểm tra và dự án. Chúng tôi sẽ không tạo các cấu trúc riêng biệt trong cơ sở dữ liệu để lưu trữ các loại vật liệu khác nhau. Thay vào đó, chúng tôi sẽ lưu trữ các liên kết đến những tài liệu này. Và đó là nơi chứa material bảng đi kèm. Các thuộc tính trong bảng này là:

  • chapter_id - tham chiếu đến chương liên quan
  • material_no - số thứ tự được gán cho các tài liệu chương khác nhau. Cùng với chapter_id , thuộc tính này tạo thành khóa thay thế (duy nhất) của bảng.
  • material_type_id - là tham chiếu đến material_type bảng
  • mandatory - giá trị boolean biểu thị nếu vật liệu là bắt buộc hay tùy chọn (tức là thêm tín dụng)
  • max_points - số điểm tối đa mà học sinh có thể đạt được sau khi hoàn thành tài liệu này. Nếu không có điểm nào được thưởng, chúng tôi sẽ chỉ sử dụng "0" làm giá trị.

material_type bảng là một từ điển của tất cả các loại vật liệu có thể có. Thuộc tính duy nhất bên cạnh khóa chính là type_name và tất nhiên nó phải chỉ chứa các giá trị duy nhất. Một số loại tài liệu mong đợi là “video bài giảng” , “đọc” , “câu đố” , “kiểm tra” , “bài kiểm tra cuối cùng” “chuyển nhượng dự án” .

on_course bảng liên hệ từng khóa học với (các) giảng viên đang giảng dạy khóa học đó. Nó chỉ chứa khóa chính và một cặp khóa ngoại (lecturer_idcourse_id ). Cặp khóa ngoại tạo thành khóa duy nhất cho bảng.

Theo cách tương tự, course_created_by liên hệ một khóa học với tất cả các tổ chức đã tham gia vào việc tạo ra khóa học đó.

Chuyên môn

Các khóa học độc lập là rất tốt, nhưng để thành thạo một kỹ năng mới, bạn sẽ cần nhiều khóa học. Các chuyên ngành là một bước đi theo hướng đó. Đó là một loạt các khóa học, thường là bốn hoặc năm khóa học và là một dự án cuối cùng, nơi bạn có thể áp dụng các kỹ năng đã học. Tất cả các bảng liên quan đến chuyên môn đều có trong Specialization details khu vực.

specialization bảng là bảng trung tâm của phần này. Đối với mỗi chuyên môn, chúng tôi sẽ lưu trữ một name duy nhất và description . specialization_discount là số tiền mà một sinh viên sẽ tiết kiệm được nếu họ đăng ký vào toàn bộ chuyên ngành hơn là trong các khóa học độc lập riêng lẻ. Như trước đây, active thuộc tính là một công tắc bật / tắt đơn giản cho biết liệu chuyên ngành sẽ có các phiên trong tương lai hay không.

Lưu ý rằng specialization bảng cũng xuất hiện hai lần trong mô hình của chúng tôi. Bên trong khu vực này, nó được đặt tên là specialization:Specialization details .

on_specializationspecialization_created_by các bảng có cùng mục đích và tuân theo cùng một logic như on_coursecourse_created_by những cái bàn. Tất nhiên, lần này họ sẽ xử lý các chuyên ngành hơn là các khóa học.

Sinh viên

Và cuối cùng chúng ta đến với phần học sinh. Trong Student participation khu vực này, chúng tôi sẽ lưu trữ hồ sơ về học sinh, các phiên và kết quả hoạt động của học sinh.

Mỗi khóa học và chuyên ngành có thể có nhiều hơn một phiên, vì vậy chúng tôi sẽ cần lưu trữ thời điểm bắt đầu của mỗi khóa học và chuyên ngành cũng như thời điểm kết thúc. Đối với các khóa học, nó rất đơn giản. Mỗi phiên mới chỉ là một phiên bản mới của cùng một khóa học. Một phiên chuyên môn mới là một phiên bản mới của toàn bộ chuyên môn và tất cả các khóa học của nó.

Hãy nhớ rằng sinh viên có thể đăng ký một khóa học từ một chuyên ngành hoặc tất cả chúng. course_sessionsspecialization_session bảng cung cấp cho chúng tôi thông tin đó. Ngoài ngày tháng, chúng chỉ chứa các khóa ngoại đối với coursespecialization_table những cái bàn. Ngày bắt đầu khóa nước ngoài cặp tạo thành khóa duy nhất trong cả hai bảng.

Các phiên khóa học cũng có thể là một phần của các phiên chuyên môn, vì vậy chúng tôi sẽ cần thêm khóa ngoại (không bắt buộc).

status từ điển liệt kê tất cả các trạng thái có thể có liên quan đến kết quả học tập của học sinh trong suốt một khóa học. Một số trạng thái có thể xảy ra là “bỏ qua” , “đã qua” “không thành công” .

Chúng tôi sẽ sử dụng enrolled_course bảng để lưu trữ mọi đăng ký trong bất kỳ phiên khóa học nào. Bảng này chứa hai khóa ngoại, student_idcourse_session_id và chúng cùng nhau tạo thành khóa thay thế (duy nhất) cho bảng. Các thuộc tính khác trong bảng là:

  • enrollment_date - ngày sinh viên đăng ký khóa học đó
  • status_id - tham chiếu đến status từ điển; phần này ghi lại cách một sinh viên đã thực hiện trong khóa học đó
  • status_date - ngày mà trạng thái được chỉ định
  • final_grade - điểm (theo phần trăm) mà học sinh đạt được cho khóa học đó
  • certificate_ID - số nhận dạng chứng chỉ mà nền tảng tạo ra khi sinh viên vượt qua khóa học
  • certificate_location - một liên kết đến vị trí chính xác nơi chứng chỉ được lưu trữ

enrolled_specialization bảng tuân theo logic tương tự như enrolled_course bàn. Sự khác biệt là nó liên quan đến sinh viên với các chuyên ngành hơn là các khóa học.

Chúng tôi sẽ sử dụng student_results bảng để lưu trữ các buổi biểu diễn của học sinh trên các tài liệu khóa học cụ thể. Đối với từng vật liệu (material_id ) và đăng ký của từng sinh viên (enrolled_course_id ) chúng tôi có thể có nhiều hơn một lần thử. Do đó, attempt thuộc tính là số thứ tự của mỗi nỗ lực của học sinh. Ba thuộc tính này cùng nhau tạo thành khóa thay thế của bảng.

Trong bảng này, attempt_link là vị trí của mỗi phiên bản của các bài kiểm tra hoặc dự án do sinh viên nộp. Chúng tôi có thể giả định rằng đối với mỗi lần thử, chúng tôi sẽ tạo một bài kiểm tra “mới” với các câu hỏi được chọn ngẫu nhiên. Nếu tài liệu không yêu cầu câu trả lời của học sinh thì liên kết đó sẽ không tồn tại và chúng tôi sẽ lưu trữ giá trị NULL tại đây.

Cuối cùng, student_results bảng lưu trữ khi học sinh startedended một nỗ lực và score đạt được. Nó cũng có thể lưu trữ kết quả hoạt động của các bài tập không được chấm điểm cũng như ghi lại những video nào họ đã xem và thời điểm, những tài liệu họ đọc, v.v.

Tổ chức

institution bảng là một danh mục đơn giản liệt kê tất cả các tổ chức đã tạo ra các khóa học hoặc có giảng viên tham gia vào các khóa học.

Giảng viên

Chúng tôi có thể xem một bảng chi tiết hơn ở đây, nhưng việc lưu trữ họ và tên, chức danh và tên trường đại học của họ là đủ cho mục đích của chúng tôi. Không có gì đáng ngạc nhiên, tất cả điều này được lưu giữ trong lecturer bảng.

Sinh viên

Tôi sẽ kết thúc phần tổng quan về bảng với student bàn. Một lần nữa, chúng tôi chỉ cần các thuộc tính cơ bản ở đây và chúng phải tự giải thích.

Chúng tôi có thể cải thiện mô hình này như thế nào?

Mô hình này hỗ trợ các chức năng cơ bản cần thiết để tạo nền tảng MOOC. Tuy nhiên, bạn có thể dễ dàng nghĩ ra nhiều bổ sung hữu ích. Dưới đây là một vài điều tôi nghĩ ra:

  • Ngôn ngữ khóa học và phụ đề cho các bài giảng video
  • Phân loại máy
  • Học sinh xem xét và chấm điểm bài tập của nhau
  • Hỗ trợ tài chính
  • Một tùy chọn cho phép sinh viên tiếp tục một khóa học sau khi bỏ học

Cũng cần nhắc lại rằng, theo Wikipedia “... Các máy chủ cơ sở dữ liệu của Coursera (chạy trên RDS) trả lời 10 tỷ truy vấn SQL và Coursera phục vụ khoảng 500 TB lưu lượng truy cập mỗi tháng.” Đây là vào năm 2013. Mô hình cơ sở dữ liệu MOOC thực có thể trông giống như mô hình được trình bày trong bài viết này, nhưng còn nhiều việc phải làm trên mô hình và cơ sở hạ tầng!

Trong bài viết này, tôi đã cố gắng chỉ ra sự phức tạp của mô hình nằm sau nền tảng MOOC. Tôi chủ yếu tập trung vào Coursera và edX làm ví dụ. Mô hình này có 18 bảng, nhưng nó chỉ làm xước bề mặt. Hãy bình luận và chia sẻ những cải tiến bạn sẽ thực hiện trong mô hình. Nếu bạn nghĩ rằng tôi đã bỏ lỡ điều gì đó quan trọng, vui lòng cho tôi biết!

Thích học trực tuyến? Hãy thử LearnSQL.com - các khóa học SQL tương tác, có sẵn trong trình duyệt của bạn.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Một số cách để chèn các chuỗi phân tách được phân tách trong một cột

  2. Thống kê gia tăng KHÔNG được sử dụng bởi Trình tối ưu hoá Truy vấn

  3. Hướng dẫn Xây dựng và Triển khai Máy chủ Cơ sở dữ liệu Chung

  4. Phân trang bằng OFFSET / FETCH:Một cách tốt hơn

  5. Các vấn đề về hiệu suất:Cuộc gặp gỡ đầu tiên