Subiectul I, cerința 4
Proiectarea unei baze de date
Modelul conceptual cu entități, relații și forme normale, modelul fizic cu tabele și chei, și interogarea care afișează florile specifice verii, pentru o companie care comercializează flori.
Modelul conceptual
Entitățile
CLIENT — o persoană fizică care cumpără flori de la companie.
Atribute: id_client, prenume, nume, adresa, telefon.
Identificator unic: id_client.
TIP_FLOARE — un tip de flori comercializat de companie.
Atribute: id_tip, denumire_stiintifica, pret_unitar, anotimp.
Identificator unic: id_tip.
COMANDA — o comandă de flori plasată de un client la o anumită dată.
Atribute: id_comanda, id_client, data_comanda.
Identificator unic: id_comanda.
DETALIU_COMANDA — un tip de flori cuprins într-o comandă, împreună cu numărul de flori de
acel tip.
Atribute: id_comanda, id_tip, numar_flori.
Identificator unic: perechea (id_comanda, id_tip).
Numărul de flori nu este o proprietate a clientului și nici a tipului de flori: el depinde de comanda și de tipul de flori luate împreună. De aceea se memorează în entitatea DETALIU_COMANDA.
Relațiile dintre entități
- CLIENT — COMANDA, de tip unu la mai mulți (1:n): un client poate plasa mai multe comenzi, iar o comandă aparține unui singur client. Un client înregistrat poate să nu aibă nicio comandă.
- COMANDA — DETALIU_COMANDA, de tip unu la mai mulți (1:n): o comandă cuprinde unul sau mai multe tipuri de flori, iar un rând de detaliu aparține unei singure comenzi.
- TIP_FLOARE — DETALIU_COMANDA, de tip unu la mai mulți (1:n): un tip de flori poate apărea în mai multe comenzi, iar un rând de detaliu privește un singur tip de flori.
Între COMANDA și TIP_FLOARE există o relație mai mulți la mai mulți (m:n): o comandă cuprinde mai multe tipuri de flori, iar un tip de flori apare în mai multe comenzi. Relația a fost rezolvată prin entitatea de intersecție DETALIU_COMANDA.
Respectarea primelor trei forme normale
- FN1 — fiecare atribut memorează o singură valoare, indivizibilă. Prenumele și numele
clientului sunt atribute separate. O comandă nu memorează într-un singur atribut lista tipurilor
de flori cumpărate și nici grupuri de atribute repetate (
tip1,tip2, …): fiecare tip de flori din comandă ocupă o înregistrare separată în DETALIU_COMANDA. - FN2 — fiecare atribut din afara identificatorului unic depinde de întregul identificator.
În DETALIU_COMANDA, identificatorul este compus, iar
numar_floridepinde de ambele componente.pret_unitarșidenumire_stiintificanu se memorează aici, pentru că ar depinde numai deid_tip, iardata_comandanu se memorează aici, pentru că ar depinde numai deid_comanda. Celelalte entități au identificatori simpli, deci respectă FN2. - FN3 — niciun atribut din afara identificatorului unic nu depinde de un alt atribut din
afara identificatorului. În COMANDA nu se memorează numele, adresa și telefonul clientului: ele
ar depinde de
id_client, care nu este identificatorul comenzii, și s-ar repeta la fiecare comandă a aceluiași client. Aceste date se memorează o singură dată, în CLIENT.
Restricții care trebuie impuse
data_comandaeste obligatorie: fără ea nu se pot determina tipurile de flori necumpărate în ultimul an și clienții care nu au cumpărat flori în ultimii doi ani.id_clienteste obligatoriu în COMANDA: orice comandă aparține unui client înregistrat.numar_florieste un număr natural nenul, iarpret_unitareste un număr real strict pozitiv.anotimppoate lua numai una dintre valorileprimavara,vara,toamna,iarna.denumire_stiintificaeste unică în TIP_FLOARE: fiecare tip de flori se înregistrează o singură dată.id_comandașiid_tipdin DETALIU_COMANDA trebuie să existe în COMANDA, respectiv în TIP_FLOARE.- Un client care nu a cumpărat încă flori se păstrează în CLIENT, fără comenzi, pentru ca datele lui să poată fi afișate la ultima informație cerută.
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
- Vizualizarea tipurilor de flori specifice verii
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.
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.
100 RON / lună, pentru o disciplină
Ce cuprinde:
- Două întâlniri de câte două ore, în fiecare lună
- Tot suportul de curs publicat până acum la disciplina aleasă
- Capitole noi în fiecare săptămână, cuprinse în luna plătită, fără costuri suplimentare
- Material organizat după structura programei de examen
- Acces de pe orice dispozitiv, folosind același cont
- Prima săptămână gratuită, fără card și fără reînnoire automată
Ai întrebări sau o problemă? Scrie-mi pe WhatsApp, la 0745 874 576.