MODELE SI TIPURI DE BAZE DE DATE
“Un model este o abstractizare a unui sistem, care capteaza cele mai importante trasaturi caracteristice ale sistemului (concepte), relevante din punct de vedere al scopului pentru care se defineste modelul respectiv. [] Un model de date stabileste reguli de organizare si interpretare a unei colectii de date.”[1]
Dupa modul de organizare, modul de stocare pe suportul magnetic a informatiei se cunosc mai multe modele de baze de date: modelul de date ierarhic, modelul de date retea, modelul de date relational, modelul de date obiect – orientat, modelul de date obiect – relational, modelul de date distribuite, modelul de date semantice, modelul logic, etc.
Modelul de date ierarhic a fost primul model folosit pentru dezvoltarea bazelor de date, legaturile dintre date fiind ordonate unic, accesul se face numai prin varful ierarhiei, un subordonat nu poate avea decat un singur superior direct si nu se poate ajunge la el decat pe o singura cale. (Figura
“In modelul ierarhic (Hierarchical Model) o baza de date se reprezinta printr-o structura ierarhica de inregistrari de date (records) conectate prin legaturi (links).”
Fig. 2 – Model de baza de date ierarhic
Modelul de date retea este modelul in care datele sunt reprezentate ca intr-o multime de ierarhii, in care un membru al ei poate avea oricati superiori, iar la un subordonat se poate ajunge pe mai multe cai. Deosebirea fata de modelul ierarhic consta in faptul ca in modelul retea asocierile se reprezinta far 111g65b 9; duplicarea inregistrarilor, fiecare inregistrare putand fi referita de mai multe inregistrari, ceea ce elimina redundanta datelor.
“Modelul retea (Network Model) foloseste o structura de graf pentru definirea schemei conceptuale a bazei de date; nodurile grafului sunt tipuri de entitati (inregistrari – records), iar muchiile grafului reprezinta in mod explicit asocierile (legaturile – links) dintre tipurile de entitati.”
Modelul de date relational este modelul de baze de date cel mai utilizat in prezent in gestiunea bazelor de date. Structura de baza a datelor este aceea de relatie-tabel.
“Modelul relational (Relational Model) se bazeaza pe notiunea de relatie (relation) din matematica, care corespunde unei multimi de entitati de acelasi tip si are o reprezentare usor de inteles si de manipulat, ce consta intr-un tabel bidimensional, compus din linii si coloane. Fiecare linie din tabel reprezinta o entitate atribut corespunzand unei coloane a tabelului.”
Acest model este tratat mai amanuntit in subcapitolul 1.
Modelul de date distribuite este rezultatul integrarii tehnologiei bazelor de date cu cea a retelelor de calculatoare, fiind baze de date logic integrate dar fizic distribuite pe mai multe sisteme de calcul.
Modelul de date semantice – orientate spre obiecte, spre reprezentarea semnificatiei datelor, structura de baza folosita este cea de clasa de obiecte, definita prin abstractizare din entitatea fizica.
Modelul logic de date – orice sistem de gestiune a bazei de date pentru a manipula o baza de date foloseste un anumit tip de model logic de date fundamentale (ierarhice, retea, relationale, orientate obiect) si derivate (distribuite).
Modelul orientat obiect marcheaza trecerea la a treia generatie de baze de date. El aduce bazelor de date un plus de deschidere, flexibilitate si da rezultate bune pentru probleme mari si complexe. In structura sunt acceptate toate tipurile de date cunoscute, putandu-se aplica in toate domeniile de activitate. Comunicarea intre obiecte se face prin mesaje, actualizarea metodelor, actualizarea proprietatilor, actualizarea claselor, realizarea legaturilor intre clase, actualizarea instantelor.
1. BAZE DE DATE RELATIONALE
Baza de date relationala a fost conceputa pentru prima data in 1969 si se presupune ca a devenit modelul de baze de date cel mai utilizat in prezent in gestiunea bazelor de date.
Parintele modelului relational, dr. Edgar F. Codd, cercetator la IBM, cautand noi modalitati de manipulare a unor cantitati mari de date si nefiind multumit de modelele si produsele de baze de date existente, a incercat sa gandeasca o metoda de a aplica disciplinele si structurile din matematica pentru a rezolva enorma diversitate de probleme pe care le intalnea.
Dr. Codd si-a prezentat in mod formal noul model relational intr-o lucrare de referinta, intitulata „A Relational Model of Data for Larfe Shared Databanks” (Un model relational de date pentru banci de date partajate de mari dimensiuni.) [5]
Baza de date relationala a devenit solutia preferata in numeroase situatii.
2. STRUCTURA BAZEI DE DATE RELATIONALA
“O baza de date relationala este compusa dintr-o multime finita de relatii, fiecare relatie reprezentand un tip de entitate sau o asociere dintre doua sau mai multe tipuri (multimi) de entitati.”[6]
O baza de date relationala stocheaza datele in „relatii unice”, pe care utilizatorul le percepe sub forma unor tabele.
In proiectul realizat in Capitolul IV s-au utilizat patru tabele: clienti, furnizori, iesiri, intrari. (Figura
Fig. 3 – Componenta bazei de date Magazia
Fiecare relatie este compusa din tupluri sau inregistrari si atribute sau campuri. (Figura
Fig. 4 – Structura unei tabele
Atributul unei relatii este atributul tipului de entitate sau de asociere pe care il reprezinta relatia respectiva, reprezentand coloana unei tabele caracterizata printr-un nume. Unele atribute pot avea rol de chei, de diferite tipuri.
Domeniul este ansamblu de valori posibile pentru atributele relatiei. Domeniul poate fi explicit, enumerandu-se valorile posibile, sau implicit, precizandu-se proprietatile valorilor.
Tuplul este inregistrarea dintr-o tabela format dintr-un sir de valori corespunzatoare atributelor.
Ordinea fizica a inregistrarilor sau a campurilor dintr-un tabel este complet lipsita de importanta, iar fiecare inregistrare din tabel este identificata prin intermediul unui camp care contine o valoare unica. Aceasta reprezinta cele doua caracteristici ale unei baze de date relationale care permit datelor sa existe independent de modul in care acestea sunt fizic stocate in calculator.
Un utilizator nu este obligat sa cunoasca locatia fizica a unei inregistrari pentru a putea gasi datele incluse, situatie care difera de cea a modelelor de baze de date ierarhice si retea, unde cunoasterea dispunerii structurilor este esentiala pentru regasirea datelor.
3. TIPURI DE LEGATURI RELATIONALE
Relatia stabileste o conexiune intre doua tabele ce sunt corelate logic unul cu celalalt, si ajuta la continuarea imbunatatirii structurilor de tabel si la reducerea datelor redundante. Relatia este mecanismul care permite extragerea datelor din mai multe tabele simultan.
O relatie corect definita asigura integritatea la nivel de relatie, care, la randul ei, garanteaza ca relatia insasi este solida si de incredere.
Modelul relational clasifica relatiile ca fiind de tip unu la unu (1:1), unu la mai multi (1:m) si mai multi la mai multi (m:m).
O relatie intre tabele dintr-o pereche este stabilita in mod implicit prin intermediul valorilor echivalente ale unui camp comun.
Atata timp cat un utilizator cunoaste relatiile dintre tabelele incluse intr-o baza de date, poate obtine acces la date intr-un numar aproape nelimitat de moduri.
Doua tabele au o relatie unu la unu (1:1) cand o singura inregistrare din primul tabel este corelata cu o singura inregistrare din al doilea tabel si o singura inregistrare din al doilea tabel este corelata cu o singura inregistrare din primul tabel.
Un tabel serveste ca tabel “parinte”, iar al doilea indeplineste rolul de tabel “copil”. Relatia se stabileste prin preluarea unei copii a cheii primare a tabelului parinte si incorporarea acestuia in structura tabelului copil, unde devine tot o cheie primara.
Acesta este un tip special de relatie, deoarece este unicul in cadrul caruia ambele tabele pot folosi executiv aceeasi cheie primara.
O inregistrare din TABELUL 1 este corelata cu o singura inregistrare din TABELUL 2, iar o inregistrare din TABELUL 2 este corelata cu o singura inregistrare din TABELUL 1. (Figura
Fig. 5 – Relatia 1:1
Intre doua tabele exista o relatie unu la mai multi (1:m) cand o inregistrare din primul tabel poate fi corelata cu una sau mai multe inregistrari din al doilea tabel, dar o inregistrare din al doilea tabel poate fi corelata cu o singura inregistrare din primul tabel.
Un tabel serveste ca tabel “parinte”, iar al doilea indeplineste rolul de tabel “copil”. Relatia se stabileste prin preluarea unei copii a cheii primare a tabelului parinte si incorporarea acestuia in structura tabelului copil, unde devine o cheie externa.
Aceasta reprezinta cea mai comuna categorie de relatie care exista intre doua tabele dintr-o baza de date si este cruciala din punct de vedere al integritatii datelor, intrucat contribuie la eliminarea datelor duplicate si reducerea la un minimum absolute a datelor redundante.
O inregistrare din TABELUL 1 poate fi corelata cu una sau mai multe inregistrari din TABELUL 2, iar o inregistrare din TABELUL 2 poate fi corelata doar cu o singura inregistrare din TABELUL 1. (Figura
Fig. 6 – Relatia 1:m
In aplicatia Evidenta_magazie[7], tabelele Furnizori, respectiv Clienti sunt intr-o relatie unu la mai multe cu tabelele Intrari, respectiv Iesiri, dupa campurile comune nume_furnizor, respectiv nume_client, deoarece se pot achizitiona de la acelasi furnizor mai multe produse si se pot livra mai multe produse unui singur client de mai multe ori. (Figura
Fig. 7 – Relatii intre tabele
Intre doua tabele exista o relatie mai multi la mai multi (m:m) daca o inregistrare din primul tabel poate fi corelata cu una sau mai multe inregistrari din al doilea tabel si o inregistrare din al doilea tabel poate fi corelata cu una sau mai multe inregistrari din primul tabel.
O relatie din aceasta categorie se stabileste cu ajutorul unui tabel de legatura, care faciliteaza asocierea inregistrarilor dintr-un tabel cu inregistrarile din celalalt tabel si asigura lipsa oricaror probleme la operatiile de adaugare, stergere sau modificare a datelor corelate.
O inregistrare din TABELUL 1 poate fi corelata cu una sau mai multe inregistrari (dar nu obligatoriu cu toate) din TABELUL 2, iar o inregistrare din TABELUL 2 poate fi corelata cu una sau mai multe inregistrari din TABELUL 1. (Figura
Fig. 8 – Relatia m:m
Acest tip de relatie este al doilea ca frecventa de aparitie intre doua tabele dintr-o baza de date. Ea este ceva mai dificil de identificat decat o relatie unu la mai multi.
Procesul de construire a unei baze de date se desfasoara in doua etape:
Construirea tabelelor care compun baza de date ─ aceasta inseamna ca pentru fiecare tabel din baza de date trebuie definita structura, adica ansamblul de campuri impreuna cu proprietatile lor.
In figurile de mai jos sunt definite structurile tabelelor Furnizori (Figura ), Clienti (Figura ), Intrari (Figura ) si Iesiri (Figura ), utilizate in aplicatie.
Fig. 9 – Structura tabelei furnizori
Fig. 10 – Structura tabelei Clienti
Fig. 11 – Structura tabelei Intrari
Fig. 12 – Structura tabelei Iesiri
Dupa definirea structurii incepe incarcarea datelor in tabel.
La nivelul tabelului: se pot adauga, sterge sau modifica inregistrari. se poate modifica structura unui tabel chiar dupa ce a fost incarcat cu date.
2) Stabilirea relatiilor intre tabele ─ Relatiile care se vor stabili intre tabele sunt unidi-rectionale, adica intre doua tabele nu se stabileste o relatie de egalitate ci o relatie de subordonare: unul dintre tabele este tabelul conducator sau principal (tabelul de la care porneste legatura), iar celalalt este tabelul condus sau secundar (tabelul la care ajunge legatura). Tabelul condus este subordonat tabelului conducator. Aceasta inseamna ca daca utilizatorul selecteaza o inregistrare in tabelul conducator, sistemul va selecta automat inregistrarea de care este legata din tabelul condus.
In aplicatia Evidenta_magazie tabelele Furnizori si Clienti sunt tabelele de la care se porneste legatura catre tabelele Intrari si Iesiri. (Figura
Fig. 13 – Stabilirea relatiilor intre tabele
De obicei, modelul relational cel mai des intalnit este cel descris printr-un arbore cu o singura radacina, adica in baza de date exista un singur tabel conducator care reprezinta radacina arborelui. Celelalte tabele sunt legate de tabelul conducator direct sau indirect (prin intermediul altor tabele).
|