Subiectul I, cerința 4
Proiectarea unei baze de date
Modelul conceptual cu entități, relații și forme normale, modelul fizic cu șapte tabele și interogarea SQL a datelor de difuzare, pentru un furnizor de programe radio.
Modelul conceptual
Entitățile
COMPOZITOR — persoana care a compus piesa.
Atribute: id_compozitor, nume.
Identificator unic: id_compozitor.
GEN — genul muzical în care se încadrează piesa.
Atribute: id_gen, denumire.
Identificator unic: id_gen.
INTERPRET — solistul, formația sau orchestra care interpretează piesa.
Atribute: id_interpret, denumire, tip (solist, formație sau orchestră).
Identificator unic: id_interpret.
PIESA — o înregistrare muzicală aflată în fonoteca postului.
Atribute: id_piesa, titlu, id_compozitor, id_gen, id_interpret, an_aparitie,
durata.
Identificator unic: id_piesa.
EMISIUNE — o emisiune muzicală din grila de programe.
Atribute: id_emisiune, denumire, frecventa, data_inceput, data_sfarsit, descriere.
Identificator unic: id_emisiune.
REPER_ORAR — un moment din grilă la care este difuzată emisiunea.
Atribute: id_reper, id_emisiune, ora, minut.
Identificator unic: id_reper.
DIFUZARE — difuzarea efectivă a unei piese în cadrul unei emisiuni, la un moment dat.
Atribute: id_difuzare, id_emisiune, id_piesa, data, ora, minut.
Identificator unic: id_difuzare.
Relațiile dintre entități și cardinalitatea lor
- COMPOZITOR — PIESA, de tip unu la mai mulți (1:n): un compozitor poate avea mai multe piese, iar o piesă are un singur compozitor.
- GEN — PIESA, de tip unu la mai mulți (1:n): un gen cuprinde mai multe piese, iar o piesă aparține unui singur gen.
- INTERPRET — PIESA, de tip unu la mai mulți (1:n): un interpret are mai multe înregistrări, iar o înregistrare este interpretată de un singur solist, de o singură formație sau de o singură orchestră.
- EMISIUNE — REPER_ORAR, de tip unu la mai mulți (1:n): o emisiune are mai multe repere orare în grilă, iar un reper aparține unei singure emisiuni.
- EMISIUNE — DIFUZARE, de tip unu la mai mulți (1:n): în cadrul unei emisiuni se difuzează mai multe piese, iar o difuzare are loc în cadrul unei singure emisiuni.
- PIESA — DIFUZARE, de tip unu la mai mulți (1:n): o piesă poate fi difuzată de mai multe ori, iar o difuzare se referă la o singură piesă.
Entitatea DIFUZARE este entitatea asociativă care descompune relația mai mulți la mai mulți dintre PIESA și EMISIUNE. Ea este necesară și pentru că aceeași piesă poate fi difuzată de mai multe ori în cadrul aceleiași emisiuni, la date diferite. Fără ea nu se poate răspunde la niciuna dintre cele trei informații calculate cerute în enunț.
Respectarea primelor trei forme normale
- FN1 — fiecare atribut memorează o singură valoare atomică, iar fiecare înregistrare este identificată în mod unic. De aceea reperele orare din grila unei emisiuni nu se memorează într-un singur câmp, sub forma unei liste de ore, ci într-o entitate separată, REPER_ORAR, cu câte o înregistrare pentru fiecare moment. Tot din acest motiv ora și minutul se memorează ca valori distincte, nu ca un text.
- FN2 — fiecare atribut care nu face parte din cheie depinde de întreaga cheie primară.
Cheile primare fiind simple, condiția este îndeplinită: în DIFUZARE,
data,orașiminutdepind deid_difuzare, nu de o parte a lui. - FN3 — niciun atribut care nu face parte din cheie nu depinde de un alt atribut necheie.
De aceea numele compozitorului nu se memorează în PIESA, ci în COMPOZITOR: altfel
numear depinde deid_compozitor, care nu este cheie în PIESA. La fel se procedează cu genul muzical și cu interpretul.
Restricții care trebuie impuse
titluîmpreună cuid_compozitorșiid_interpretidentifică în mod unic o înregistrare: aceeași piesă, interpretată de doi soliști diferiți, este o altă înregistrare în fonotecă.an_aparitieeste un număr natural care nu poate depăși anul curent, iardurataeste strict pozitivă.oraia valori între 0 și 23, iarminutîntre 0 și 59, atât în REPER_ORAR, cât și în DIFUZARE.data_sfarsita unei emisiuni nu poate fi anterioară luidata_inceput.dataunei difuzări trebuie să se afle în perioada în care emisiunea figurează în grila de programe.frecventaia valori dintr-o listă predefinită: cotidian, săptămânal, lunar.
Modelul fizic
| Tabela | Câmpuri | Cheie primară | Chei externe |
|---|---|---|---|
compozitori | id_compozitor, nume | id_compozitor | — |
genuri | id_gen, denumire | id_gen | — |
interpreti | id_interpret, denumire, tip | id_interpret | — |
piese | id_piesa, titlu, id_compozitor, id_gen, id_interpret, an_aparitie, durata | id_piesa | id_compozitor → compozitori, id_gen → genuri, id_interpret → interpreti |
emisiuni | id_emisiune, denumire, frecventa, data_inceput, data_sfarsit, descriere | id_emisiune | — |
repere_orare | id_reper, id_emisiune, ora, minut | id_reper | id_emisiune → emisiuni |
difuzari | id_difuzare, id_emisiune, id_piesa, data, ora, minut | id_difuzare | id_emisiune → emisiuni, id_piesa → piese |
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.
Cursul cuprinde suportul de curs publicat până acum, care se completează capitol cu capitol, și două întâlniri de câte două ore în fiecare lună. Prima săptămână este gratuită, fără plată și fără card. Dacă vrei să vezi mai întâi cum este scrisă o rezolvare, poți reveni la prima cerință a anului.