Changes between Version 4 and Version 5 of DatabaseProgramming
- Timestamp:
- 06/14/26 19:12:33 (6 days ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
DatabaseProgramming
v4 v5 3 3 4 4 5 Во оваа фаза се надоградуваме со функции и процедури што ќе помогнат дел од честите операции во базата — отворање записник, додавање прекршок, наплата на казна, додавање категорија на возачка —да се извршуваат преку еден повик, со сите потребни проверки веќе вградени во нив. Исто така искористивме и тригери за работите што треба да се случуваат автоматски, како пресметката на вкупниот износ во уплатата и строга контрола на интегритетот, без рачно ажурирање.[[BR]]5 Во оваа фаза се надоградуваме со функции и процедури што ќе помогнат дел од честите операции во базата-отворање записник, додавање прекршок, наплата на казна, додавање категорија на возачка-да се извршуваат преку еден повик, со сите потребни проверки веќе вградени во нив. Исто така искористивме и тригери за работите што треба да се случуваат автоматски, како пресметката на вкупниот износ во уплатата и строга контрола на интегритетот, без рачно ажурирање.[[BR]] 6 6 [attachment:programming.sql programming.sql] 7 7 … … 9 9 == 1. Тригери == 10 10 11 === Тригер 1: ===11 === Тригер 1: trigger_azuriraj_iznos_uplata=== 12 12 13 13 Секој пат кога ќе се додаде, измени или избрише ставка во `Stavka_Zapisnik`, тригерот ја пресметува вкупната сума на сите казни за тој записник и ја запишува во соодветната уплата. Така износот во `Uplata` секогаш е точен и не мора рачно да го ажурираме. … … 54 54 }}} 55 55 56 === Тригер 2: ===56 === Тригер 2: trigger_proverka_raboti_vo=== 57 57 58 58 Овој тригер се извршува пред секое вметнување или измена на податоците во табелата `Raboti_vo` со цел да се зачува бизнис логиката на системот. Тој гарантира дека полицаецот кој се доделува навистина постои во базата и дека датумот на започнување со работа не е празен. Дополнително, тригерот спречува еден полициски службеник да има активен работен однос (каде `datum_do IS NULL`) во повеќе од една полициска станица истовремено. … … 91 91 }}} 92 92 93 === Тригер 3: ===93 === Тригер 3: trigger_proverka_registracija=== 94 94 95 95 Овој тригер е задолжен за проверка на интегритетот на податоците пред да се изврши вметнување или ажурирање во табелата `Registracija`. Тој прави соодветна валидација за постоење на сопственикот (граѓанинот) и самото возило преку нивните примарни клучеви. Како клучен дел од валидацијата, тригерот користи регуларен израз (REGEX) за да осигура дека регистарската табличка го следи официјалниот македонски стандард (на пр. SK-1234-AA или BT-888-ZZ). … … 232 232 233 233 === Процедура 3: plati_kazna === 234 Ја плаќа казната за даден записник —го менува статусот во 'Plateno', го запишува датумот и начинот на плаќање. Проверува дали уплатата постои, дали веќе е платена, дали има износ за наплата и дали начинот на плаќање е валиден.234 Ја плаќа казната за даден записник-го менува статусот во 'Plateno', го запишува датумот и начинот на плаќање. Проверува дали уплатата постои, дали веќе е платена, дали има износ за наплата и дали начинот на плаќање е валиден. 235 235 236 236 {{{#!sql … … 344 344 Функција што ги обработува задоцнетите неплатени казни: на неплатените постари од 8 дена им го зголемува износот за 50% (само ако сè уште не се зголемени), а на тие постари од 2 месеци им го менува статусот во 'Sudska_postapka'. Враќа порака дека постапката е успешно извршена. 345 345 346 Прво ја прошируваме табелата Uplataсо новиот статус и со колона за обележување дали казната е веќе зголемена:346 Прво ја прошируваме табелата `Uplata` со новиот статус и со колона за обележување дали казната е веќе зголемена: 347 347 {{{#!sql 348 348 ALTER TABLE Uplata DROP CONSTRAINT IF EXISTS uplata_status_check;
