Documente Academic
Documente Profesional
Documente Cultură
2023
Scopul lucrării:
Sarcina lucrării:
Sarcinile vor fi aplicate asupra bazei de date (care conține date despre zboruri avia), a cărei
descriere scurtă este propusă în continuare:
Tabelul “Aircrafts”, fiecare model de aeronavă este identificat prin codul său din 3 cifre
(aircraft_code). De asemenea, sunt indicate numele modelului (model), viteza maximă (max_speed) și
altitudinea maximă (max_altitude).
Tabelul “Airports”, va conține câmpurile identificatorul aeroportului format din 3 litere
(id_airport), denumirea aeroportului (name_airport), orașul în care se află aeroportul (city) și fusul orar
(timezone). Cîmpul id_airport va fi cheie primară pentru tabelul dat.
Tabelul “Boarding_passes”, la înregistrarea pentru zbor, care este posibil de a efectua din timp,
pasagerului i se eliberează un bilet. Tabelul conține câmpurile id-ul biletului (id_ticket), numărul
biletului de îmbarcare (boarding_no) și numărul locului în avion (seat_no). Cîmpul id_ticket va fi cheie
primară pentru tabelul dat.
Tabelul “Bookings”, fiecare rezervare poate include mai multe bilete, câte unul pentru fiecare
pasager. Biletul, la rândul său, poate include mai multe zboruri. Informații despre rezervări se mai conține
și în tabelul Tickets. Tabelul conține următoarele câmpuri id-ul rezervării (booking_no), data rezervării
(booking_date) și câmpul ce conține costul total al tuturor pasagerilor incluși în rezervare
(total_amount). Cîmpul booking_no va fi cheie primară pentru tabelul dat.
Tabelul “Flights”, conține câmpul id-ul zborului (id_flight), fiind și cheia primară, la fel conține
și numărul zborului (flight_no). Un zbor mereu conectează două puncte – aeroporturile de plecare
(id_airport_departure) și sosire (id_airport_arrival), iar dacă nu există un zbor direct de la un aeroport
la altul, atunci biletul include mai multe zboruri necesare. Fiecare zbor are o dată și o oră de plecare
(time_departure) și sosire (time_arrival). Ora reală de plecare (actual_departure) și sosire
(actual_arrival) este diferită, de obicei nu prea mult, dar uneori timp de câteva ore dacă zborul este
întârziat. Câmpul status_flight, reprezintă în ce stare este acum zborul, de exemplu: Arrived, Scheduled
și ultimul camp ce va face legătura cu alt tabel este aircraft_code.
Tabelul “Seats”, fiecare scaun este determinat de numărul său (seat_no) și are o clase de servicii
atribuită (tarif_conditions) – Economy, Comfort sau Business. Acest tabel are 2 cheii primare
aircraft_code și seat_no.
2
Tabelul “Ticket_flights”, prin intermediul acestui tabel se face conexiunea dintre Flights
Tickets, iar fiecare zbor sunt reprezentate prin cost (amount) și clasa de serviciu (tarif_conditions).
Cheia primară a acestui tabel este id_ticket.
Tabelul “Tickets”, biletul este format dintr-un număr unic din 13 cifre (id_ticket), la fel conține
și identificatorul pasagerului (id_passenger), la fel numele și prenumele acestuia (passenger_name) și în
final informații de contact (contact_data). Cheia primară a tabelului este id_ticket.
3
--4. Să se obțină lista locurilor cu clasa de tarifare dintr-o aeronavă.
SELECT a.aircraft_code,
a.model,
s.seat_no,
s.tarif_conditions
FROM aircrafts a
JOIN seats s ON a.aircraft_code = s.aircraft_code
WHERE a.model LIKE 'Boeing%'
ORDER BY s.seat_no;
4
--6. Să se afle numărul de locuri clasate pe condițiile de tarifare.
5
--9. Să se afle denumirea și numărul orașelor de pornire.
6
--11. Să se afle timpul de pornire și timpul de sosire în dependeță de orașele de sosire.
SELECT TOP 10 *
FROM Bookings
ORDER BY total_amount DESC
7
--14. Să se afle din ce bilete constă rezervarea cu numărul cutare.
SELECT id_ticket,
id_passenger,
passenger_name
FROM Tickets
WHERE booking_no = '000A39';
8
--18. Să se afișeze toate fusurile orale din SUA.
9
--21. Afișați zborurile a căror oră de plecare (actual_departure) și sosire (actual_arrival) este
nulă.
--22. Afișați zborurile a căror oră de plecare (actual_departure) și sosire (actual_arrival) este
nulă și statutul zborului finisat.
10
--24. Afișați toate locurile cu status de Economy.
--25. Afișați locurile din avion cu status de Comfort ce costă sub 300 euro.
11
--26. Afișați pasagerii ce au mers în scaun Economy cu prețul sub 200 euro.
12
--29. Numărul de locuri pe tarife a avioanelor.
SELECT a.*
FROM Aircrafts a
INNER JOIN (SELECT aircraft_code, MAX(max_speed) as Max_Speed, MAX(max_altitude)
as Max_Altitude
FROM Aircrafts
GROUP BY aircraft_code) groupeda
ON a.aircraft_code = groupeda.aircraft_code
--31. Lista pasagerilor, data zborului, aeroportul din care a decolat și orașul.
13
--32. Cea mai mare sumă achitată pentru bilet.
--33. ID-urile și denumirile aeropoartelor unde au fost cele mai multe decolări.
SELECT passenger_name,
Substring(passenger_name, 1, CHARINDEX(' ', passenger_name)) as FirstName,
Substring(passenger_name, CHARINDEX(' ', passenger_name)+1, LEN(passenger_name)) as
LastName
Substring(passenger_name, LEN(Substring(passenger_name, 1, (CHARINDEX(' ',
passenger_name)+1))), 20) as LastName
FROM Tickets
14
15
--35. Câte zboruri au fost efectuate în luna X.
Concluzie
În lucrarea de laborator curentă am studiat elementele de bază ale limbajului Transact-
SQL, a structurii instrucțiunii SELECT și a tipurilor de funcții utilizate în interogări.
Microsoft SQL Server 2017 reprezinta cel mai puternic si semnificativ instrument de
gestiune a bazelor de date oferind posibilitati si facilitate de constructive si gestiune a bazelor de
date programatorului și administratorului.
Am învățat să formulez interogări pentru extragerea datelor necesare din tabelele
bazei de date și am practicat instrucțiunea SELECT pentru formularea interogărilor.
16