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 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 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
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 | medii, prețuri, sume |
| 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 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.
S-a încheiat minutul de citit liber.
Ce cuprinde subcapitolul
- Tabele, înregistrări și câmpuri
- Maparea modelului conceptual
- 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.
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ă.
Nu am putut înregistra adresa. Verifică e-mailul și materia aleasă, apoi încearcă din nou.
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”