wiki:DatabaseProgramming

Functions, procedures and triggers

Функции

Certification Expiry

  • Параметри: DaysUntil (број на денови од моменталниот датум до датумот на истекување)
  • Резултат: табела со колони - EmployeeID, Name, Surname, Active, CertificationID, CertificationType, AirplaneModel, ExpirationDate, DaysUntilExpiration, IsExpired

Со оваа фунцкија се излистуваат сите сертификати и медицински прегледи на вработените кои истекуваат за DaysUntil.

CertificationExpiry.sql

Connecting Flights

  • Параметри: DepartureCode (код на аеродромот од кој се полетува), ArrivalCode (кон на аеродромот од кој се слетуава), Date (датум на лет)
  • Резултат: табела со колони - flight1_Number, flight1_Departure, flight1_Arrival, connection, layoverMinutes, flight2_Number, flight2_Departure, flight2_Arrival

Оваа функција пронаоѓа лет од аеродром со код DepartureCode до аеродром со код ArrivalCode на датум Date. Многу дестинации и рути помеѓу два аеродроми во реални авиокомпании немаат директни летови, туку најчесто се поврзани. Со функцијата Connecting Flights овозможено е пронаоѓање на некои поврзани летови, при што се нуди информација и за аеродромот каде се поврзуваат и времето на чекање. Функцијата враќа само два поврзани лета поради тоа што во реалното функционирање на авиокомпании се употребуваат хабови (аердроми кои имаат летови до речиси сите понудени дестинации) - со ова се избегнува потребата од поврзување на повеќе летови, со што се подобрува искуството на корисниците.

ConnectingFlights.sql

Find Alternative Flights

  • Параметри: CancelledFlightID (ID на откажаниот лет) и MaxHours (максимален број на часови од полетувањето на откажаниот лет и ново пронајдениот лет)
  • Резултат: табела со колони - FlightID, FlightNumber, Departure, Arrival, HoursFromOriginal, SeatClass, AvailableSeats

Оваа функција наоѓа алтернативни летови од одреден лет при откажување. Како аргументи ги прима ID на откажаниот лет, преку чии податоци знае како да пребара нови летови, и максималниот број на часови до полетувањето на новиот пронајден лет. За секој лет се прикажуваат детали, како и бројот на слободни седишта од секоја класа.

FindAlternativeFlights.sql

Get Flight Crew

  • Параметри: FlightID (ID на летот)
  • Резултат: табела со колони - EmployeeId, Name, Surname, DateOfBirth, Rolе

Оваа функција враќа детални податоци за вработените на секој лет - лични податоци, како и нивната улога на летот (пилот, копилот или стјуардеса).

GetFlightCrew.sql

Процедури

Add Baggage

  • Параметри: TicketId (ID на карта), BaggageTypeId (ID на тип на багаж), Weight (тежина на багаж), Height (висина на багаж), Length (должина на багаж), Width (ширина на багаж)

Оваа процедура се употребува за додавање на багаж на одредена карта. Кога патникот сака да додаде нов багаж на својата карта за одреден лет, процедурата ги проверува соодветно валидноста на летот, картата, како и димензиите во споредба со одбраниот тип на багаж. По проверките за валидација се додава нова редица во табелата Baggage.

AddBaggage.sql

Assign Seat

  • Параметри: TicketID (ID на картата), SeatID (ID на седиштето на конкретен лет)

Оваа процедура се употребува за доделување на слободно седиште на некој патник на даден лет. Се проверува дали постојат летот и картата на корисникот, дали корисникот веќе се има качено на авионот (картата има статус Boarded), дали веќе е доделено тоа седиште на таа карта, дали седиштето припаѓа на истиот лет со картата, дали се совпаѓа со избраната класа, и дали е веќе резервирано. Доколку не е, во табелата Ticket се ажурира полето SeatID, и на атрибутот Reserved во табелата Seat му се доделува вредност true.

