Changes between Version 2 and Version 3 of функции,процедури,тригери


Ignore:
Timestamp:
06/14/26 19:05:58 (11 days ago)
Author:
231233
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • функции,процедури,тригери

    v2 v3  
    2929END;
    3030$$ LANGUAGE plpgsql;
     31get_reservation_total_with_discount
     32
     33Ја пресметува вкупната цена на сите тикети за одредена резервација со применет попуст од промоција. Го зема збирот на цените на тикетите и го намалува според процентот на попуст. Се користи при финализирање на резервација кога корисникот применува промотивен код.
    3134-----------------Слободни места-------------
    3235CREATE OR REPLACE FUNCTION get_available_seats(
     
    5457END;
    5558$$ LANGUAGE plpgsql;
     59get_available_seats
     60
     61Го враќа бројот на слободни места за одредена проекција. Го пресметува капацитетот на салата намален за бројот на веќе продадени тикети. Се користи при прикажување на достапност на места пред купување тикет.
    5662-------------------Просечен рејтинг--------------
    5763CREATE OR REPLACE FUNCTION get_movie_avg_rating(
     
    7076END;
    7177$$ LANGUAGE plpgsql;
     78get_movie_avg_rating
     79
     80Го пресметува просечниот рејтинг на филм врз основа на сите рецензии. Враќа заокружена вредност на 2 децимали. Се користи при прикажување на оценката на филмот на корисниците.
    7281----------------Процедури--------------------
    7382----------------Генерирање тикети за проекција  — ------------
     
    148157END;
    149158$$;
     159Процедури
     160generate_tickets_for_screening
     161
     162Автоматски генерира тикети за секое седиште во салата за одредена проекција. Содржи валидации за постоење на проекцијата, датумот, цената, салата и седиштата. Се користи од администраторот при додавање нова проекција во системот.
    150163-------------------------Процедура 2 — Купување тикет со производи-----------------
    151164CREATE OR REPLACE PROCEDURE purchase_ticket_with_products(
     
    228241END;
    229242$$;
     243purchase_ticket_with_products
     244
     245Овозможува купување на тикет заедно со производи (пр. пуканки, пијалоци) во една трансакција. Содржи валидации за тикетот, корисникот, резервацијата и производите, и прави ROLLBACK при грешка. Се користи при процесот на купување тикет од страна на корисникот.
    230246----------------------------Процедура 3 — Додај review за филм--------------------
    231247CREATE OR REPLACE PROCEDURE add_movie_review(
     
    288304END;
    289305$$;
     306add_movie_review
     307
     308Овозможува корисник да остави рецензија и рејтинг за филм само ако купил тикет за истиот. Содржи валидации за постоење на корисникот, филмот, рејтингот (1-10) и дали веќе оставил рецензија. Се користи при оставање feedback по гледање на филмот.
    290309
    291310-----------------------Тригери------------------------------------
     
    309328FOR EACH ROW
    310329EXECUTE FUNCTION check_seat_availability();
     330trg_check_seat_availability
     331
     332Пред секое внесување на тикет проверува дали седиштето е веќе зафатено за таа проекција. Ако седиштето е зафатено, фрла исклучок и го спречува дуплирањето. Ја имплементира бизнис логиката за спречување на двојна резервација на исто место.
    311333-----------------------Тригер 2 — Автоматска нотификација при резервација-----------
    312334    CREATE OR REPLACE FUNCTION notify_on_reservation()
     
    327349FOR EACH ROW
    328350EXECUTE FUNCTION notify_on_reservation();
     351trg_notify_on_reservation
     352
     353По успешно креирање на резервација автоматски испраќа нотификација до корисникот. Ја имплементира логиката за информирање на корисникот за статусот на неговата резервација.
    329354-----------------------Тригер 3 — Автоматски COMPLETED статус----------------------
    330355CREATE OR REPLACE FUNCTION complete_past_reservations()
     
    347372FOR EACH ROW
    348373EXECUTE FUNCTION complete_past_reservations();
     374trg_complete_past_reservations
     375
     376По внесување на нова проекција, автоматски ги означува минатите резервации со статус COMPLETED. Ја имплементира бизнис логиката за автоматско завршување на резервации чија проекција веќе поминала.