Subiectul I, cerința 4
Proiectarea unei baze de date
Modelul conceptual cu cinci entități, două chei externe către aceeași tabelă, formele normale, modelul fizic și interogarea clienților care au plătit numerar.
Modelul conceptual
Entitățile
AEROPORT — un aeroport din care pleacă sau în care sosesc zboruri.
Atribute: id_aeroport, denumire, oras, cod_iata.
Identificator unic: id_aeroport.
ZBOR — o cursă organizată de companie, cu aeroporturile și orele ei.
Atribute: id_zbor, id_aerop_sursa, id_aerop_dest, data_ora_plecarii,
data_ora_sosirii.
Identificator unic: id_zbor.
CLIENT — o persoană înregistrată la companie.
Atribute: id_client, nume, prenume, adresa.
Identificator unic: id_client.
MOD_PLATA — un mod de plată acceptat la achitarea unui bilet.
Atribute: id_mod_plata, denumire.
Identificator unic: id_mod_plata.
BILET — biletul cumpărat de un client pentru un zbor, cu modul de plată folosit.
Atribute: id_bilet, id_client, id_zbor, id_mod_plata, data_achizitiei.
Identificator unic: id_bilet.
Relațiile dintre entități și cardinalitatea lor
- AEROPORT — ZBOR, de tip unu la mai mulți (1:n), de două ori: un aeroport este aeroport sursă pentru mai multe zboruri și aeroport destinație pentru alte zboruri, iar un zbor are un singur aeroport sursă și un singur aeroport destinație.
- CLIENT — BILET, de tip unu la mai mulți (1:n): un client poate cumpăra mai multe bilete, iar un bilet aparține unui singur client.
- ZBOR — BILET, de tip unu la mai mulți (1:n): pentru un zbor se vând mai multe bilete, iar un bilet este emis pentru un singur zbor.
- MOD_PLATA — BILET, de tip unu la mai mulți (1:n): același mod de plată este folosit la mai multe bilete, iar un bilet este achitat printr-un singur mod de plată.
Entitatea BILET este entitatea asociativă care descompune relația mai mulți la mai mulți dintre CLIENT și ZBOR. Enunțul cere ca modul de plată să fie cunoscut „pentru acel zbor”, deci el nu este un atribut al clientului, ci al biletului: același client poate plăti numerar la un zbor și cu cardul la altul.
Respectarea primelor trei forme normale
- FN1 — fiecare atribut memorează o singură valoare atomică, iar fiecare înregistrare este identificată în mod unic. De aceea numele și prenumele sunt atribute separate, iar biletele cumpărate de un client nu se memorează într-o listă în entitatea CLIENT, ci prin câte o înregistrare în BILET.
- FN2 — fiecare atribut care nu face parte din cheie depinde de întreaga cheie primară.
Cheile primare sunt simple, deci condiția este îndeplinită: în BILET,
data_achizitieidepinde deid_bilet, nu de o parte a lui. - FN3 — niciun atribut care nu face parte din cheie nu depinde de un alt atribut necheie. De aceea denumirea modului de plată nu se scrie ca text în BILET, ci în MOD_PLATA, iar denumirea aeroportului nu se scrie în ZBOR, ci în AEROPORT.
Restricții care trebuie impuse
id_aerop_sursașiid_aerop_desttrebuie să fie diferite: un zbor nu poate pleca și sosi în același aeroport.data_ora_sosiriieste ulterioară luidata_ora_plecarii.denumiredin MOD_PLATA ia valori dintr-o listă predefinită: numerar, card bancar, ordin de plată.cod_iataeste unic în AEROPORT.data_achizitieinu poate fi ulterioară datei plecării zborului pentru care s-a emis biletul.
Modelul fizic
zboruri are două chei externe către aceeași tabelă, aeroporturi: una pentru aeroportul sursă, alta pentru cel destinație.| Tabela | Câmpuri | Cheie primară | Chei externe |
|---|---|---|---|
aeroporturi | id_aeroport, denumire, oras, cod_iata | id_aeroport | — |
zboruri | id_zbor, id_aerop_sursa, id_aerop_dest, data_ora_plecarii, data_ora_sosirii | id_zbor | id_aerop_sursa → aeroporturi, id_aerop_dest → aeroporturi |
clienti | id_client, nume, prenume, adresa | id_client | — |
moduri_plata | id_mod_plata, denumire | id_mod_plata | — |
bilete | id_bilet, id_client, id_zbor, id_mod_plata, data_achizitiei | id_bilet | id_client → clienti, id_zbor → zboruri, id_mod_plata → moduri_plata |
Rezolvarea se poate citi pe educamp.ro, la adresa de mai sus.
S-a încheiat minutul de citit liber.
Ce cuprinde rezolvarea
- Modelul conceptual
- Modelul fizic
- Interogarea cerută
- Cum se obțin cele trei informații calculate
Vezi rezolvarea ca și cursant
Cel puțin o cerință din fiecare an este disponibilă gratuit și integral. Pentru a citi toate celelalte rezolvări ale disciplinei, te înscrii la cursul de pregătire.
Te înscrii, alegi în cont când începe cursul și plătești prima lună prin transfer bancar. Pentru a vedea mai întâi cum este scrisă o rezolvare, poți reveni la prima cerință a anului.
Acces la suportul de curs
25 RON / lună, fără ședințe
Ce cuprinde:
- Acces la toate lecțiile disponibile
- Suport de curs pentru tematica științifică și metodică
- Exemple, explicații și exerciții
- Acces la materialele noi adăugate pe platformă
- Posibilitatea de a adresa întrebări
Poți alege și variante cu ședințe online, în grup sau individuale. Le vezi pe pagina cursului.
Ai întrebări sau o problemă? Scrie-mi pe WhatsApp, la 0745 874 576.