wiki:ERModel

Version 18 (modified by 231175, 27 hours ago) ( diff )

--

ЕР Дијаграм

No image "shifter_er_diagram.drawio.png" attached to ERModel


Податочни побарувања

Ентитети

  1. Account – ентитет кој чува универзални податоци за секој корисник (обичен или експерт)
    • id (primary key, bigint)
    • email (string, задолжително)
    • password_hash (string, задолжително)
    • name (string, задолжително)
  1. User – ентитет кој чува податоци за крајните корисници (клиенти)
    • user_id (primary key, bigint)
    • name (string, задолжително)
    • email (string, задолжително)
    • password_hash (string, задолжително)
    • loginProvider (enum {local, google}, задолжително)
    • isVerified(boolean, задолжително - за мејл верификација)
    • isProfileComplete (boolean, задолжително - за персонализирање на профил)
    • hasUsedFreeConsultation (boolean, задолжително)
    • workPosition (string, задолжително)
    • companySize (enum {freelance, micro, small, medium, mid_market, enterprise, other}, задолжително)
    • points (int, задолжително)
    • favoriteCourseIds (int[], задолжително)
    • account_id (foreign key, bigint)
  1. Expert – ентитет кој чува податоци за експертот
    • expert_id (primary key, bigint)
    • account_id (foreign key, bigint)
  1. Enrollment – ентитет кој чува податоци за превземање на курс од страна на клиент
    • enrollment_id (primary key, bigint)
    • enrollmentStatus (enum {pending, active, completed}, задолжително)
    • activationDate (date, задолжително)
    • completionDate (date, задолжително)
    • purchaseDate (date, задолжително)
    • user_id (foreign key, bigint)
    • course_version_id (foreign key, bigint)
  1. Payment – ентитет кој чува податоци за наплатата на корисниците за курс
    • payment_id (primary key, bigint)
    • ammount(double, задолжително)
    • paymentDate (date, задолжително)
    • paymentMethod (enum {card, paypal, casys}, задолжително)
    • paymentStatus (enum {pending, completed, failed}, задолжително)
    • enrollmend_id (foreign_key, bigint)
  1. Review – ентитет кој чува податоци за оценките и коментарите за курс
    • review_id (primary key, bigint)
    • rating (int, задолжително)
    • comment (string, задолжително)
    • reviewDate (date, задолжително)
    • enrollmend_id (foreign_key, bigint)
  1. Course Version – ентитет кој чува податоци за верзиите на курсеви
    • course_version_id (primary key, bigint)
    • versionNumber (int, задолжително)
    • createdAt (date, задолжително)
    • isActive (boolean, задолжително)
    • course_id (foreign_key, bigint)
  1. Course – ентитет кој чува податоци за курсевите
    • course_id (primary key, bigint)
    • color (string, задолжително)
    • difficulty (enum {beginner, intermediate, advanced, expert}, задолжително)
    • durationMinutes (int, задолжително)
    • imageUrl (string, задолжително)
    • prica (double, задолжително)
  1. Course Translate – ентитет кој чува податоци за различните преведувања за одреден курс
    • course_translate_id (primary key, bigint)
    • descriptionShort(string, задолжително)
    • description (string, задолжително)
    • descriptionLong (string, задолжително)
    • titleShort (string, задолжително)
    • title (string, задолжително)
    • whatWillBeLearned (string[], задолжително)
    • course_id (foreign_key, bigint)
    • language_id (foreign_key, bigint)
  1. Course Content – ентитет кој чува податоци за различните модули за одреден курс
    • course_content_id (primary key, bigint)
    • position (int, задолжително)
    • course_version_id (foreign_key, bigint)
  1. Course Content Translate – ентитет кој чува податоци за различните преводи на модули за одреден курс
    • course_content_translate_id (primary key, bigint)
    • title(string, задолжително)
    • course_content_id (foreign_key, bigint)
    • language_id (foreign_key, bigint)
  1. Course Lecture – ентитет кој чува податоци за различните лекции за одреден модул на курс
    • course_lecture_id (primary key, bigint)
    • position(int, задолжително)
    • durationMinutes (int, задолжително)
    • contentType (enum {text, file, video, quiz}, задолжително)
    • course_content_id (foreign_key, bigint)
  1. Course Lecture Translate – ентитет кој чува податоци за различните преведувања за лекции за одреден модул на курс
    • course_lecture_translate_id (primary key, bigint)
    • contentFileName (string, задолжително)
    • contentText (string, задолжително)
    • description (string, задолжително)
    • title (string, задолжително)
    • course_lecture_id (foreign_key, bigint)
    • language_id (foreign_key, bigint)
  1. User Course Progress – ентитет кој чува податоци за прогресот на корисник за лекција на одреден курс
    • user_course_progress_id (primary key, bigint)
    • isCompleted (boolean, задолжително)
    • completedAt (timestamp, задолжително)
    • course_lecture_id (foreign_key, bigint)
    • enrollment_id (foreign_key, bigint)
  1. Verification Token – ентитет кој чува податоци за токените кои се креирани за корисници да го верифицираат нивниот мејл
    • verification_token_uuid (primary key, uuid)
    • expiresAt (timestamp, задолжително)
    • createdAt (timestamp, задолжително)
    • user_id (foreign_key, bigint)
  1. Tag – ентитет кој чува податоци за тагови (вештини и интереси) кои се мапираат за корисници и курсеви
    • tag_id (primary key, bigint)
    • tagType (enum {skill, topic}, задолжително)
  1. Tag Translate – ентитет кој чува податоци за различни преведувања за секој од таговите (вештини и интереси)
    • tag_translate_id (primary key, bigint)
    • value (string, задолжително)
    • tag_id (foreign_key, bigint)
    • language_id (foreign_key, bigint)
  1. User Tag – слаб ентитет кој чува податоци за таговите (вештини и интереси) за секој корисник
    • tag_id (foreign_key, bigint)
    • user_id (foreign_key, bigint)
  1. Course Tag – слаб ентитет кој чува податоци за таговите (вештини и интереси) за секој курс
    • tag_id (foreign_key, bigint)
    • course_id (foreign_key, bigint)
  1. Meeting Email Reminder – ентитет кој чува податоци за на кои корисници треба да им се испрати потсетник на нивната емаил адреса
    • id (primary key, bigint)
    • meting_at (timestamp, задолжително)
    • scheduled_at (timestamp, задолжително)
    • sent (boolean, задолжително)
    • meeting_ling (string, задолжително)
    • user_id (foreign_key, bigint)
  1. User Favorite Course – ентитет кој чува податоци за омилени курсеви на корисници
    • id (primary key, bigint)
    • user_id (foreign_key, bigint)
    • course_id (foreign_key, bigint)
  1. Language – ентитет кој чува јазици
    • id (primary key, bigint)
    • value (string, задолжително)

