Changes between Version 5 and Version 6 of RelationalModel
- Timestamp:
- 04/22/26 23:24:48 (10 days ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
RelationalModel
v5 v6 7 7 8 8 == Дополнителен Опис 9 === Mодел на пријателства (friendships) =9 === Mодел на пријателства (friendships) 10 10 Пријателството е моделирано како една релација помеѓу два корисници, при што секогаш се чуваат како `user_id_low` и `user_id_high` со услов првиот да е помал. Ова спречува дупликати како (A,B) и (B,A). Полето `requested_by_user_id` покажува кој ја испратил поканата, а `status` ја следи состојбата (pending, accepted, blocked). 11 11 12 ----13 12 14 === Mодел на натпревари (matches, match_teams, match_participants) =13 === Mодел на натпревари (matches, match_teams, match_participants) 15 14 Натпреварот е поделен на три дела: сам натпревар, тимови во натпреварот и играчи во тие тимови. Ова овозможува јасна структура: натпревар -> тимови -> играчи. Со надворешен клуч се осигурува дека играч може да припаѓа само на тим кој е дел од конкретниот натпревар. Овој пристап е флексибилен и поддржува различни типови игри. 16 15 17 ----18 16 19 === Преференци и нотификации =17 === Преференци и нотификации 20 18 Преференците чуваат кои игри му се омилени на корисникот, а нотификациите можат да се поврзат со тие преференци. Така системот може да испраќа известувања поврзани со интересите на корисникот, на пример за нов турнир во омилена игра. 21 19 22 ----23 20 24 === Many-to-many релации (game_genres, game_developers) =21 === Many-to-many релации (game_genres, game_developers) 25 22 Овие релации се решени со помошни (junction) табели со составен примарен клуч. Ова значи дека една игра може да има повеќе жанрови, а еден жанр може да припаѓа на повеќе игри. 26 23 27 ----28 24 29 === Членство во тим (team_memberships) =25 === Членство во тим (team_memberships) 30 26 Членството е моделирано како посебна табела затоа што не е само врска, туку има дополнителни информации како улога (капетан, член, тренер) и статус. Така може да се следи кој корисник во кој тим е и каква улога има. 31 27 32 ----33 28 34 === Претплати и плаќања (subscriptions, payments) =29 === Претплати и плаќања (subscriptions, payments) 35 30 Се чуваат информации за претплатите и нивните периоди, а плаќањата се поврзани со нив. Со посебен услов се осигурува дека еден корисник може да има само една активна претплата. 36 31 37 ----38 32 39 === Постигнувања (user_achievements) =33 === Постигнувања (user_achievements) 40 34 Оваа табела покажува кои корисници кои постигнувања ги отклучиле и кога. Така може да се следи напредокот на корисниците и да се прават статистики. 41 35 42 ----43 36 44 === Сервери и локации =37 === Сервери и локации 45 38 Локацијата е одделена во посебна табела, а серверите се поврзани со неа. Ова избегнува дуплирање на податоци и овозможува повеќе сервери да користат иста локација. 46 39 47 ----48 40 49 === Систем за статистики (stat_types, participant_stats) =41 === Систем за статистики (stat_types, participant_stats) 50 42 Статистиките се моделирани на флексибилен начин преку две табели. Во `stat_types` се дефинираат типовите на статистики за секоја игра (на пример: kills, assists, deaths, headshots), додека во `participant_stats` се чуваат конкретните вредности за секој играч во одреден натпревар. Ова значи дека за еден играч во еден натпревар може да има повеќе записи – по еден за секој тип на статистика. 51 43
