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 se obține prin transformarea modelului conceptual în model fizic. 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:
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.
Transformarea modelului conceptual în model fizic
| Modelul conceptual | Modelul fizic |
|---|---|
| entitate | tabel, cu numele entității la plural: CITITOR devine cititori |
| atribut | câmp |
| instanță | înregistrare |
| identificator unic | cheie primară |
| atribut obligatoriu | câmp care nu admite valoarea NULL |
| atribut opțional | câmp care admite valoarea NULL |
| relație unu la mai mulți | cheie 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 transformă 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
imprumuturiprimește câmpulcod_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ă admiteNULL; - 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, cuisbnșicod_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âmpul | Cheia | Opționalitatea |
|---|---|---|
cod_imprumut | PK | * |
cod_cititor | FK | * |
nr_inventar | FK | * |
data_imprumut | * | |
data_scadenta | * | |
data_restituire | o |
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.
| Categoria | MySQL | Microsoft Access | Se folosește pentru |
|---|---|---|---|
| șir de caractere cu lungime fixă | CHAR(n) | Short Text | coduri de lungime fixă: ISBN, CNP |
| șir de caractere cu lungime variabilă | VARCHAR(n) | Short Text, până la 255 de caractere | nume, titluri, adrese |
| text lung | TEXT | Long Text | descrieri, observații |
| număr întreg | TINYINT, SMALLINT, INT, BIGINT | Number (Byte, Integer, Long Integer) | cantități, coduri numerice, ani |
| număr real | FLOAT, DOUBLE, DECIMAL(n,d) | Number (Single, Double, Decimal), Currency | FLOAT, DOUBLE: măsurători, medii; DECIMAL, Currency: valori bănești, care cer zecimale exacte |
| dată și oră | DATE, TIME, DATETIME, YEAR | Date/Time | data nașterii, data împrumutului |
| valoare logică | BOOLEAN | Yes/No | răspunsuri da/nu |
| număr generat automat | INT AUTO_INCREMENT | AutoNumber | chei primare artificiale |
| valoare dintr-o listă | ENUM('a','b',…) | Lookup | categorii 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 nu este nici zero, nici șirul vid.
O operație aritmetică sau o comparație cu un operand NULL dă rezultatul NULL: dacă la un
împrumut lipsește data restituirii, expresia data_restituire - data_imprumut nu are valoare, iar
comparația data_restituire = NULL nu este adevărată nici la împrumuturile nerestituite. De aceea,
testul pentru NULL nu se face cu =, ci cu operatorii IS NULL și IS NOT NULL. Funcțiile de
agregare SUM, AVG, MIN, MAX și COUNT(câmp) ignoră valorile NULL: media notelor existente
se calculează fără notele care lipsesc.
Cheia primară
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ă.
Una dintre cheile candidat se alege drept cheie primară. Perechea formată din CNP și nume identifică unic un elev, dar nu este cheie candidat,
fiindcă CNP-ul singur îl identifică. 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ă poate referi și cheia primară a aceluiași tabel, la o relație recursivă: în tabelul
angajati, câmpul cod_sef păstrează codul altui angajat din același tabel.
Î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.
S-a încheiat minutul de citit liber.
Ce cuprinde subcapitolul
- Tabele, înregistrări și câmpuri
- Transformarea modelului conceptual în model fizic
- Tipurile de date
- Valoarea NULL
- Cheia primară
- Cheia străină
- Constrângerile
- Integritatea datelor
- Modelul fizic al bibliotecii
- 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.
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 prezentată materia, poți reveni la primul subcapitol al capitolului.
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.
Surse (4)
- 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”