Sari la conținut
EduCamp

Tematică științifică · 6.4

Modelul fizic relațional

Modelul fizic al unei baze de date relaționale: transformarea modelului conceptual în tabele, înregistrări și câmpuri, tipurile de date, cheia primară, cheia străină, constrângerile și integritatea referențială, cu modelul fizic al bibliotecii scris în SQL.

Modelul conceptual descrie datele independent de SGBD. Modelul fizic descrie aceleași date așa cum vor fi memorate într-o bază de date relațională: tabelele, câmpurile lor cu tipurile de date, cheile prin care se leagă tabelele și restricțiile pe care trebuie să le respecte datele.

Trecerea de la modelul conceptual la modelul fizic se numește mapare. Exemplele continuă baza de date a bibliotecii, al cărei model conceptual este descris în subcapitolul Modelul conceptual.

Tabele, înregistrări și câmpuri

Într-o bază de date relațională, datele se păstrează în tabele. Un tabel are un număr fix de coloane și un număr variabil de rânduri:

  • câmpul este o coloană a tabelului; are un nume unic în cadrul tabelului, iar toate valorile lui au același tip;
  • înregistrarea este un rând al tabelului și conține câte o valoare pentru fiecare câmp.

Structura unui tabel este formată din numele câmpurilor, tipurile lor și restricțiile impuse. Crearea unui tabel înseamnă definirea structurii lui. Înregistrările se adaugă ulterior și se pot modifica sau șterge fără ca structura să se schimbe.

Maparea modelului conceptual

Modelul conceptualModelul fizic
entitatetabel, cu numele entității la plural: CITITOR devine cititori
atributcâmp
instanțăînregistrare
identificator uniccheie primară
atribut obligatoriucâmp care nu admite valoarea NULL
atribut opționalcâmp care admite valoarea NULL
relație unu la mai mulțicheie străină în tabelul de pe partea „mai mulți”
relație baratăcheia străină face parte și din cheia primară

Relațiile se mapează după tipul lor:

  • relația unu la mai mulți — în tabelul corespunzător entității de pe partea „mai mulți” se adaugă un câmp care preia cheia primară a tabelului de pe partea „unu”. Tabelul imprumuturi primește câmpul cod_cititor, fiindcă un împrumut aparține unui singur cititor, pe când un cititor nu poate păstra într-un singur câmp toate împrumuturile lui. Dacă relația este opțională dinspre partea „mai mulți”, cheia străină admite NULL;
  • relația unu la unu — cheia primară a unuia dintre tabele se adaugă, ca cheie străină, în celălalt tabel; alegerea depinde de datele consultate mai des, iar uneori cheia străină se pune în ambele tabele;
  • relația mai mulți la mai mulți — a fost înlocuită în modelul conceptual printr-o entitate de intersecție, care devine un tabel cu două chei străine; aici carti_autori, cu isbn și cod_autor.

Structura unui tabel se descrie printr-o diagramă de tabel, care precizează pentru fiecare câmp dacă face parte din cheia primară (PK, primary key) sau dintr-o cheie străină (FK, foreign key) și dacă este obligatoriu (*) sau opțional (o):

CâmpulCheiaOpționalitatea
cod_imprumutPK*
cod_cititorFK*
nr_inventarFK*
data_imprumut*
data_scadenta*
data_restituireo

Tipurile de date

Tipul unui câmp stabilește ce valori poate primi, ce operații se pot face cu ele și cât spațiu ocupă. Tipurile se aleg după semnificația datelor: un număr de telefon sau un ISBN se memorează ca șir de caractere, fiindcă nu se fac calcule cu el și poate începe cu cifra 0.

CategoriaMySQLMicrosoft AccessSe folosește pentru
șir de caractere cu lungime fixăCHAR(n)Short Textcoduri de lungime fixă: ISBN, CNP
șir de caractere cu lungime variabilăVARCHAR(n)Short Text, până la 255 de caracterenume, titluri, adrese
text lungTEXTLong Textdescrieri, observații
număr întregTINYINT, SMALLINT, INT, BIGINTNumber (Byte, Integer, Long Integer)cantități, coduri numerice, ani
număr realFLOAT, DOUBLE, DECIMAL(n,d)Number (Single, Double, Decimal), Currencymedii, prețuri, sume
dată și orăDATE, TIME, DATETIME, YEARDate/Timedata nașterii, data împrumutului
valoare logicăBOOLEANYes/Norăspunsuri da/nu
număr generat automatINT AUTO_INCREMENTAutoNumberchei primare artificiale
valoare dintr-o listăENUM('a','b',…)Lookupcategorii cu valori fixe

