Changes between Initial Version and Version 1 of erd


Ignore:
Timestamp:
11/06/25 18:59:46 (40 hours ago)
Author:
231175
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • erd

    v1 v1  
     1= ЕР Дијаграм =
     2
     3[[Image(shifter_er_diagram.png, 500px)]]
     4
     5----
     6== Податочни побарувања ==
     7
     8=== Ентитети ===
     9
     101. **User** – ентитет кој чува податоци за крајните корисници (клиенти)
     11   - user_id (primary key, bigint)
     12   - workPosition (string, задолжително)
     13   - companySize (enum {freelance, micro, small, medium, mid_market, enterprise, other}, задолжително)
     14   - points (int, задолжително)
     15   - favoriteCourses (int[], задолжително)
     16   - loginProvider (enum {local, google}, задолжително)
     17   - hasUsedFreeConsultation (boolean, задолжително)
     18   - isProfileComplete (boolean, задолжително)
     19   - isEmailVerified(boolean, задолжително)
     20   - email (string, задолжително)
     21   - password_hash (string, задолжително)
     22   - name (string, задолжително)
     23
     242. **Expert** – ентитет кој чува податоци за експертот
     25   - expert_id (primary key, bigint)
     26   - email (string, задолжително)
     27   - password_hash (string, задолжително)
     28   - name (string, задолжително)
     29
     303. **Enrollment** – ентитет кој чува податоци за превземање на курс од страна на клиент
     31   - enrollment_id (primary key, bigint)
     32   - activatedAt (date, задолжително)
     33   - completedAt (date, задолжително)
     34   - dateEnrolled (date, задолжително)
     35   - user_id (foreign key, bigint)
     36
     374. **Payment** – ентитет кој чува податоци за наплатата на корисниците за курс
     38   - payment_id (primary key, bigint)
     39   - ammount(double, задолжително)
     40   - date (date, задолжително)
     41   - paymentMethod (enum {card, paypal, casys}, задолжително)
     42   - paymentStatus (enum {pending, completed, failed}, задолжително)
     43   - enrollmend_id (foreign_key, bigint)
     44
     455. **Review** – ентитет кој чува податоци за оценките и коментарите за курс
     46   - review_id (primary key, bigint)
     47   - rating (int, задолжително)
     48   - comment (string, задолжително)
     49   - date (date, задолжително)
     50   - enrollmend_id (foreign_key, bigint)
     51
     526. **Course Version** – ентитет кој чува податоци за верзиите на курсеви
     53   - course_version_id (primary key, bigint)
     54   - versionNumber (int, задолжително)
     55   - createdAt (date, задолжително)
     56   - isActive (boolean, задолжително)
     57   - course_id (foreign_key, bigint)
     58
     597. **Course** – ентитет кој чува податоци за курсевите
     60   - course_id (primary key, bigint)
     61   - color (string, задолжително)
     62   - difficulty (enum {beginner, intermediate, advanced, expert}, задолжително)
     63   - durationMin (int, задолжително)
     64   - imageUrl (string, задолжително)
     65   - durationMin (double, задолжително)
     66
     678. **Course Translate** – ентитет кој чува податоци за различните преведувања за одреден курс
     68   - course_translate_id (primary key, bigint)
     69   - language (string, задолжително)
     70   - descriptionShort(string, задолжително)
     71   - description (string, задолжително)
     72   - descriptionLong (string, задолжително)
     73   - titleShort (string, задолжително)
     74   - title (string, задолжително)
     75   - whatWillBeLearned (string[], задолжително)
     76   - course_id (foreign_key, bigint)
     77
     789. **Course Content** – ентитет кој чува податоци за различните модули за одреден курс
     79   - course_content_id (primary key, bigint)
     80   - position (int, задолжително)
     81   - course_version_id (foreign_key, bigint)
     82
     83
     8410. **Course Content Translate** – ентитет кој чува податоци за различните преводи на модули за одреден курс
     85   - course_content_translate_id (primary key, bigint)
     86   - language (string, задолжително)
     87   - title(string, задолжително)
     88   - course_content_id (foreign_key, bigint)
     89
     90
     9111. **Course Lecture** – ентитет кој чува податоци за различните лекции за одреден модул на курс
     92   - course_lecture_id (primary key, bigint)
     93   - position(int, задолжително)
     94   - durationMin (int, задолжително)
     95   - contentType (enum {text, file, video, quiz}, задолжително)
     96   - course_content_id (foreign_key, bigint)
     97
     98
     9912. **Course Lecture Translate** – ентитет кој чува податоци за различните преведувања за лекции за одреден модул на курс
     100   - course_lecture_translate_id (primary key, bigint)
     101   - language (string, задолжително)
     102   - contentFileName (string, задолжително)
     103   - contentText (string, задолжително)
     104   - description (string, задолжително)
     105   - title (string, задолжително)
     106   - course_lecture_id (foreign_key, bigint)
     107
     10813. **User Course Progress** – ентитет кој чува податоци за прогресот на корисник за лекција на одреден курс
     109   - user_course_progress_id (primary key, bigint)
     110   - isCompleted (boolean, задолжително)
     111   - completedAt (date, задолжително)
     112   - course_lecture_id (foreign_key, bigint)
     113   - enrollment_id (foreign_key, bigint)
     114
     115
     11614. **Verification Token** – ентитет кој чува податоци за токените кои се креирани за корисници да го верифицираат нивниот мејл
     117   - verification_token_uuid (primary key, uuid)
     118   - expiresAt (date, задолжително)
     119   - createdAt (date, задолжително)
     120   - user_id (foreign_key, bigint)
     121
     122----
     123=== Релации ===
     124
     1251. **has** (USER ↔ VERIFICATION_TOKEN, 1:1) 
     126   Секој User има точно еден VerificationToken.
     127   Секој VerificationToken припаѓа точно на еден User.
     128
     1292. **enrolls** (USER ↔ ENROLLMENT, 1:N) 
     130   Еден User може да има повеќе Enrollments.
     131   Секое Enrollment припаѓа на точно еден User.
     132
     1333. **has** (ENROLLMENT ↔ PAYMENT, 1:1) 
     134   Секоја инстанца на Enrollment има точно една инстанца на Payment.
     135   Секоја инстанца на Payment припаѓа точно на една инстанца на Enrollment.
     136
     1374. **has** (ENROLLMENT ↔ REVIEW, 1:1) 
     138   Секоја инстанца на Enrollment има точно една инстанца на Review.
     139   Секоја инстанца на Review припаѓа точно на една инстанца на Enrollment.
     140
     1415. **has** (ENROLLMENT ↔ COURSE_VERSION, N:1) 
     142   Една инстанца на Enrollment припаѓа на точно една инстанца на CourseVersion.
     143   Една инстанца на CourseVersion може да биде дел од повеќе инстанци на Enrollment.
     144
     1456. **has** (COURSE_VERSION ↔ COURSE, 1:N) 
     146   Една инстанца на Course може да има повеќе инстанци на CourseVersion.
     147   Секоја инстанца на CourseVersion припаѓа на точно една инстанца на Course.
     148
     1497. **has** (COURSE ↔ COURSE_TRANSLATE, N:1) 
     150   Секоја инстанца на CourseTranslate припаѓа на точно една инстанца на Course.
     151   Една инстанца на Course може да има повеќе инстанци на CourseTranslate.
     152
     1538. **has** (COURSE_VERSION ↔ COURSE_CONTENT, 1:N) 
     154   Една инстанца на CourseVersion може да има повеќе инстанци на CourseContent.
     155   Секоја инстанца на CourseContent припаѓа на точно една инстанца на CourseVersion.
     156
     1579. **has** (COURSE_CONTENT ↔ COURSE_CONTENT_TRANSLATE, 1:N) 
     158   Една инстанца на CourseContent може да има повеќе инстанци на CourseContentTranslate.
     159   Секоја инстанца на CourseContentTranslate припаѓа на точно една инстанца на CourseContent.
     160
     16110. **has** (COURSE_CONTENT ↔ COURSE_LECTURE, 1:N) 
     162   Една инстанца на CourseContent може да има повеќе инстанци на CourseLecture.
     163   Секоја инстанца на CourseLecture припаѓа на точно една инстанца на CourseContent.
     164
     16511. **has** (COURSE_LECTURE ↔ COURSE_LECTURE_TRANSLATE, 1:N) 
     166   Една инстанца на CourseLecture може да има повеќе инстанци на CourseLectureTranslate.
     167   Секоја инстанца на CourseLectureTranslate припаѓа на точно една инстанца на CourseLecture.
     168
     16912. **has progress** (CourseLecture 1 ──< UserCourseProgress >── 1 Enrollment) 
     170   Секоја инстанца на UserCourseProgress се однесува на точно една инстанца на CourseLecture и точно една инстанца на Enrollment.
     171   Една инстанца на CourseLecture може да биде поврзана со повеќе инстанци на UserCourseProgress.
     172   Една инстанца на Enrollment може да биде поврзана со повеќе инстанци на UserCourseProgress.
     173
     174
     175----