Changes between Version 30 and Version 31 of ERModel
- Timestamp:
- 09/24/25 19:19:23 (3 weeks ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ERModel
v30 v31 1 1 == ER Дијаграм 2 [[Image(ER_BUILD_BOARD_v5. 2.png)]]2 [[Image(ER_BUILD_BOARD_v5.3.png)]] 3 3 == Податочни побарувања 4 4 === Ентитети … … 18 18 * Ентитет **DEVELOPER** - преклопувачка специјализација, со делумно учество, од **USER**. Ентитетов се однесува на корисниците, кои се истовремено и развивачи на софтвер. 19 19 * Кандидат клучеви: исто како и ентитетот USER и овај ентитет се идентификува со примарниот вештачки клуч Id. 20 20 21 * Ентитет **PROJECT_OWNER** - преклопувачка специјализација, со делумно учество, од **DEVELOPER**. Ентитетов се однесува на развивачите на софтвер, кои поседуваат проекти. 21 22 * Кандидат клучеви: исто како и ентитетот DEVELOPER и овај ентитет се идентификува со примарниот вештачки клуч **Id**. 23 22 24 * Ентитет **MODERATOR** - преклопувачка специјализација, со делумно учество, од **USER**. Ентитетов се однесува на корисниците, кои истовремено се и модератори на threads. 23 25 * Кандидат клучеви: исто како и ентитетот **USER** и овај ентитет се идентификува со примарниот вештачки клуч **Id**. 26 24 27 * Ентитет **TAG** - претставува податок (лабела) која може да се назначи на даден **THREAD**. Служи за логичко групирање на threads. 25 28 * Кандидат клучеви: Name, како податок уникат за секој таг. Истиот го избравме за примарен клуч на ентитетов. 26 29 * Атрибути: 27 30 * Name - текстуален податок,задолжителен. 31 28 32 * Ентитет **THREAD** - генерализација на сите можни водови на threads. Ги содржи сличните податоци присутни кај поединечните видови. 29 33 * Кандидат клучеви: бидејќи најмално супер-клуч множество би се состоело од сите атрибути на ентитет, за примарен клуч избравме вештачки клуч Id. … … 32 36 * Id - нумерички податок, задолжителен. 33 37 * Created_at - датум, задолжителен. 38 34 39 * Ентитет **ЕMBEDDABLE** - дисјунктна специјализација, со целосно учество, од **THREAD**. Ги претставува сите threads кои можат да се вгензудваат. 40 35 41 * Ентитет **TOPIC_THREAD** - дисјунктна специјализација, со целосно учество, од ЕMBEDDABLE. Ентитетов се однесува на сите threads кој се топици и ги содржи податоците специфични за нив. 36 42 * Кандидат клучеви: исто како и ентитетот ЕMBEDDABLE и овај ентитет се идентификува со примарниот,вештачки клуч Id. … … 38 44 * Title - текстуален податок,задолжителен. 39 45 * Guidlines - текстуален,multivalued податок,опционален. 46 40 47 * Ентитет **DISCUSSION_THREAD** - дисјунктна специјализација, со целосно учество, од **ЕMBEDDABLE**. Ентитетов се однесува на сите threads кој се дискусии и ги содржи податоците специфични за нив. 41 48 * Кандидат клучеви: исто како и ентитетот **ЕMBEDDABLE** и овај ентитет се идентификува со примарниот,вештачки клуч **Id**. 49 42 50 * Ентитет **PROJECT_THREAD** - дисјунктна специјализација, со целосно учество, од **THREAD.** Ентитетов се однесува на сите threads кој се дискусии и ги содржи податоците специфични за нив. 43 51 * Кандидат клучеви: исто како и ентитетот **THREAD** и овај ентитет се идентификува со примарниот,вештачки клуч **Id**. … … 45 53 * Repo_url - текстуален податок, опционален. 46 54 * Title - уникатен текстуален податок, задолжителен. 55 56 * Слаб Ентитет **DEVELOPER_ASSOCIATED_WITH_PROJECT** - записи за корисници кои се дел од проект(и. 57 * Кандидат клучеви: целосно идентификуван преку релациите **IN_PROJECT** и **ABOUT_DEV** заедно со парцијалниот клуч **Started_at** 58 * Атрибути: 59 * Started_at - датум, задолжителен. 60 * Ended_at - датум, опционален. 61 47 62 * Ентитет **BLACKLISTED_USER** - податоци за тоа на кои корисници му е забранет пристапот во кои **TOPIC_THREAD** , од кои модератор. 48 63 * Кандидат клучеви: сурогат клуч id … … 52 67 * End_date - датум, опционален. 53 68 * Reason - текстуален податок,опционален. 69 54 70 * Ентитет **SUBMISSION** - генерализација за пријавите, кои ги испраќаат корисниците. 55 71 * Кандидат клучеви: Бидејќи најмално супер-клуч множество би се состоело од сите атрибути на ентитет, за примарен клуч избравме вештачки клуч **Id**. … … 59 75 * Description - текстуален, опционален. 60 76 * Status - текстуален, задолжителен. 77 61 78 * Ентитет **REPORT** - дисјунктна специјализација, со целосно учество од **SUBMISSION**. Ги претставува сите пријави од корисниците. 62 79 * Кандидат клучеви: исто како и ентитетот SUBMISSION и овoј ентитет се идентификува со примарниот вештачки клуч **Id**. 80 63 81 * Слаб eнтитет **FEEDBACK** - целосно идентификуван преку **SUBMITTED_FOR**.Претставува повратен одговор на дадено барање. 64 82 * Атрибути: 65 83 * Submission_type - текстуален,задолжителен. 66 84 * Created_at - датум,задолжителен 67 * Description - текстуален,опционален 85 * Description - текстуален,опционален 86 68 87 * Ентитет **PROJECT_REQUEST** - дисјунктна специјализација, со целосно учество од **SUBMISSION**.Претставува барање за учество на даден корисниците во даден проект. 69 88 * Кандидат клучеви: исто како и ентитетот **SUBMISSION** и овoј ентитет се идентификува со примарниот вештачки клуч **Id**. 89 70 90 * Ентитет **CHANNEL** - податоци за каналите во проектите. 71 91 * Кандидат клучеви: сурогат клуч Id … … 74 94 * Name - текстуален, задолжителен. 75 95 * Description - текстуален, опционален. 96 97 * Слаб Ентитет **MESSAGE** - претставува порака пратена во канал. 98 * Кандидат клучеви: целосно идентификуван преку релациите **SENT_IN**, **SENT_BY** и парцијалниот клуч **Sent_at** 99 * Атрибути: 100 * Sent_at - датум, задолжителен 101 * Content - текстуален, задолжителен. 102 76 103 * Ентитет **PERMISSIONS** - претставува ентите за дадена пермисија (дозвола). Пополнет со предефинирани вредности (''READ'',''WRITE'',''CREATE'',''DELETE''). 77 104 * Кандидат клучеви: овој ентитет е целосно идентификуван преку атрибутот **Name** 78 105 * Атрибути: 79 106 * Name - текстуален податок, задолжителен. 107 80 108 * Ентитет **PROJECT_ROLE** - претставува улога назначена на корисник, во даден проект. 81 109 * Кандидат клучеви: овој ентитет е целосно идентификуван преку сурогат клучот **id** … … 85 113 * Override_type - текстуален податок со предефинирани вредности (''INCLUDE'',''EXCLUDE''), задолжителен 86 114 * Забелешка: Атрибутот **Override_type** влијае на интерпретацијата на релацијата **FOR_RESOURCE**. 115 87 116 * Слаб Ентитет **ROLE_PERMISSIONS** - означува кој пермисии ги има дадена улога. Целосно се идентификува преку релациите **FOR_ROLE**,**FOR_PERMISSION**. 88 117 … … 105 134 * **VALID_IN**(1:N) - релација помеѓу **PROJECT_THREAD** и **PROJECT_ROLE**. Ни кажува во кој проект е валидна соодветната улога. 106 135 * **HAS**(1:N) - релација помеѓу **PROJECT_THREAD** и **CHANNEL**. Ни кажува во кој проект припаѓа соодветниот канал. 107 * **ASSOCIATED_WITH**(N:M) - релација помеѓу **PROJECT_THREAD** и **DEVELOPER**. Ни кажува во кој проекти учествувал/учествува соодветниот програмер.108 * Атрибути:109 * Started_at - датум, задолжителен.110 * Ended_at - датум, опционален.111 * Забелешка: Според **Ended_at** се знае дали **DEVELOPER** е активно вклучен во дадениот проект.112 136 * **CONSTRUCTS**(1:M) - релација помеѓу **CHANNEL** и **DEVELOPER**. Ни кажува кој програмер го креирал соодветниот канал. 113 * **SEN D_MESSAGE_IN**(N:M) - релација помеѓу **CHANNEL** и **DEVELOPER**. Ни претставува кој програмер испратил порака во соодветниот канал.114 * Атрибути 115 * Sent_at - датум, задолжителен. 116 * Content - текстуален, задолжителен. 137 * **SENT_IN** (1:M)- релација помеѓу **CHANNEL** и **MESSAGE**. Ни кажува во кој канал е пратена дадена порака. 138 * **SENT_BY** (1:M) - релација помеѓу **DEVELOPER** и **MESSAGE**. Ни кажува кој ја испратил пораката. 139 * **IN_PROJECT**(1:N) - релација помеѓу **PROJECT_THREAD** и **DEVELOPER_ASSOCIATED_WITH_PROJECT**. Ни кажува за кој проект се однесува записот. 140 * **ABOUT_DEV** (1:N) - релација помеѓу **DEVELOPER** и **DEVELOPER_ASSOCIATED_WITH_PROJECT**. Ни кажува за кој developer се однесува записот. 117 141 * **IS_ASSIGNED**(N:M) - релација помеѓу **PROJECT_ROLE** и **DEVELOPER**. Ни кажува кој улоги ги поседува соодветниот програмер. 118 142 * **SUBMITTED_FOR**(1:1) - релација помеѓу **SUBMISSION** и **FEEDBACK**. Претставува кој feedback се однесува на даден submission.