La DECIMAL(n,d), n este numărul total de cifre, iar d numărul de zecimale: DECIMAL(5,2) păstrează valori între −999,99 și 999,99. În MySQL, datele calendaristice se scriu între apostrofuri, sub forma 'aaaa-ll-zz', de exemplu '2026-03-16'.

În versiunile mai vechi de Access, Short Text se numea Text, iar Long Text se numea Memo.

Valoarea NULL

NULL este valoarea specială care arată că un câmp nu are nicio valoare: data restituirii unei cărți încă neînapoiate este NULL. NULL nu este nici zero, nici șirul vid.

Orice operație cu un operand NULL dă rezultatul NULL: dacă o notă lipsește, nici media calculată din ea nu este cunoscută. De aceea, testul pentru NULL nu se face cu =, ci cu operatorii IS NULL și IS NOT NULL.

Cheia primară

Cheia primară este câmpul sau combinația de câmpuri a cărei valoare identifică în mod unic fiecare înregistrare a tabelului. Ea provine din identificatorul unic al entității și trebuie să îndeplinească simultan următoarele condiții:

  • valorile ei sunt distincte în tot tabelul; pentru o cheie compusă, două înregistrări trebuie să difere prin cel puțin un câmp al cheii;
  • niciun câmp al cheii nu are valoarea NULL;
  • valorile ei nu se modifică în timp.

Un tabel are o singură cheie primară. Câmpurile sau combinațiile de câmpuri care ar putea identifica unic înregistrările se numesc chei candidat; una dintre ele se alege drept cheie primară. Pentru celelalte chei candidat se poate cere doar ca valorile să fie distincte, printr-o cheie unică (UNIQUE): într-un tabel al elevilor, cheia primară poate fi un cod, iar CNP-ul o cheie unică.

Când entitatea nu are un atribut natural potrivit, cheia primară este un cod numeric generat automat de SGBD, cu AUTO_INCREMENT în MySQL sau cu tipul AutoNumber în Access. SGBD-ul atribuie fiecărei înregistrări noi valoarea următoare, iar cheia rămâne distinctă fără intervenția utilizatorului.

Pe lângă identificarea înregistrărilor, cheia primară permite regăsirea lor rapidă: SGBD-ul construiește pentru ea un index, în care valorile cheii sunt ordonate, deci o înregistrare se găsește printr-o căutare de tip binar, nu prin parcurgerea întregului tabel.

Cheia străină

Cheia străină, numită și cheie externă, este câmpul sau combinația de câmpuri dintr-un tabel ale cărei valori trebuie să existe în cheia primară a altui tabel. Tabelul care conține cheia străină se numește tabel copil, iar tabelul a cărui cheie primară este referită se numește tabel părinte.

În imprumuturi, câmpul cod_cititor este cheie străină spre cititori: fiecare împrumut păstrează codul unui cititor existent.

Cheia străină are același tip ca cheia primară pe care o referă. Ea poate avea valori repetate, fiindcă mai multe înregistrări copil se pot referi la același părinte, și poate admite NULL, dacă relația este opțională.

Materialul acesta se citește pe educamp.ro și nu se tipărește.

Ce cuprinde subcapitolul

  1. Tabele, înregistrări și câmpuri
  2. Maparea modelului conceptual
  3. Tipurile de date
  4. Valoarea NULL
  5. Cheia primară
  6. Cheia străină
  7. Constrângerile
  8. Integritatea datelor
  9. Modelul fizic al bibliotecii
  10. Apariții la examen

Continuă lectura ca și cursant

Cel puțin un subcapitol din fiecare capitol este disponibil gratuit și integral. Pentru a citi toate celelalte subcapitole 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 prezentată materia, poți reveni la primul subcapitol al capitolului.

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ă

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

Află când publicăm materiale noi

Materia este publicată treptat, capitol cu capitol. Înscrie-te pentru a primi un e-mail atunci când apare un capitol nou de informatică.

Vei primi mesaje numai despre materia selectată și despre cursul de pregătire. Te poți dezabona oricând, dintr-o singură apăsare.

Surse

  • Gremalschi, A., Corlat, S., Braicov, A., „Informatică. Manual pentru clasa a 12-a”, Editura Știința, Chișinău, 2015
  • Huțanu, V. T., Popescu, C., „Manual de informatică pentru clasa a XII-a”, Editura L&S Info-mat, București, 2007
  • Programa pentru examenul de definitivare în învățământ, disciplina Informatică, cap. 6 „Baze de date”
  • Programa pentru concursul de ocupare a posturilor didactice, disciplina Informatică, cap. 6 „Baze de date”
Actualizat: 13 septembrie 2026