Changes between Version 4 and Version 5 of DatabaseProgramming


Ignore:
Timestamp:
06/14/26 19:12:33 (6 days ago)
Author:
231025
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DatabaseProgramming

    v4 v5  
    33
    44
    5 Во оваа фаза се надоградуваме со функции и процедури што ќе помогнат дел од честите операции во базата — отворање записник, додавање прекршок, наплата на казна, додавање категорија на возачка — да се извршуваат преку еден повик, со сите потребни проверки веќе вградени во нив. Исто така искористивме и тригери за работите што треба да се случуваат автоматски, како пресметката на вкупниот износ во уплатата и строга контрола на интегритетот, без рачно ажурирање.[[BR]]
     5Во оваа фаза се надоградуваме со функции и процедури што ќе помогнат дел од честите операции во базата-отворање записник, додавање прекршок, наплата на казна, додавање категорија на возачка-да се извршуваат преку еден повик, со сите потребни проверки веќе вградени во нив. Исто така искористивме и тригери за работите што треба да се случуваат автоматски, како пресметката на вкупниот износ во уплатата и строга контрола на интегритетот, без рачно ажурирање.[[BR]]
    66[attachment:programming.sql programming.sql]
    77
     
    99== 1. Тригери ==
    1010
    11 === Тригер 1: ===
     11=== Тригер 1: trigger_azuriraj_iznos_uplata===
    1212
    1313Секој пат кога ќе се додаде, измени или избрише ставка во `Stavka_Zapisnik`, тригерот ја пресметува вкупната сума на сите казни за тој записник и ја запишува во соодветната уплата. Така износот во `Uplata` секогаш е точен и не мора рачно да го ажурираме.
     
    5454}}}
    5555
    56 === Тригер 2: ===
     56=== Тригер 2: trigger_proverka_raboti_vo===
    5757
    5858Овој тригер се извршува пред секое вметнување или измена на податоците во табелата `Raboti_vo` со цел да се зачува бизнис логиката на системот. Тој гарантира дека полицаецот кој се доделува навистина постои во базата и дека датумот на започнување со работа не е празен. Дополнително, тригерот спречува еден полициски службеник да има активен работен однос (каде `datum_do IS NULL`) во повеќе од една полициска станица истовремено.
     
    9191}}}
    9292
    93 === Тригер 3: ===
     93=== Тригер 3: trigger_proverka_registracija===
    9494
    9595Овој тригер е задолжен за проверка на интегритетот на податоците пред да се изврши вметнување или ажурирање во табелата `Registracija`. Тој прави соодветна валидација за постоење на сопственикот (граѓанинот) и самото возило преку нивните примарни клучеви. Како клучен дел од валидацијата, тригерот користи регуларен израз (REGEX) за да осигура дека регистарската табличка го следи официјалниот македонски стандард (на пр. SK-1234-AA или BT-888-ZZ).
     
    232232
    233233=== Процедура 3: plati_kazna ===
    234 Ја плаќа казната за даден записник — го менува статусот во 'Plateno', го запишува датумот и начинот на плаќање. Проверува дали уплатата постои, дали веќе е платена, дали има износ за наплата и дали начинот на плаќање е валиден.
     234Ја плаќа казната за даден записник-го менува статусот во 'Plateno', го запишува датумот и начинот на плаќање. Проверува дали уплатата постои, дали веќе е платена, дали има износ за наплата и дали начинот на плаќање е валиден.
    235235
    236236{{{#!sql
     
    344344Функција што ги обработува задоцнетите неплатени казни: на неплатените постари од 8 дена им го зголемува износот за 50% (само ако сè уште не се зголемени), а на тие постари од 2 месеци им го менува статусот во 'Sudska_postapka'. Враќа порака дека постапката е успешно извршена.
    345345
    346 Прво ја прошируваме табелата Uplata со новиот статус и со колона за обележување дали казната е веќе зголемена:
     346Прво ја прошируваме табелата `Uplata` со новиот статус и со колона за обележување дали казната е веќе зголемена:
    347347{{{#!sql
    348348ALTER TABLE Uplata DROP CONSTRAINT IF EXISTS uplata_status_check;