| | 8 | |
| | 9 | - Релациониот модел е организиран во неколку логички целини: '''географски и натпреварувачки податоци''', '''фудбалски ентитети и статистики''', '''кориснички профили и активности''' и '''модули за бодување, приватни лиги, fantasy и квизови'''. Оваа поделба овозможува јасно одвојување на основните фудбалски податоци од корисничките интеракции и аналитичкиот дел на системот. |
| | 10 | |
| | 11 | - '''Географска и натпреварувачка структура:''' Табелите `REGION` и `COUNTRY` ја моделираат географската хиерархија, при што една држава припаѓа на еден регион. Табелата `STADIUM` содржи информации за стадионите, како име, град и капацитет. Табелата `COMPETITION` ги моделира натпреварувањата и е поврзана со држава и регион, додека `SEASON` овозможува секое натпреварување да се следи по сезони. Преку `COMPETITION_TEAM` се моделира many-to-many врската помеѓу тимовите и натпреварувањата. |
| | 12 | |
| | 13 | - '''Фудбалско јадро:''' Табелата `TEAM` ги содржи основните податоци за клубовите и е поврзана со стадион и натпреварување. Табелата `PLAYER` ги опишува играчите, нивната позиција, националност и тимот за кој настапуваат. Дополнително, `COACH` овозможува чување податоци за тренерите по тим, додека `PLAYER_MARKET_VALUE` ја следи пазарната вредност на играчите низ време, што овозможува историска анализа и користење на овие податоци во fantasy модулот. |
| | 14 | |
| | 15 | - '''Натпревари и статистики:''' Централна табела во системот е `MATCH`, која ги поврзува сезоната, домашниот и гостинскиот тим, стадионот, датумот и конечниот резултат. За секој натпревар се чуваат и дополнителни статусни информации како коло, тековен статус и изминати минути. Табелата `MATCH_TEAM_STATS` содржи агрегирани статистики на ниво на тим за конкретен натпревар, како посед, шутеви, корнери, прекршоци, додавања и expected goals. Табелата `PLAYER_MATCH_STATS` содржи индивидуални статистики за секој играч на натпревар, како одиграни минути, голови, асистенции, шутеви, додавања, картони и рејтинг. Табелата `MATCH_EVENT` овозможува детален запис на настани од натпревар, како голови, картони, измени и асистенции, со минута и дополнителен опис. |
| | 16 | |
| | 17 | - '''Корисници и профили:''' Табелата `USERS` ги содржи основните податоци за автентикација и регистрација на корисниците. Табелата `USER_PROFILE` е издвоена за дополнителни кориснички информации, како омилен тим и држава, со што личните податоци се одвоени од автентикациските. Ова решение овозможува пофлексибилно проширување на профилот без промена на основната корисничка табела. |
| | 18 | |
| | 19 | - '''Модул за предвидувања и ВАР поени:''' Табелата `PREDICTION` ја моделира главната функционалност за предвидување на резултати, каде секој корисник може да внесе предвиден број голови за конкретен натпревар. Во истата табела се чуваат и поените што корисникот ги освоил врз основа на точноста на предвидувањето. Табелата `PREDICTION_HISTORY` овозможува следење на промени на предвидувањата низ време, што е важно за ревизија и анализа на корисничкото однесување. Табелата `VAR_POINTS` служи за централизиран систем на поени, каде секој запис содржи извор на поените (`source_type`, `source_id`) и број на освоени поени. На овој начин сите активности во системот може да се сведат на единствен механизам за бодување. |
| | 20 | |
| | 21 | - '''Приватни лиги и рангирање:''' Табелата `PRIVATE_LEAGUE` овозможува корисниците да креираат сопствени приватни лиги, при што секоја лига има сопственик (`owner_id`). Преку `LEAGUE_MEMBERS` се моделира членството на корисниците во лигите, а `LEAGUE_RANKINGS` го чува рангирањето и вкупните поени на членовите во рамки на конкретна приватна лига. Со ова е поддржан натпреварувачки аспект помеѓу групи корисници. |
| | 22 | |
| | 23 | - '''Fantasy модул:''' Табелата `FANTASY_TEAMS` овозможува секој корисник да креира fantasy тим, при што се чуваат формацијата, буџетот и членот на кој му припаѓа тимот. Преку `FANTASY_TEAM_PLAYERS` се моделира составот на тимот како many-to-many врска помеѓу fantasy тим и играч. Овој пристап овозможува флексибилно дефинирање на составот и лесна проверка на ограничувања како буџет и број на играчи. |
| | 24 | |
| | 25 | - '''Квиз модул:''' Табелата `QUIZ_CATEGORIES` ги организира прашањата по категории. Табелата `QUIZ_QUESTIONS` ги содржи текстот на прашањето, точниот одговор и категоријата. Табелата `QUIZ_SESSIONS` го моделира секое играње квиз од страна на корисник, со освоен резултат и датум на играње. Табелата `QUIZ_ANSWERS` ги содржи конкретните одговори на прашањата во рамки на една квиз сесија, како и информација дали одговорот бил точен. На овој начин е овозможено детално следење на перформансите на корисниците во квизовите. |
| | 26 | |
| | 27 | |
| | 28 | |