Changes between Initial Version and Version 1 of DatabaseProgramming


Ignore:
Timestamp:
05/26/26 22:12:14 (20 hours ago)
Author:
231117
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DatabaseProgramming

    v1 v1  
     1== Функции ==
     2
     3=== '''fn_artist_average_rating(p_bookable_id INT)''' ===
     4Оваа функција ја пресметува просечната оцена за даден артист/бенд (bookable) така што ги зема сите рецензии (''Review'') за неговите букинзи и ја враќа средната вредност заокружена на две децимали.
     5
     6Со тоа се имплементира бизнис логиката за прикажување на рејтинг на артистите во апликацијата и за статистика/сортирање по оцена.
     7
     8=== '''fn_artist_total_earnings(p_bookable_id INT)''' ===
     9Функцијата ја собира сумата на сите плаќања со статус ''PAID'' за сите букинзи поврзани со даден артист или бенд.
     10
     11Така се имплементира бизнис логиката за пресметка на вкупната заработка на артистот, која може да се прикаже во неговиот профил или во администраторскиот дел.
     12
     13=== '''fn_check_artist_availability(p_bookable_id INT, p_date DATE)''' ===
     14Оваа функција проверува дали артистот има барем еден запис во ''AvailabilitySlot'' со статус ''AVAILABLE'' на дадениот датум и враќа TRUE/FALSE.
     15
     16Со тоа се имплементира логиката за проверка на достапност при креирање понуда или букинг – апликацијата прво проверува дали артистот е слободен на конкретниот датум.
     17
     18=== '''fn_total_client_bookings(p_client_id INT)''' ===
     19Функцијата го брои бројот на букинзи за даден клиент преку поврзување на ''BookingRequest'', ''Offer'' и ''Booking'' и враќа цел број.
     20
     21Ова ја покрива бизнис логиката за статистика за клиентот (на пример колку настани има букирано), што може да се користи во неговиот профил или за аналитика.
     22
     23== Процедури ==
     24
     25=== '''sp_create_booking_request(p_client_id, p_duration_id, p_event_type, p_event_date, p_location_id)''' ===
     26Процедурата креира нов запис во ''BookingRequest'' со основните информации за настанот (клиент, траење, тип, датум, локација).
     27
     28На тој начин ја инкапсулира бизнис операцијата „клиентот испраќа барање за букинг“ и осигурува дека секогаш се пополнуваат потребните полиња на централизирано место.
     29
     30=== '''sp_cancel_booking(p_booking_id INT)''' ===
     31Оваа процедура го ажурира полето ''booking_status'' на избраниот букинг во вредност ''CANCELLED''.
     32
     33На тој начин се имплементира логиката за откажување на букинг од страна на клиент или администратор, а преку тригерот за историја автоматски се логира и промената на статусот.
     34
     35=== '''sp_create_payment(p_booking_id INT, p_amount NUMERIC)''' ===
     36Процедурата додава нов запис во ''Payment'' за одреден букинг, со зададена сума и статус ''PAID''.
     37
     38Така се имплементира делот од бизнис логиката за евиденција на успешно извршени плаќања, што потоа се користи и во функцијата за вкупна заработка на артистите.
     39
     40== Тригери ==
     41
     42=== '''fn_update_slot_status() / trg_update_slot_status''' ===
     43Овој тригер се активира по вметнување (AFTER INSERT) на нов букинг во ''Booking'' и преку функцијата ''fn_update_slot_status'' ги ажурира сите ''AvailabilitySlot'' записи за соодветниот артист на датумот на настанот во статус ''BOOKED''.
     44
     45Со тоа се имплементира бизнис правилото дека кога ќе се потврди букинг за одреден датум, слободните термини за тој датум повеќе не се достапни во календарот на артистот.
     46
     47=== '''fn_prevent_double_booking() / trg_prevent_double_booking''' ===
     48Тригерот се активира пред вметнување (BEFORE INSERT) на нов букинг и во функцијата ''fn_prevent_double_booking'' проверува дали веќе постои букинг со статус ''CONFIRMED'' за истиот артист (bookable_id) и истиот датум на настан (event_date).
     49
     50Ако постои, се крева грешка „Artist already booked on that date!“ и се спречува внесот, со што директно се имплементира бизнис правилото дека артист може да има најмногу еден потврден настап во еден ден.
     51
     52=== '''fn_booking_status_history() / trg_booking_status_history''' ===
     53Овој тригер се активира по ажурирање (AFTER UPDATE) на ''Booking'' кога статусот се менува и преку функцијата ''fn_booking_status_history'' внесува ред во ''BookingStatusHistory'' со новиот статус и времето на промена.
     54
     55Така се имплементира бизнис логиката за водење историја (audit trail) на статусите на букинзите, што е корисно за следење на целиот животен циклус на букинг (''CREATED → CONFIRMED → COMPLETED/CANCELLED'').