| | 1 | = Процедури = |
| | 2 | |
| | 3 | |
| | 4 | === Процедура 1: Додавање третман на археолошки предмет (add_treatment) === |
| | 5 | |
| | 6 | 1. **Намена:** |
| | 7 | Процедурата `add_treatment` е наменета за евидентирање на нов конзерваторски или реставраторски третман над археолошки предмет. Нејзината основна цел е да обезбеди контролирано внесување на третмани, при што секој третман се поврзува со конкретен предмет (`object_id`) и автоматски добива датум на внесување. |
| | 8 | |
| | 9 | 2. **Случај на употреба:** |
| | 10 | Во рамки на системот за управување со културно наследство, археолошките предмети често поминуваат низ повеќе конзерваторски интервенции (чистење, стабилизација, реконструкција, лабораториска обработка и слично). Наместо рачно внесување на записи во табелата `Treatments`, процедурата обезбедува стандардизиран начин за евиденција на интервенциите. |
| | 11 | |
| | 12 | 3. **Причина за употреба на процедура:** |
| | 13 | Избрана е процедура наместо директен `INSERT` бидејќи постои потреба од дополнителна бизнис логика и валидација пред внесување на третман. Процедурата ја користи функцијата `is_object_available(p_object_id)` со цел да се провери дали предметот е достапен за третман. |
| | 14 | |
| | 15 | Без оваа проверка би било возможно да се внесе третман за предмет кој: |
| | 16 | * не постои |
| | 17 | * има статус што не дозволува третман |
| | 18 | * не е достапен за обработка |
| | 19 | |
| | 20 | 4. **Имплементација:** |
| | 21 | |
| | 22 | Процедурата прима: |
| | 23 | |
| | 24 | * `p_object_id` – идентификатор на предметот |
| | 25 | * `p_desc` – опис на третманот |
| | 26 | |
| | 27 | Пред внесување се повикува: |
| | 28 | |
| | 29 | {{{ |
| | 30 | IF NOT is_object_available(p_object_id) |
| | 31 | }}} |
| | 32 | |
| | 33 | Доколку предметот не е достапен, процедурата прекинува со грешка: |
| | 34 | |
| | 35 | {{{ |
| | 36 | RAISE EXCEPTION 'Објектот не е достапен за третман'; |
| | 37 | }}} |
| | 38 | |
| | 39 | Доколку условот е исполнет, се креира запис во табелата `Treatments`, а датумот автоматски се поставува преку: |
| | 40 | |
| | 41 | {{{ |
| | 42 | CURRENT_DATE |
| | 43 | }}} |
| | 44 | |
| | 45 | 5. **Логика на работа:** |
| | 46 | Оваа процедура имплементира контрола на процесот на конзервација. Во реален музејски или археолошки контекст, не секој предмет може веднаш да биде обработуван – некои предмети можат да бидат веќе во процес на реставрација, дел од изложба, во транспорт или привремено недостапни. |
| | 47 | |
| | 48 | Со ова се обезбедува конзистентност во евиденцијата на третмани и се спречуваат нелогични операции. |
| | 49 | |
| | 50 | 6. **Пример на употреба:** |
| | 51 | |
| | 52 | {{{ |
| | 53 | CALL add_treatment( |
| | 54 | 804822, |
| | 55 | 'Чистење' |
| | 56 | ); |
| | 57 | }}} |
| | 58 | |
| | 59 | 7. **Заклучок:** |
| | 60 | Процедурата `add_treatment` претставува важен дел од конзерваторскиот workflow во системот. Таа овозможува сигурна евиденција на реставраторски активности, спречува внесување третмани врз недостапни предмети и обезбедува доследна документација на интервенциите врз културното наследство. |
| | 61 | |
| | 62 | |
| | 63 | |
| | 64 | === Процедура 2: Барање пристап за истражување (request_access) === |
| | 65 | |
| | 66 | 1. **Намена:** |
| | 67 | Процедурата `request_access` е наменета за креирање ново барање за истражувачки пристап до конкретен археолошки предмет. Нејзината главна цел е да го моделира процесот на институционално одобрување на пристап до чувствителни археолошки информации. |
| | 68 | |
| | 69 | 2. **Случај на употреба:** |
| | 70 | Во реален систем за културно наследство, не секој корисник има директен пристап до сите предмети. Истражувачи, археолози и надворешни институции мора прво да поднесат барање за пристап, кое потоа може да биде одобрено или одбиено од институцијата која управува со предметот. |
| | 71 | |
| | 72 | 3. **Причина за употреба на процедура:** |
| | 73 | Процедурата е воведена со цел да се централизира процесот на поднесување барања за пристап. |
| | 74 | |
| | 75 | Наместо секој корисник директно да внесува записи во `Researcher_Access`, процедурата: |
| | 76 | |
| | 77 | * автоматски поставува датум на барањето |
| | 78 | * автоматски поставува статус „Во обработка“ |
| | 79 | * гарантира стандардизиран процес на внес |
| | 80 | |
| | 81 | 4. **Имплементација:** |
| | 82 | |
| | 83 | Процедурата прима: |
| | 84 | |
| | 85 | * `p_user_id` |
| | 86 | * `p_object_id` |
| | 87 | * `p_institution_id` |
| | 88 | |
| | 89 | При внесување автоматски се поставува: |
| | 90 | |
| | 91 | {{{ |
| | 92 | CURRENT_DATE |
| | 93 | }}} |
| | 94 | |
| | 95 | како датум на барање, а статусот автоматски добива вредност: |
| | 96 | |
| | 97 | {{{ |
| | 98 | 7 -- во обработка |
| | 99 | }}} |
| | 100 | |
| | 101 | со што новото барање не може веднаш да биде одобрено. |
| | 102 | |
| | 103 | 5. **Логика на работа:** |
| | 104 | Оваа процедура ја имплементира институционалната контрола на пристап до археолошки предмети. Во реална средина, дел од артефактите може да бидат чувствителни, недостапни за јавноста или во процес на научна обработка. |
| | 105 | |
| | 106 | Со користење на оваа процедура се обезбедува: |
| | 107 | |
| | 108 | * следење на кој корисник побарал пристап |
| | 109 | * следење на институцијата од која доаѓа барањето |
| | 110 | * централизирана контрола на одобрување |
| | 111 | |
| | 112 | 6. **Пример на употреба:** |
| | 113 | |
| | 114 | {{{ |
| | 115 | CALL request_access( |
| | 116 | 10, |
| | 117 | 804822, |
| | 118 | 1 |
| | 119 | ); |
| | 120 | }}} |
| | 121 | |
| | 122 | 7. **Заклучок:** |
| | 123 | `request_access` претставува важен механизам за контрола на истражувачки пристап и обезбедува правилна имплементација на безбедносната политика на системот. |
| | 124 | |
| | 125 | |
| | 126 | |
| | 127 | === Процедура 3: Додавање автор во публикација (add_author_to_publication) === |
| | 128 | |
| | 129 | 1. **Намена:** |
| | 130 | Процедурата `add_author_to_publication` е наменета за поврзување на автор со научна публикација. |
| | 131 | |
| | 132 | 2. **Случај на употреба:** |
| | 133 | Во археолошките и научните истражувања, една публикација често има повеќе автори, а еден автор може да учествува во повеќе публикации. Оваа M:N релација е реализирана преку табелата `Publication_Authors`. |
| | 134 | |
| | 135 | 3. **Причина за употреба на процедура:** |
| | 136 | Избрана е процедура бидејќи е потребна дополнителна проверка за спречување дупликати. |
| | 137 | |
| | 138 | Пред внесување се проверува: |
| | 139 | |
| | 140 | {{{ |
| | 141 | IF EXISTS ( |
| | 142 | SELECT 1 |
| | 143 | FROM Publication_Authors |
| | 144 | ) |
| | 145 | }}} |
| | 146 | |
| | 147 | со што се спречува ист автор повеќепати да биде поврзан со истата публикација. |
| | 148 | |
| | 149 | 4. **Имплементација:** |
| | 150 | Процедурата прима: |
| | 151 | |
| | 152 | * `p_publication_id` |
| | 153 | * `p_author_id` |
| | 154 | |
| | 155 | Доколку авторот веќе постои во публикацијата: |
| | 156 | |
| | 157 | {{{ |
| | 158 | RAISE NOTICE 'Авторот веќе постои'; |
| | 159 | }}} |
| | 160 | |
| | 161 | во спротивно се врши внес. |
| | 162 | |
| | 163 | 5. **Логика на работа:** |
| | 164 | Оваа процедура обезбедува точна научна евиденција и спречува логички неконзистентни записи. |
| | 165 | |
| | 166 | 6. **Пример на употреба:** |
| | 167 | |
| | 168 | {{{ |
| | 169 | CALL add_author_to_publication( |
| | 170 | 50, |
| | 171 | 12 |
| | 172 | ); |
| | 173 | }}} |
| | 174 | |
| | 175 | 7. **Заклучок:** |
| | 176 | Процедурата овозможува конзистентна и точна евиденција на научно авторство, што е особено важно кај академски публикации и археолошка документација. |
| | 177 | |
| | 178 | |
| | 179 | |
| | 180 | === Процедура 4: Додавање нов археолошки предмет (add_new_object) === |
| | 181 | |
| | 182 | 1. **Намена:** |
| | 183 | Процедурата `add_new_object` е наменета за евидентирање нов археолошки предмет во системот. |
| | 184 | |
| | 185 | 2. **Случај на употреба:** |
| | 186 | При откривање на нов предмет на археолошки локалитет, потребно е негово иницијално внесување во базата, заедно со инвентарен број, локалитет, статус и корисникот кој го пронашол. |
| | 187 | |
| | 188 | 3. **Причина за употреба на процедура:** |
| | 189 | Избрана е процедура за да се централизира процесот на иницијална регистрација и да се избегне нецелосен внес на податоци. |
| | 190 | |
| | 191 | 4. **Имплементација:** |
| | 192 | Процедурата прима: |
| | 193 | |
| | 194 | * инвентарен број |
| | 195 | * наслов |
| | 196 | * статус |
| | 197 | * локалитет |
| | 198 | * корисник кој го пронашол предметот |
| | 199 | |
| | 200 | и директно внесува запис во `Objects`. |
| | 201 | |
| | 202 | 5. **Логика на работа:** |
| | 203 | Оваа процедура ја моделира реалната археолошка документација, каде секој предмет мора да има основни метаподатоци веднаш по неговото пронаоѓање. |
| | 204 | |
| | 205 | 6. **Пример на употреба:** |
| | 206 | |
| | 207 | {{{ |
| | 208 | CALL add_new_object( |
| | 209 | 'INV-2025-001', |
| | 210 | 'Керамичка вазна', |
| | 211 | 1, |
| | 212 | 10, |
| | 213 | 3 |
| | 214 | ); |
| | 215 | }}} |
| | 216 | |
| | 217 | 7. **Заклучок:** |
| | 218 | `add_new_object` овозможува конзистентен и стандарден процес на регистрација на нови археолошки предмети. |
| | 219 | |
| | 220 | |
| | 221 | |
| | 222 | === Процедура 5: Целосна каталогизација на предмет (catalog_object) === |
| | 223 | |
| | 224 | 1. **Намена:** |
| | 225 | Процедурата `catalog_object` е наменета за целосна каталогизација на археолошки предмет. |
| | 226 | |
| | 227 | 2. **Случај на употреба:** |
| | 228 | По иницијално внесување, предметите треба да добијат култура, категорија и материјал. Бидејќи овие информации се распоредени во повеќе табели, процесот би барал повеќе рачни `INSERT` операции. |
| | 229 | |
| | 230 | 3. **Причина за употреба на процедура:** |
| | 231 | Избрана е процедура бидејќи процесот бара координиран внес во повеќе табели: |
| | 232 | |
| | 233 | * `Objects` |
| | 234 | * `Object_Classification` |
| | 235 | * `Materials_Objects` |
| | 236 | |
| | 237 | 4. **Имплементација:** |
| | 238 | Најпрво се внесува предметот во `Objects`. |
| | 239 | |
| | 240 | Потоа преку: |
| | 241 | |
| | 242 | {{{ |
| | 243 | RETURNING object_id INTO v_object_id |
| | 244 | }}} |
| | 245 | |
| | 246 | се зачувува ID-то на новокреираниот предмет. |
| | 247 | |
| | 248 | Потоа автоматски се креираат записи во: |
| | 249 | |
| | 250 | * `Object_Classification` |
| | 251 | * `Materials_Objects` |
| | 252 | |
| | 253 | 5. **Логика на работа:** |
| | 254 | Оваа процедура ја моделира реалната каталогизација на археолошки предмет, каде објектот не е само физички запис, туку мора да биде класифициран според култура, категорија и материјал. |
| | 255 | |
| | 256 | 6. **Пример на употреба:** |
| | 257 | |
| | 258 | {{{ |
| | 259 | CALL catalog_object( |
| | 260 | 'INV-2025-021', |
| | 261 | 'Монета', |
| | 262 | 1, |
| | 263 | 3, |
| | 264 | 8, |
| | 265 | 2, |
| | 266 | 5, |
| | 267 | 1 |
| | 268 | ); |
| | 269 | }}} |
| | 270 | |
| | 271 | 7. **Заклучок:** |
| | 272 | `catalog_object` претставува централен механизам за каталогизација во системот, кој обезбедува конзистентност, автоматизација и намалување на човечки грешки при внес на археолошки податоци. |