Changes between Version 5 and Version 6 of RelationalModel


Ignore:
Timestamp:
04/22/26 23:24:48 (10 days ago)
Author:
231099
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • RelationalModel

    v5 v6  
    77
    88== Дополнителен Опис
    9 === Mодел на пријателства (friendships) =
     9=== Mодел на пријателства (friendships)
    1010Пријателството е моделирано како една релација помеѓу два корисници, при што секогаш се чуваат како `user_id_low` и `user_id_high` со услов првиот да е помал. Ова спречува дупликати како (A,B) и (B,A). Полето `requested_by_user_id` покажува кој ја испратил поканата, а `status` ја следи состојбата (pending, accepted, blocked).
    1111
    12 ----
    1312
    14 === Mодел на натпревари (matches, match_teams, match_participants) =
     13=== Mодел на натпревари (matches, match_teams, match_participants)
    1514Натпреварот е поделен на три дела: сам натпревар, тимови во натпреварот и играчи во тие тимови. Ова овозможува јасна структура: натпревар -> тимови -> играчи. Со надворешен клуч се осигурува дека играч може да припаѓа само на тим кој е дел од конкретниот натпревар. Овој пристап е флексибилен и поддржува различни типови игри.
    1615
    17 ----
    1816
    19 === Преференци и нотификации =
     17=== Преференци и нотификации
    2018Преференците чуваат кои игри му се омилени на корисникот, а нотификациите можат да се поврзат со тие преференци. Така системот може да испраќа известувања поврзани со интересите на корисникот, на пример за нов турнир во омилена игра.
    2119
    22 ----
    2320
    24 === Many-to-many релации (game_genres, game_developers) =
     21=== Many-to-many релации (game_genres, game_developers)
    2522Овие релации се решени со помошни (junction) табели со составен примарен клуч. Ова значи дека една игра може да има повеќе жанрови, а еден жанр може да припаѓа на повеќе игри.
    2623
    27 ----
    2824
    29 === Членство во тим (team_memberships) =
     25=== Членство во тим (team_memberships)
    3026Членството е моделирано како посебна табела затоа што не е само врска, туку има дополнителни информации како улога (капетан, член, тренер) и статус. Така може да се следи кој корисник во кој тим е и каква улога има.
    3127
    32 ----
    3328
    34 === Претплати и плаќања (subscriptions, payments) =
     29=== Претплати и плаќања (subscriptions, payments)
    3530Се чуваат информации за претплатите и нивните периоди, а плаќањата се поврзани со нив. Со посебен услов се осигурува дека еден корисник може да има само една активна претплата.
    3631
    37 ----
    3832
    39 === Постигнувања (user_achievements) =
     33=== Постигнувања (user_achievements)
    4034Оваа табела покажува кои корисници кои постигнувања ги отклучиле и кога. Така може да се следи напредокот на корисниците и да се прават статистики.
    4135
    42 ----
    4336
    44 === Сервери и локации =
     37=== Сервери и локации
    4538Локацијата е одделена во посебна табела, а серверите се поврзани со неа. Ова избегнува дуплирање на податоци и овозможува повеќе сервери да користат иста локација.
    4639
    47 ----
    4840
    49 === Систем за статистики (stat_types, participant_stats) =
     41=== Систем за статистики (stat_types, participant_stats)
    5042Статистиките се моделирани на флексибилен начин преку две табели. Во `stat_types` се дефинираат типовите на статистики за секоја игра (на пример: kills, assists, deaths, headshots), додека во `participant_stats` се чуваат конкретните вредности за секој играч во одреден натпревар. Ова значи дека за еден играч во еден натпревар може да има повеќе записи – по еден за секој тип на статистика.
    5143