Релации

  1. user_has_verification_token (USER ↔ VERIFICATION_TOKEN, 1:1)
    Секој User има точно еден Verification_Token.
    Секој Verification_Token припаѓа точно на еден User.
  1. user_is_enrolled (USER ↔ ENROLLMENT, 1:N)
    Еден User може да има повеќе Enrollments.
    Секое Enrollment припаѓа на точно еден User.
  1. payment_for_enrollment (PAYMENT ↔ ENROLLMENT, 1:1)
    Секоја инстанца на Payment има точно една инстанца на Enrollment.
    Секоја инстанца на Enrollment може да припаѓа на точно една инстанца на Payment.
  1. review_for_enrollment (REVIEW ↔ ENROLLMENT, 1:1)
    Секоја инстанца на Review има точно една инстанца на Enrollment.
    Секоја инстанца на Enrollment може да припаѓа на точно една инстанца на Review.
  1. enrollment_for_course_version (ENROLLMENT ↔ COURSE_VERSION, N:1)
    Секоја инстанца на Enrollment има точно една инстанца на Course_Version.
    Една инстанца на Course_Version може да биде дел од повеќе инстанци на Enrollment.
  1. version_for_course (COURSE ↔ COURSE_VERSION, 1:N)
    Една инстанца на Course може да има повеќе инстанци на Course_Version.
    Секоја инстанца на Course_Version припаѓа на точно една инстанца на Course.
  1. translation_for_course (COURSE_TRANSLATE ↔ COURSE, N:1)
    Секоја инстанца на Course_Translate припаѓа на точно една инстанца на Course.
    Една инстанца на Course може да има повеќе инстанци на Course_Translate.
  1. content_for_version (COURSE_VERSION ↔ COURSE_CONTENT, 1:N)
    Една инстанца на Course_Version може да има повеќе инстанци на Course_Content.
    Секоја инстанца на Course_Content припаѓа на точно една инстанца на Course_Version.
  1. translation_for_content (COURSE_CONTENT ↔ COURSE_CONTENT_TRANSLATE, 1:N)
    Една инстанца на Course_Content може да има повеќе инстанци на Course_Content_Translate.
    Секоја инстанца на Course_Content_Translate припаѓа на точно една инстанца на Course_Content.
  1. lecture_for_content (COURSE_CONTENT ↔ COURSE_LECTURE, 1:N)
    Една инстанца на Course_Content може да има повеќе инстанци на Course_Lecture.
    Секоја инстанца на Course_Lecture припаѓа на точно една инстанца на Course_Content.
  1. translation_for_lecture (COURSE_LECTURE ↔ COURSE_LECTURE_TRANSLATE, 1:N)
    Една инстанца на Course_Lecture може да има повеќе инстанци на Course_Lecture_Translate.
    Секоја инстанца на Course_Lecture_Translate припаѓа на точно една инстанца на Course_Lecture.
  1. has_progress (COURSE_LECTURE 1 ──< USER_COURSE_PROGRESS >── 1 ENROLLMENT)
    Секоја инстанца на User_Course_Progress се однесува на точно една инстанца на Course_Lecture и точно една инстанца на Enrollment.
    Една инстанца на Course_Lecture може да биде поврзана со повеќе инстанци на User_Course_Progress.
    Една инстанца на Enrollment може да биде поврзана со повеќе инстанци на User_Course_Progress.
  1. course_tags (COURSE ↔ TAG, N:N)
    Секој COURSE мора да има барем еден TAG.
    Секој TAG мора да има барем еден COURSE.
  1. user_tags (USER ↔ TAG, N:N)
    Секој User може да има повеќе TAG-ови.
    Секој TAG може да има припаѓа на повеќе User-и.
  1. translation_for_tag (TAG ↔ TAG_TRANSLATION, 1:N)
    Секој TAG може да има повеќе Tag_Translation.
    Секој Tag_Translation припаѓа на точно на еден TAG.
  1. expert_course (EXPERT ↔ COURSE, N:N)
    Секој Expert може да има повеќе Course.
    Секој Course мора да има барем еден Expert.
  1. user_has_reminder (USER ↔ MEETING_EMAIL_REMINDER, 1:N)
    Секој User може да има повеќе Meeting_Email_Reminder.
    Секој Meeting_Email_Reminder мора да има барем еден User.
  1. user_is_favoriting (USER ↔ USER_FAVORITE_COURSE, 1:N)
    Секој User може да има повеќе User_Favorite_Course.
    Секој User_Favorite_Course мора да има барем еден User.
  1. course_is_favorited (COURSE ↔ USER_FAVORITE_COURSE, 1:N)
    Секој Course може да има повеќе User_Favorite_Course.
    Секој User_Favorite_Course мора да има барем еден Course.
  1. language_for_tag_translate (LANGUAGE ↔ TAG_TRANSLATE, 1:N)
    Секој Language може да има повеќе Tag_Translate.
    Секој Tag_Translate мора да има барем еден Language.
  1. language_for_course_translate (LANGUAGE ↔ COURSE_TRANSLATE, 1:N)
    Секој Language може да има повеќе Course_Translate.
    Секој Course_Translate мора да има барем еден Language.
  1. language_for_content_translate (LANGUAGE ↔ COURSE_CONTENT_TRANSLATE, 1:N)
    Секој Language може да има повеќе Course_Content_Translate.
    Секој Course_Content_Translate мора да има барем еден Language.
  1. language_for_lecture_translate (LANGUAGE ↔ COURSE_LECTURE_TRANSLATE, 1:N)
    Секој Language може да има повеќе Course_Lecture_Translate.
    Секој Course_Lecture_Translate мора да има барем еден Language.

Attachments (1)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.