wiki:Евалуација

Евалуација

Примери на индекси

Индекс врз колони што често се филтрираат: departure_date, return_date:

CREATE INDEX ind_flight_date_range ON flight(departure_date, return_date);

Пример - Овој индекс е корисен кога се филтрираат записи во табелата flights според колоната departure_date и return_date.

SELECT * FROM flights
WHERE departure_date >= '2025-05-28' AND return_date< '2026-05-28';

Индекс за JOIN помеѓу Booking и Payment:

CREATE INDEX ind_payment_booking ON payment(bookingid);

Примери за тригери

  1. Проверка дали одреден item веќе е во Wishlist
    CREATE OR REPLACE FUNCTION validate_wishlist_entry()
    RETURNS TRIGGER AS $$
    BEGIN
       IF EXISTS (
           SELECT 1 FROM Wishlist
           WHERE UserID = NEW.UserID AND TargetID = NEW.TargetID
       ) THEN
           RAISE EXCEPTION 'Item already exists in wishlist!';
       END IF;
       RETURN NEW;
    END;
    $$ LANGUAGE plpgsql;
    CREATE TRIGGER check_wishlist_entry
    BEFORE INSERT ON Wishlist
    FOR EACH ROW
    EXECUTE FUNCTION validate_wishlist_entry();
    
    
  1. Да се валидира нов корисник
    CREATE OR REPLACE FUNCTION validate_new_user()
    RETURNS TRIGGER AS $$
    BEGIN
       IF EXISTS (SELECT 1 FROM application_user WHERE Email = NEW.Email) THEN
           RAISE EXCEPTION 'Email already registered!';
       END IF;
       IF LENGTH(NEW.Password) < 8 THEN
           RAISE EXCEPTION 'Password must be at least 8 characters long!';
       END IF;
       RETURN NEW;
    END;
    $$ LANGUAGE plpgsql;
    CREATE TRIGGER check_new_user
    BEFORE INSERT ON application_user
    FOR EACH ROW
    EXECUTE FUNCTION validate_new_user();
    
    
  1. Превенција на креирање дупликат тикет за поддршка
CREATE OR REPLACE FUNCTION prevent_duplicate_ticket()
RETURNS TRIGGER AS $$
BEGIN
   IF EXISTS (
       SELECT 1 FROM SupportTicket
       WHERE UserID = NEW.UserID
       AND Description = NEW.Description
       AND Status IN ('OPEN', 'RESOLVED')
   ) THEN
       RAISE EXCEPTION 'A similar issue has already been reported!';
   END IF;
   RETURN NEW;
END;
$$ LANGUAGE plpgsql;

Погледи

Views имаме креирано во фаза 2

Last modified 4 days ago Last modified on 05/28/25 14:16:55
Note: See TracWiki for help on using the wiki.