Changes between Initial Version and Version 1 of DatabaseProgramming


Ignore:
Timestamp:
05/26/26 14:58:45 (28 hours ago)
Author:
231511
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DatabaseProgramming

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