| 207 | | == ... |
| | 207 | == Тренирање тим |
| | 208 | |
| | 209 | Табелата `COACHING_TEAM` претставува врска помеѓу `COACH` и `SPORT_TEAM`. Дефинирана е ограничување за проверка на валидност на почетен и кране датум, како и надворешни клучеви кои референцираат кон спортски тим и тренер соодветно. Дополнително, има дефинирано комплексен примарен клуч создаден од `team_id` и `coack_ssn`. |
| | 210 | |
| | 211 | Полнење на ова табела се врши така што за секој се доделува до два тренери и се доделува случаен почетен датум пред 6 до 7 години во минатото. Ова генерира 478.725 редици. |
| | 212 | |
| | 213 | [[Image(coaching_team.png)]] |
| | 214 | |
| | 215 | |
| | 216 | == Договор |
| | 217 | |
| | 218 | `SPORTSPERSON_CONTRACT` е дефиниран со ограничувања кои проверуваат валидноста на почетниот и крајниот датум и проверуваат `payout` да е позитивен број. Дополнително дефинирани се надворешни клучеви кои референцираат спортист и спортски клуб соодветно. |
| | 219 | |
| | 220 | Податоците за оваа табела се генерираат со три кверија. Првото генерира договори во последните 5 до 6 години за секој тим на секој клуб што не е национална репрезентација. |
| | 221 | |
| | 222 | Второто квери на исти начин генерира договори за секој тим на секој клуб што е национална репрезентација. |
| | 223 | |
| | 224 | Последното квери генерира историски податоци, односно генерира договори кои се истечени. Го генерира на сличен начин како првото, за секој тим на секој клуб што не е репрезенација, но почетниот датум е пред 13 до 14 години, а крајниот датум е до пред 11 до 12 години. |
| | 225 | |
| | 226 | Овие кверија генерираат 4.107.739 договори. |
| | 227 | |
| | 228 | [[Image(sportsperson_contract.png)]] |
| | 229 | |
| | 230 | == Екипа |
| | 231 | |
| | 232 | Табелата `TEAM_ROSTER` претставува врска помеѓу играч, неговиот тим и улество во дуел, и затоа е дефинирана со комплексен клуч кој ги содржи `player_ssn`, `team_id` и `duel_id`. Дополнително е дефинирано ограничување кое проверува валидноста на почетно и крајно време, дефинирани се и надворешни клучеви кои референцираат спортист, спортски тим и дуел. |
| | 233 | |
| | 234 | |
| | 235 | Пред да се генерираат податоците, прво се креираат привремени табели `tmp_contract_pool`, `tmp_duel_pool` кои служат како множество од кое да се генерираат податоците. Дополнително, има и табела `team_roster_progress` која служи за следење информации колку се генерирани податоците. Во случај да преќине процедурата може пак да продолжи од последната залувана точка. |
| | 236 | |
| | 237 | Бидејќи многу време му требаше на ова квери да се изврши и често паѓаше беше создадена привремена процедура `insert_team_roster_batched_fixed`. Таа процедура обработува во серии од по 10.000 дуели, при што за домашниот и гостинскиот тим се избираат играчи со активни договори кои одговараат на спортската категорија и клубот на тимот. По секоја серија се извршува `COMMIT` и се ажурира контролна точка. Дополнително, за мал дел од играчите се генерира пократко време на настап со цел да се добијат пореалистични податоци. Ova процедура генерирапе над 80 милиони редици. |
| | 238 | |
| | 239 | [[Image(team_roster.png)]] |
| | 240 | |
| | 241 | == Судење на дуел |
| | 242 | |
| | 243 | ... |