Changes between Version 2 and Version 3 of ERModel


Ignore:
Timestamp:
08/22/26 17:28:50 (5 days ago)
Author:
231118
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ERModel

    v2 v3  
    1 == ER дијаграм ==
    2 
    3 [[Image("ERModel_v02.png")]]
    4 
    5 == Податочни барања ==
    6 
    7 === Ентитети ===
    8 
    9 ==== 1. Tenants ====
    10 Ентитет кој претставува логички изолирана организација (tenant) во системот.
    11 
    12 * ''id'' (integer, PK)
    13 * ''name'' (text, NOT NULL)
    14 * ''owner_email'' (text, NOT NULL)
    15 * ''created_at'' (datetime)
    16 
    17 
    18 ==== 2. Users ====
    19 Ентитет кој чува информации за корисници автентицирани преку Google OAuth.
    20 
    21 * ''id'' (integer, PK)
    22 * ''email'' (text, NOT NULL, UNIQUE)
    23 * ''name'' (text)
    24 * ''picture'' (text)
    25 * ''created_at'' (datetime)
    26 
    27 
    28 
    29 ==== 3. Memberships ====
    30 Асоцијативен ентитет кој поврзува корисници со tenants и ја дефинира нивната улога.
    31 
    32 * ''user_id''* (integer, PK, FK → Users.id)
    33 * ''tenant_id''* (integer, PK, FK → Tenants.id)
    34 * ''role'' (text, DEFAULT 'admin')
    35 * ''created_at'' (datetime)
    36 
    37 
    38 
    39 ==== 4. Environments ====
    40 Ентитет кој дефинира логички околини во рамки на еден tenant (пример: default, staging, prod).
    41 
    42 * ''id'' (integer, PK)
    43 * ''tenant_id''* (integer, FK → Tenants.id, NOT NULL)
    44 * ''name'' (text, NOT NULL)
    45 * ''created_at'' (datetime)
    46 
    47 *Ограничување:* UNIQUE (tenant_id, name)
    48 
    49 
    50 
    51 ==== 5. ENV_Tokens ====
    52 Ентитет кој чува токени за пристап на клиентските агенти во конкретно environment.
    53 
    54 * ''id'' (integer, PK)
    55 * ''tenant_id''* (integer, FK → Tenants.id, NOT NULL)
    56 * ''env_name'' (text, NOT NULL)
    57 * ''token'' (text, NOT NULL, UNIQUE)
    58 * ''created_at'' (datetime)
    59 * ''expires_at'' (datetime)
    60 
    61 
    62 
    63 ==== 6. Computers ====
    64 Ентитет кој чува податоци за клиентските компјутери што испраќаат логови до серверот.
    65 
    66 * ''id'' (integer, PK)
    67 * ''tenant_id''* (integer, FK → Tenants.id, NOT NULL)
    68 * ''env_name'' (text, NOT NULL)
    69 * ''name'' (text, NOT NULL)
    70 * ''user'' (text)
    71 * ''ip'' (text)
    72 * ''os'' (text)
    73 * ''first_seen'' (datetime)
    74 * ''last_seen'' (datetime)
    75 * ''sysmon_available'' (boolean, DEFAULT 0)
    76 
    77 *Ограничување:* UNIQUE (tenant_id, name)
    78 
    79 
    80 
    81 ==== 7. Computer_history ====
    82 Ентитет кој чува временски перформансни метрики за компјутерите.
    83 
    84 * ''id'' (integer, PK)
    85 * ''computer_id''* (integer, FK → Computers.id)
    86 * ''cpu_usage'' (real)
    87 * ''ram_usage'' (real)
    88 * ''disk_usage'' (real)
    89 * ''network_sent_mb'' (real)
    90 * ''network_recv_mb'' (real)
    91 * ''timestamp'' (datetime)
    92 
    93 
    94 ==== 8. Computer_processes_current ====
    95 Ентитет кој чува тековна snapshot состојба на процеси за секој компјутер.
    96 
    97 * ''id'' (integer, PK)
    98 * ''computer_id''* (integer, FK → Computers.id)
    99 * ''pid'' (integer)
    100 * ''name'' (text)
    101 * ''cpu_percent'' (real)
    102 * ''memory_mb'' (real)
    103 * ''username'' (text)
    104 * ''cmdline'' (text)
    105 * ''timestamp'' (datetime)
    106 
    107 
    108 
    109 ==== 9. Computer_processes_history ====
    110 Ентитет кој чува историски податоци за процеси (опционално, контролирано по environment).
    111 
    112 * ''id'' (integer, PK)
    113 * ''computer_id''* (integer, FK → Computers.id)
    114 * ''pid'' (integer)
    115 * ''name'' (text)
    116 * ''cpu_percent'' (real)
    117 * ''memory_mb'' (real)
    118 * ''username'' (text)
    119 * ''cmdline'' (text)
    120 * ''timestamp'' (datetime)
    121 
    122 
    123 
    124 ==== 10. Sysmon_events ====
    125 Ентитет кој чува Sysmon и безбедносни настани испратени од клиентите.
    126 
    127 * ''id'' (integer, PK)
    128 * ''computer_id''* (integer, FK → Computers.id)
    129 * ''event_id'' (integer)
    130 * ''event_type'' (text)
    131 * ''message'' (text)
    132 * ''timestamp'' (datetime)
    133 * ''details'' (text – JSON како string)
    134 
    135 
    136 
    137 ==== 11. Network_connections ====
    138 Ентитет кој чува информации за мрежни конекции на компјутерите.
    139 
    140 * ''id'' (integer, PK)
    141 * ''computer_id''* (integer, FK → Computers.id)
    142 * ''pid'' (integer)
    143 * ''local_address'' (text)
    144 * ''remote_address'' (text)
    145 * ''status'' (text)
    146 * ''process_name'' (text)
    147 * ''timestamp'' (datetime)
    148 
    149 
    150 
    151 ==== 12. Security_alerts ====
    152 Ентитет кој чува аларми за потенцијални безбедносни инциденти.
    153 
    154 * ''id'' (integer, PK)
    155 * ''computer_id''* (integer, FK → Computers.id)
    156 * ''alert_type'' (text)
    157 * ''severity'' (text)
    158 * ''description'' (text)
    159 * ''timestamp'' (datetime)
    160 * ''resolved'' (boolean, DEFAULT 0)
    161 
    162 
    163 
    164 ==== 13. Env_settings ====
    165 Ентитет кој чува конфигурации по environment.
    166 
    167 * ''tenant_id''* (integer, PK, FK → Tenants.id)
    168 * ''env_name''* (text, PK)
    169 * ''save_process_history'' (boolean, DEFAULT 0)
    170 * ''created_at'' (datetime)
    171 * ''updated_at'' (datetime)
    172 
    173 
    174 
    175 === Релации ===
    176 
    177 * Tenants ⟶ Environments (1:N) 
    178 Еден tenant може да има повеќе environments.
    179 
    180 * Tenants ⟷ Users (M:N преку Memberships) 
    181 Корисник може да припаѓа на повеќе tenants со различни улоги.
    182 
    183 * Environments ⟶ ENV_Tokens (1:N) 
    184 Едно environment може да има повеќе токени за клиентски агенти.
    185 
    186 * Environments ⟶ Computers (1:N) 
    187 Едно environment содржи повеќе компјутери.
    188 
    189 * Computers ⟶ Computer_history (1:N) 
    190 Еден компјутер има повеќе временски перформансни записи.
    191 
    192 * Computers ⟶ Computer_processes_current (1:N) 
    193 Еден компјутер има повеќе тековни процеси.
    194 
    195 * Computers ⟶ Computer_processes_history (1:N) 
    196 Еден компјутер може да има историски процеси (ако е овозможено).
    197 
    198 * Computers ⟶ Sysmon_events (1:N) 
    199 Еден компјутер генерира повеќе Sysmon безбедносни настани.
    200 
    201 * Computers ⟶ Network_connections (1:N) 
    202 Еден компјутер има повеќе активни мрежни конекции.
    203 
    204 * Computers ⟶ Security_alerts (1:N) 
    205 Еден компјутер може да активира повеќе безбедносни аларми.
    206 
    207 ''Забелешка:'' Атрибутите означени со * се странски клучеви (Foreign Keys).
     1= Entity-Relationship Model v.04 =
     2
     3== Diagram ==
     4
     5[[Image("ERModel_v04.png", width=100%)]]
     6
     7== Data requirements ==
     8
     9=== Entities ===
     10
     11==== Tenants ====
     12Претставува логички изолирана организација (tenant). Сите останати податоци се партиционираат по tenant, така што податоците на една организација се одвоени од друга. Моделиран е со сурогат клуч бидејќи ниту едно природно поле не е гарантирано единствено и непроменливо.
     13
     14* ''Candidate keys:'' {id}. Полињата ''name''/''owner_email'' не се доволно единствени, па е избран сурогат ''id''.
     15* ''Атрибути:''
     16   * ''id'' — numeric (integer); задолжителен; примарен клуч, автоинкремент.
     17   * ''name'' — text; задолжителен (NOT NULL).
     18   * ''owner_email'' — text; задолжителен (NOT NULL); формат на е-пошта.
     19   * ''created_at'' — date (datetime); опционален.
     20
     21==== Users ====
     22Корисник автентициран преку Google OAuth. Потребен за најавување и поврзување со tenants преку членства. Моделиран одделно бидејќи ист корисник може да членува во повеќе tenants.
     23
     24* ''Candidate keys:'' {id} и {email} (email е UNIQUE). Избран е {id} бидејќи е стабилен сурогат; е-поштата може да се промени.
     25* ''Атрибути:''
     26   * ''id'' — numeric (integer); задолжителен; примарен клуч, автоинкремент.
     27   * ''email'' — text; задолжителен (NOT NULL, UNIQUE); формат на е-пошта.
     28   * ''name'' — text; опционален.
     29   * ''picture'' — text; опционален; URL до сликата од профилот.
     30   * ''created_at'' — date (datetime); опционален.
     31
     32==== Memberships ====
     33Асоцијативен ентитет кој ја реализира M:N релацијата меѓу Users и Tenants и ја дефинира улогата на корисникот во даден tenant. Моделиран е како ентитет затоа што носи сопствен атрибут (''role'').
     34
     35* ''Candidate keys:'' композитен клуч формиран од учеството во релациите ''includes'' (Users) и ''belongs_to'' (Tenants), т.е. {user, tenant}.
     36* ''Атрибути:''
     37   * ''role'' — text; задолжителен; DEFAULT 'admin'.
     38   * ''created_at'' — date (datetime); опционален.
     39
     40==== Environments ====
     41Логичка околина во рамки на еден tenant (пр. default, staging, prod). Компјутерите, токените, мрежите и поставките припаѓаат на околина.
     42
     43* ''Candidate keys:'' {id} и {tenant, name} (името е единствено во рамки на tenant). Избран е {id}; композитниот природен клуч е задржан како ограничување за единственост.
     44* ''Атрибути:''
     45   * ''id'' — numeric (integer); задолжителен; примарен клуч, автоинкремент.
     46   * ''name'' — text; задолжителен (NOT NULL); единствено во рамки на еден tenant.
     47   * ''created_at'' — date (datetime); опционален.
     48
     49==== ENV_Tokens ====
     50Токени за пристап на клиентските агенти во конкретна околина. Секој агент носи токен наместо кориснички податоци. Одделен ентитет затоа што една околина може да има повеќе токени со различни рокови.
     51
     52* ''Candidate keys:'' {id} и {token} (UNIQUE). Избран е {id}; ''token'' се задржува како единствен алтернативен клуч за автентикација.
     53* ''Атрибути:''
     54   * ''id'' — numeric (integer); задолжителен; примарен клуч, автоинкремент.
     55   * ''token'' — text; задолжителен (NOT NULL, UNIQUE).
     56   * ''created_at'' — date (datetime); опционален.
     57   * ''expires_at'' — date (datetime); опционален; рок на важност.
     58
     59==== Computers ====
     60Клиентските компјутери што испраќаат логови. Централен ентитет — сите видови следење се врзани за компјутер.
     61
     62* ''Candidate keys:'' {id} и {tenant, name}. Избран е {id} бидејќи компјутерот може да се преименува; композитот е задржан како ограничување за единственост.
     63* ''Атрибути:''
     64   * ''id'' — numeric (integer); задолжителен; примарен клуч, автоинкремент.
     65   * ''name'' — text; задолжителен (NOT NULL); единствено во рамки на tenant.
     66   * ''user'' — text; опционален; најавен корисник.
     67   * ''ip'' — text; опционален; IP адреса.
     68   * ''os'' — text; опционален; оперативен систем.
     69   * ''first_seen'' — date (datetime); опционален; прв контакт.
     70   * ''last_seen'' — date (datetime); опционален; последен контакт.
     71   * ''sysmon_available'' — numeric (boolean 0/1); задолжителен; DEFAULT 0.
     72
     73==== Computer_history_current ====
     74Последен снимок на перформансни метрики (искористеност на ресурси) за секој компјутер. При секој извештај, претходниот запис за компјутерот се препишува, така што табелата секогаш го држи само моменталното мерење.
     75
     76* ''Candidate keys:'' {id} (сурогат). Природен клуч не постои.
     77* ''Атрибути:''
     78   * ''id'' — numeric (integer); задолжителен; примарен клуч, автоинкремент.
     79   * ''cpu_usage'' — numeric (real); опционален; процент 0–100.
     80   * ''ram_usage'' — numeric (real); опционален; процент 0–100.
     81   * ''disk_usage'' — numeric (real); опционален; процент 0–100.
     82   * ''network_sent_mb'' — numeric (real); опционален; ≥ 0.
     83   * ''network_recv_mb'' — numeric (real); опционален; ≥ 0.
     84   * ''timestamp'' — date (datetime); опционален.
     85
     86==== Computer_history ====
     87Историски (трајни) перформансни метрики. Записите се додаваат (append) и се чуваат подолго; запишувањето се контролира преку ''save_metrics_history'' во Env_settings.
     88
     89* ''Candidate keys:'' {id} (сурогат).
     90* ''Атрибути:'' исти како Computer_history_current (id, cpu_usage, ram_usage, disk_usage, network_sent_mb, network_recv_mb, timestamp).
     91
     92==== Computer_processes_current ====
     93Тековен снимок на процеси по компјутер. При секој извештај претходната состојба се брише и се запишува новата.
     94
     95* ''Candidate keys:'' {id} (сурогат). ''pid'' не е стабилен (се реупотребува).
     96* ''Атрибути:''
     97   * ''id'' — numeric (integer); задолжителен; примарен клуч, автоинкремент.
     98   * ''pid'' — numeric (integer); опционален.
     99   * ''name'' — text; опционален.
     100   * ''cpu_percent'' — numeric (real); опционален; ≥ 0.
     101   * ''memory_mb'' — numeric (real); опционален; ≥ 0.
     102   * ''username'' — text; опционален.
     103   * ''cmdline'' — text; опционален.
     104   * ''timestamp'' — date (datetime); опционален.
     105
     106==== Computer_processes_history ====
     107Историски (трајни) записи за процеси. Append; се контролира преку ''save_process_history'' во Env_settings; старите записи периодично се бришат.
     108
     109* ''Candidate keys:'' {id} (сурогат).
     110* ''Атрибути:'' исти како Computer_processes_current.
     111
     112==== Network_connections_current ====
     113Тековен снимок на активни мрежни конекции по компјутер. При секој извештај се препишува.
     114
     115* ''Candidate keys:'' {id} (сурогат).
     116* ''Атрибути:''
     117   * ''id'' — numeric (integer); задолжителен; примарен клуч, автоинкремент.
     118   * ''pid'' — numeric (integer); опционален.
     119   * ''local_address'' — text; опционален; локална адреса:порта.
     120   * ''remote_address'' — text; опционален; далечна адреса:порта.
     121   * ''status'' — text; опционален; пр. ESTABLISHED, LISTEN.
     122   * ''process_name'' — text; опционален.
     123   * ''timestamp'' — date (datetime); опционален.
     124
     125==== Network_connections_history ====
     126Историски (трајни) записи за мрежни конекции. Append; се контролира преку ''save_network_history'' во Env_settings.
     127
     128* ''Candidate keys:'' {id} (сурогат).
     129* ''Атрибути:'' исти како Network_connections_current.
     130
     131==== Sysmon_events ====
     132Sysmon и безбедносни настани испратени од клиентите (append лог).
     133
     134* ''Candidate keys:'' {id} (сурогат). ''event_id'' е тип на настан, не идентификатор.
     135* ''Атрибути:''
     136   * ''id'' — numeric (integer); задолжителен; примарен клуч, автоинкремент.
     137   * ''event_id'' — numeric (integer); опционален; Sysmon Event ID.
     138   * ''event_type'' — text; опционален.
     139   * ''message'' — text; опционален.
     140   * ''timestamp'' — date (datetime); опционален.
     141   * ''details'' — text; опционален; JSON како стринг.
     142
     143==== Security_alerts ====
     144Аларми за потенцијални безбедносни инциденти детектирани на компјутер.
     145
     146* ''Candidate keys:'' {id} (сурогат).
     147* ''Атрибути:''
     148   * ''id'' — numeric (integer); задолжителен; примарен клуч, автоинкремент.
     149   * ''alert_type'' — text; опционален.
     150   * ''severity'' — text; опционален; пр. low/medium/high/critical.
     151   * ''description'' — text; опционален.
     152   * ''timestamp'' — date (datetime); опционален.
     153   * ''resolved'' — numeric (boolean 0/1); задолжителен; DEFAULT 0.
     154
     155==== Env_settings ====
     156Конфигурации по околина — политика за чување историја за секој вид следење (процеси, метрики, мрежни конекции).
     157
     158* ''Candidate keys:'' идентификуван преку релацијата ''configured_by'' со Environments (1:1); во релациска шема клучот е {tenant_id, env_name}.
     159* ''Атрибути:''
     160   * ''save_process_history'' — numeric (boolean 0/1); задолжителен; DEFAULT 0.
     161   * ''save_metrics_history'' — numeric (boolean 0/1); задолжителен; DEFAULT 0.
     162   * ''save_network_history'' — numeric (boolean 0/1); задолжителен; DEFAULT 0.
     163   * ''created_at'' — date (datetime); опционален.
     164   * ''updated_at'' — date (datetime); опционален.
     165
     166==== Networks ====
     167Мрежни сегменти/подмрежи во рамки на околина. Потребен за моделирање на мрежната инфраструктура и групирање на компјутери и уреди по подмрежа.
     168
     169* ''Candidate keys:'' {id} и {cidr} (единствен во рамки на околина). Избран е {id}.
     170* ''Атрибути:''
     171   * ''id'' — numeric (integer); задолжителен; примарен клуч, автоинкремент.
     172   * ''name'' — text; задолжителен.
     173   * ''cidr'' — text; задолжителен; формат CIDR (пр. 192.168.1.0/24).
     174   * ''gateway_ip'' — text; опционален; IP на портата.
     175   * ''vlan'' — numeric (integer); опционален.
     176
     177==== Network_devices ====
     178Мрежни уреди што не се компјутери (рутери, свичеви, пристапни точки, firewall). Потребен за следење на мрежната инфраструктура.
     179
     180* ''Candidate keys:'' {id} и {mac} (MAC е единствен). Избран е {id}.
     181* ''Атрибути:''
     182   * ''id'' — numeric (integer); задолжителен; примарен клуч, автоинкремент.
     183   * ''name'' — text; задолжителен.
     184   * ''device_type'' — text; задолжителен; пр. router/switch/ap/firewall.
     185   * ''ip'' — text; опционален.
     186   * ''mac'' — text; опционален; MAC адреса.
     187   * ''status'' — text; опционален; up/down.
     188
     189==== Network_services ====
     190Активни мрежни сервиси/порти што ги изложува компјутер. Потребен за следење на достапни сервиси.
     191
     192* ''Candidate keys:'' {id} и {computer, port, protocol}. Избран е {id}.
     193* ''Атрибути:''
     194   * ''id'' — numeric (integer); задолжителен; примарен клуч, автоинкремент.
     195   * ''service_name'' — text; опционален; пр. SSH, HTTP.
     196   * ''port'' — numeric (integer); задолжителен; интервал 1–65535.
     197   * ''protocol'' — text; задолжителен; TCP/UDP.
     198   * ''status'' — text; опционален; listening/open/closed.
     199   * ''last_checked'' — date (datetime); опционален.
     200
     201==== Service_availability ====
     202Историја на достапност (up/down проверки) на мрежен сервис. Потребен за следење на достапноста низ време.
     203
     204* ''Candidate keys:'' {id} (сурогат).
     205* ''Атрибути:''
     206   * ''id'' — numeric (integer); задолжителен; примарен клуч, автоинкремент.
     207   * ''is_available'' — numeric (boolean 0/1); задолжителен.
     208   * ''response_time_ms'' — numeric (integer); опционален; ≥ 0.
     209   * ''timestamp'' — date (datetime); задолжителен.
     210
     211==== Computer_groups ====
     212Организациска структура на компјутери (оддели/локации/тимови) со поддршка за хиерархија преку рекурзивна релација. Потребен за организациско групирање на машините.
     213
     214* ''Candidate keys:'' {id} и {name} (во рамки на tenant). Избран е {id}; хиерархијата се изразува преку релацијата ''parent_of'' (наместо атрибут-клуч).
     215* ''Атрибути:''
     216   * ''id'' — numeric (integer); задолжителен; примарен клуч, автоинкремент.
     217   * ''name'' — text; задолжителен.
     218   * ''description'' — text; опционален.
     219
     220=== Relationships ===
     221
     222Поврзаноста меѓу ентитетите е изразена преку именувани релации; надворешните клучеви што ги реализираат се воведуваат при преминот кон релациска шема (види долу).
     223
     224* '''has''' — Tenants (1) : Environments (N). Tenant поседува околини.
     225* '''includes''' — Memberships (N) : Users (1). Членството се однесува на еден корисник.
     226* '''belongs_to''' — Memberships (N) : Tenants (1). Членството припаѓа на еден tenant. (includes + belongs_to заедно ја реализираат M:N меѓу Users и Tenants.)
     227* '''issues''' — Environments (1) : ENV_Tokens (N). Околина издава токени за агенти.
     228* '''contains''' — Environments (1) : Computers (N). Околина логички содржи компјутери.
     229* '''configured_by''' — Environments (1) : Env_settings (1). Секоја околина има точно еден запис со поставки.
     230* '''has_networks''' — Environments (1) : Networks (N). Околина содржи мрежни сегменти.
     231* '''contains_devices''' — Networks (1) : Network_devices (N). Подмрежа содржи мрежни уреди.
     232* '''on_network''' — Networks (1) : Computers (N). Компјутер е поврзан на подмрежа.
     233* '''records_current''' — Computers (1) : Computer_history_current (N). Последни перформансни метрики.
     234* '''records_history''' — Computers (1) : Computer_history (N). Историски перформансни метрики.
     235* '''runs''' — Computers (1) : Computer_processes_current (N). Тековни процеси.
     236* '''logs''' — Computers (1) : Computer_processes_history (N). Историски процеси.
     237* '''opens_current''' — Computers (1) : Network_connections_current (N). Тековни мрежни конекции.
     238* '''opens_history''' — Computers (1) : Network_connections_history (N). Историски мрежни конекции.
     239* '''generates''' — Computers (1) : Sysmon_events (N). Безбедносни/Sysmon настани.
     240* '''triggers''' — Computers (1) : Security_alerts (N). Безбедносни аларми.
     241* '''exposes''' — Computers (1) : Network_services (N). Компјутер изложува мрежни сервиси.
     242* '''monitored_by''' — Network_services (1) : Service_availability (N). Сервисот се проверува за достапност низ време.
     243* '''belongs_to_group''' — Computers (N) : Computer_groups (1). Компјутер припаѓа на организациска група.
     244* '''parent_of''' — Computer_groups (1) : Computer_groups (N). Рекурзивна релација за хиерархија на групи (една група има подгрупи).
     245
     246=== Релациска шема (надворешни клучеви) ===
     247
     248* Memberships(''user_id'' → Users.id, ''tenant_id'' → Tenants.id), PK(user_id, tenant_id)
     249* Environments(''tenant_id'' → Tenants.id), UNIQUE(tenant_id, name)
     250* ENV_Tokens(''tenant_id'' → Tenants.id, ''env_name'')
     251* Computers(''tenant_id'' → Tenants.id, ''env_name''), UNIQUE(tenant_id, name)
     252* Env_settings(''tenant_id'' → Tenants.id, ''env_name''), PK(tenant_id, env_name)
     253* Networks(''tenant_id'' → Tenants.id, ''env_name'')
     254* Network_devices(''network_id'' → Networks.id)
     255* Network_services(''computer_id'' → Computers.id)
     256* Service_availability(''service_id'' → Network_services.id)
     257* Computer_groups(''tenant_id'' → Tenants.id, ''parent_id'' → Computer_groups.id)
     258* Computer_history_current / Computer_history(''computer_id'' → Computers.id)
     259* Computer_processes_current / Computer_processes_history(''computer_id'' → Computers.id)
     260* Network_connections_current / Network_connections_history(''computer_id'' → Computers.id)
     261* Computers(''group_id'' → Computer_groups.id), ''network_id'' → Networks.id
     262* Sysmon_events / Security_alerts(''computer_id'' → Computers.id)
    208263
    209264== Entity-Relationship Model History ==
    210 === Верзија 1 ===
    211 Ова е иницијалната верзија на дијаграмот со соодветните табели.
    212 [[Image("ERModel_v01.png")]]
    213 
    214 === Верзија 2 ===
    215 Ова е подобрената верија на дијаграмот. Додадени се табелите env_settings, computer_proccess_current и computer_proccess_history. Овие табели се додадени со цел имплементирање на функционалност каде корисникот би можел да одлучи дали сака да ги чува трајно податоците собрани од компјутерот (во тој случај би се зачувале во computer_proccess_history) или пак да се зачуваат привремено и по некое време би се избришале (во тој случај би се зачувале во computer_proccess_current).
    216 [[Image("ERModel_v02.png")]]
    217 
    218 
     265
     266* '''v.01''' — Иницијална верзија со основните ентитети.
     267* '''v.02''' — Додадени Env_settings, Computer_processes_current и Computer_processes_history за избор помеѓу трајно и тековно чување процеси.
     268* '''v.03''' — Формална исправка: отстранета табелата Computer_processes; сите врски претворени во именувани релации со кардиналности; надворешните клучеви извадени од дијаграмот; исправени имиња (tenants, process).
     269* '''v.04''' — Напредни проширувања: раздвојување тековна/историска состојба за сите видови следење (Computer_history и Network_connections добиваат _current/_history, со нови знамиња save_metrics_history и save_network_history); следење активни мрежни сервиси и достапност (Network_services, Service_availability); мрежна инфраструктура (Networks, Network_devices); организациска структура на компјутери со хиерархија (Computer_groups со рекурзивна parent_of).