AssignSeat.sql

Check In

  • Параметри: TicketID (ID на картата)

Оваа процедура сетира статус на картата - Checked In. Пред да се направи тоа, се прават проверки дали картата не е Boarded и дали е веќе CheckedIn. Исто така, се проверува дали е започнат процесот на чекирање (од 8 часа до 45 минути до полетување). Исто така, доколку нема доделено седиште, системот автоматски му доделува седиште од иста класа како со картата на патникот.

CheckInTicket.sql

Board

  • Параметри: TicketID (ID на картата)

Оваа процедура сетира статус на картата - Boarded. Пред да се направи тоа, се прават проверки дали картата е CheckedIn и дали веќе е Boarded. Исто така, се проверува дали е дозволен влез на авионот (од 1 час до 15 минути до полетување).

Board.sql

Cancel Flight

  • Параметри: FlightID (ID на летот), CancellationReason (причина за откажување)

Со оваа процедура вработените во авиокомпанијата можат да откажат одреден лет и да наведат причина за истото. Се вршат проверки дали летот постои, дали е веќе откажан или дали е веќе полетан. Доколку поминат проверките, се менува статусот на летот во Cancelled, се додава нова колона во табелата CancelledFlight и се менува статусот на сите карти за тој лет во Cancelled.

CancelFlight.sql

Change Flight Status

  • Параметри: FlightID (ID на летот), StatusID (ID на новиот статус)

Со оваа процедура се врши промена на статусот на одреден лет од страна на вработените во авиокомпанијата. Се вршат проверки за тоа дали летот и статусот навистина постојат, дали е летот веќе слетан или откажан (не е дозволено да се промени статусот на слетан или откажан лет).

ChangeFlightStatus.sql

Purchase Ticket

  • Параметри: PassangerID (ID на патникот), FlightID (ID на летот), SeatClassID (ID на класата седиште), SeatID (ID на резервирано седиште), ReservationID (ID на резервација)

Со оваа процедура е овозможено купување на билет за одреден лет. Потребно е да се внесат корисникот, летот, класата, резервацијата и незадолжително може да се внесе и резервирано седиште доколку корисникот сака да го резервира однапред (дополнителната цена се додава на вкупната цена на билетот). Се прават проверки дали постои летот, дали е дозволено купување на билет (треба да има повеќе од 3 часа време до полетување), дали летот е откажан и слично. На крај, се пресметува цената на билетот според растојанието и класата и се додава нова редица во колоната Ticket.

PurchaseTicket.sql

Тригери

Award Mile Points

При слетување на некој лет (ажурирање на статусот на лет во Arrived) на секој патник кој се качил на авионот (поседува карта со статус Boarded) му се доделуваат поени според растојанието на летот и класата на седиштето.

AwardMilePoints.sql

Increase Final Price Baggage

При додавање на куфер на карта на одреден корисник, крајната цена се зголемува според типот на багаж кој се додава. Овој тригер одговара на процедурата Add Baggage.

IncreaseFinalPriceBaggage.sql

Set Seat Reserved

Со купување на нова карта (додавање на редица во табелата Ticket), доколку има однапред резервирано седиште неговиот статус се менува во Reserved. Овој тригер одговара на процедурата Purchase Ticket.

SetSeatReserved.sql

Update Airplane Flight Hours

Кога статусот на некој лет се менува во Arrived, вкупниот број на часови на летање на авионот се зголемуваат за времето кое било потребно да се помине растојанието од почетната до крајната дестинација на летот.

UpdateAirplaneFlightHours.sql

Update Last Maintenance

При извршување на сервис на некој авион (додавање на редица во табелата Maintenance), потребно е атрибутот LastMaintenance на авионот да се ажурира на ID на новиот сервис.

UpdateLastMaintenance.sql

Last modified 4 days ago Last modified on 05/21/26 16:06:23

Attachments (16)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.