wiki:erd

Version 9 (modified by 231175, 2 days ago) ( diff )

--

ЕР Дијаграм

No image "shifter_er.png" attached to erd


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

Ентитети

  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[], задолжително)
  1. Expert – ентитет кој чува податоци за експертот
    • expert_id (primary key, bigint)
    • email (string, задолжително)
    • password_hash (string, задолжително)
    • name (string, задолжително)
  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)
    • language (string, задолжително)
    • descriptionShort(string, задолжително)
    • description (string, задолжително)
    • descriptionLong (string, задолжително)
    • titleShort (string, задолжително)
    • title (string, задолжително)
    • whatWillBeLearned (string[], задолжително)
    • course_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)
    • language (string, задолжително)
    • title(string, задолжително)
    • course_content_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)
    • language (string, задолжително)
    • contentFileName (string, задолжително)
    • contentText (string, задолжително)
    • description (string, задолжително)
    • title (string, задолжително)
    • course_lecture_id (foreign_key, bigint)
  1. User Course Progress – ентитет кој чува податоци за прогресот на корисник за лекција на одреден курс
    • user_course_progress_id (primary key, bigint)
    • isCompleted (boolean, задолжително)
    • completedAt (date, задолжително)
    • course_lecture_id (foreign_key, bigint)
    • enrollment_id (foreign_key, bigint)
  1. Verification Token – ентитет кој чува податоци за токените кои се креирани за корисници да го верифицираат нивниот мејл
    • verification_token_uuid (primary key, uuid)
    • expiresAt (date, задолжително)
    • createdAt (date, задолжително)
    • 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)
    • language (enum {en, mk}, задолжително)
    • value (string, задолжително)
    • tag_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. has (USER ↔ VERIFICATION_TOKEN, 1:1) Секој User има точно еден Verification_Token. Секој Verification_Token припаѓа точно на еден User.
  1. enrolls (USER ↔ ENROLLMENT, 1:N) Еден User може да има повеќе Enrollments. Секое Enrollment припаѓа на точно еден User.
  1. has (PAYMENT ↔ ENROLLMENT, 1:1) Секоја инстанца на Payment има точно една инстанца на Enrollment. Секоја инстанца на Enrollment може да припаѓа на точно една инстанца на Payment.
  1. has (REVIEW ↔ ENROLLMENT, 1:1) Секоја инстанца на Review има точно една инстанца на Enrollment. Секоја инстанца на Enrollment може да припаѓа на точно една инстанца на Review.
  1. has (ENROLLMENT ↔ COURSE_VERSION, N:1) Секоја инстанца на Enrollment има точно една инстанца на Course_Version. Една инстанца на Course_Version може да биде дел од повеќе инстанци на Enrollment.
  1. has (COURSE ↔ COURSE_VERSION, 1:N) Една инстанца на Course може да има повеќе инстанци на Course_Version. Секоја инстанца на Course_Version припаѓа на точно една инстанца на Course.
  1. isTranslatedInto (COURSE_VERSION ↔ COURSE, N:1) Секоја инстанца на Course_Translate припаѓа на точно една инстанца на Course. Една инстанца на Course може да има повеќе инстанци на Course_Translate.
  1. has (COURSE_VERSION ↔ COURSE_CONTENT, 1:N) Една инстанца на CourseVersion може да има повеќе инстанци на Course_Content. Секоја инстанца на Course_Content припаѓа на точно една инстанца на CourseVersion.
  1. isTranslatedInto (COURSE_CONTENT ↔ COURSE_CONTENT_TRANSLATE, 1:N) Една инстанца на Course_Content може да има повеќе инстанци на Course_Content_Translate. Секоја инстанца на Course_Content_Translate припаѓа на точно една инстанца на Course_Content.
  1. has (COURSE_CONTENT ↔ COURSE_LECTURE, 1:N) Една инстанца на Course_Content може да има повеќе инстанци на Course_Lecture. Секоја инстанца на Course_Lecture припаѓа на точно една инстанца на Course_Content.
  1. isTranslatedInto (COURSE_LECTURE ↔ COURSE_LECTURE_TRANSLATE, 1:N) Една инстанца на Course_Lecture може да има повеќе инстанци на Course_Lecture_Translate. Секоја инстанца на Course_Lecture_Translate припаѓа на точно една инстанца на Course_Lecture.
  1. has progress (CourseLecture 1 ──< UserCourseProgress >── 1 Enrollment) Секоја инстанца на User_Course_Progress се однесува на точно една инстанца на Course_Lecture и точно една инстанца на Enrollment. Една инстанца на Course_Lecture може да биде поврзана со повеќе инстанци на User_Course_Progress. Една инстанца на Enrollment може да биде поврзана со повеќе инстанци на User_Course_Progress.
  1. has (USER ↔ TAG, N:N) Секој User може да има повеќе TAG-ови. Секој TAG може да има повеќе User-и.
  1. has (COURSE ↔ TAG, N:N) Секој User може да има повеќе TAG-ови. Секој TAG може да има повеќе User-и.
  1. has (TAG ↔ TAG_TRANSLATION, 1:N) Секој TAG може да има повеќе Tag_Translation. Секој Tag_Translation припаѓа на точно на еден TAG.

Attachments (1)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.