Sari la conținut
EduCamp
Definitivat 2022 Teorie 15 puncte

Subiectul I, cerința 4

Proiectarea unei baze de date

Modelul conceptual cu cinci entități pentru evidența curselor de la hipodrom, formele normale, modelul fizic și comenzile de ștergere a cailor fără înscrieri în ultimii doi ani.

Modelul conceptual

Entitățile

PROPRIETAR — persoana care deține unul sau mai mulți cai. Atribute: id_proprietar, nume, telefon, email, adresa. Identificator unic: id_proprietar.

CAL — un cal înregistrat la hipodrom. Atribute: id_cal, nume, data_nasterii, id_proprietar. Identificator unic: id_cal.

TIP_CURSA — felul cursei: galop, trap, obstacole. Atribute: id_tip, denumire. Identificator unic: id_tip.

CURSA — o cursă organizată de hipodrom, la o dată și o oră precizate. Atribute: id_cursa, id_tip, data, ora, minut. Identificator unic: id_cursa.

INSCRIERE — înscrierea unui cal la o cursă, împreună cu rezultatul obținut. Atribute: id_inscriere, id_cal, id_cursa, a_participat, loc. Identificator unic: id_inscriere.

Relațiile dintre entități și cardinalitatea lor

  • PROPRIETAR — CAL, de tip unu la mai mulți (1:n): un proprietar poate avea mai mulți cai, iar un cal are un singur proprietar.
  • TIP_CURSA — CURSA, de tip unu la mai mulți (1:n): dintr-un tip de cursă se organizează mai multe curse, iar o cursă este de un singur tip.
  • CAL — INSCRIERE, de tip unu la mai mulți (1:n): un cal poate fi înscris la mai multe curse, iar o înscriere se referă la un singur cal.
  • CURSA — INSCRIERE, de tip unu la mai mulți (1:n): la o cursă se înscriu mai mulți cai, iar o înscriere este pentru o singură cursă.

Entitatea INSCRIERE este entitatea asociativă care descompune relația mai mulți la mai mulți dintre CAL și CURSA. În ea se află și rezultatul, fiindcă locul obținut nu este o însușire a calului și nici a cursei, ci a participării calului la acea cursă. Atributul a_participat deosebește calul înscris care nu a luat startul de cel care a alergat: enunțul cere locul „dacă a participat”, deci cele două situații trebuie să se poată distinge.

Respectarea primelor trei forme normale

  • FN1 — fiecare atribut memorează o singură valoare atomică, iar fiecare înregistrare este identificată în mod unic. De aceea ora și minutul startului se memorează ca valori distincte, iar cursele la care a fost înscris un cal nu se trec ca listă în entitatea CAL, ci prin câte o înregistrare în INSCRIERE.
  • FN2 — fiecare atribut care nu face parte din cheie depinde de întreaga cheie primară. Cheile primare fiind simple, condiția este îndeplinită: în INSCRIERE, loc și a_participat depind de id_inscriere, nu de o parte a lui.
  • FN3 — niciun atribut care nu face parte din cheie nu depinde de un alt atribut necheie. De aceea datele de contact ale proprietarului nu se memorează în CAL, ci în PROPRIETAR: altfel telefonul ar depinde de proprietar, care nu este cheie în CAL, iar aceleași date ar fi scrise din nou pentru fiecare cal al aceluiași om.

Restricții care trebuie impuse

  • Perechea id_cal, id_cursa este unică în INSCRIERE: un cal nu poate fi înscris de două ori la aceeași cursă.
  • loc se completează numai dacă a_participat are valoarea adevărat; altfel rămâne necompletat.
  • loc este un număr natural nenul, iar două înscrieri la aceeași cursă nu pot avea același loc.
  • ora ia valori între 0 și 23, iar minut între 0 și 59.
  • data_nasterii nu poate fi ulterioară datei curente, iar data unei curse la care este înscris un cal nu poate fi anterioară datei nașterii lui.

Modelul fizic

Diagrama celor cinci tabele ale bazei de date și a relațiilor dintre ele 1 1 1 1 proprietari id_proprietarPK nume telefon email cai id_calPK nume data_nasterii id_proprietarFK tipuri_cursa id_tipPK denumire curse id_cursaPK id_tipFK data ora minut inscrieri id_inscrierePK id_calFK id_cursaFK a_participat loc
Cele cinci tabele și relațiile dintre ele. PK — cheie primară, FK — cheie externă. Legătura dintre cai și inscrieri se face pe id_cal, iar cea dintre curse și inscrieri pe id_cursa.
TabelaCâmpuriCheie primarăChei externe
proprietariid_proprietar, nume, telefon, email, adresaid_proprietar
caiid_cal, nume, data_nasterii, id_proprietarid_calid_proprietar → proprietari
tipuri_cursaid_tip, denumireid_tip
curseid_cursa, id_tip, data, ora, minutid_cursaid_tip → tipuri_cursa
inscrieriid_inscriere, id_cal, id_cursa, a_participat, locid_inscriereid_cal → cai, id_cursa → curse

Rezolvarea se poate citi pe educamp.ro, la adresa de mai sus.

Ce cuprinde rezolvarea

  1. Modelul conceptual
  2. Modelul fizic
  3. Ștergerea datelor cerută
  4. Cum se obțin cele două 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.

Începe săptămâna gratuită Sunt cursant — login

Actualizat: 28 august 2026