Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Patrascu Mihaela Hanelore Concept Baze de date

102 visualizaciones

Publicado el

Patrascu Mihaela Hanelore

Publicado en: Software
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Patrascu Mihaela Hanelore Concept Baze de date

  1. 1. 5 1. ELEMENTE DE TEORIA BAZELOR DE DATE 1.1. Organizarea datelor Activitatea umană include o mulţime de activităţi desfăşurate pentru a satisface diverse necesităţi, fie ele de natură materială sau spirituală. Pentru desfăşurarea acestor activităţi s-au dezvoltat întreprinderi şi organizaţii speciale care, în vederea îndeplinirii scopului propus, necesită manevrarea unui volum ridicat de informaţii. Au apărut şi s-au dezvoltat sisteme informaţionale care ocupă astăzi un loc important în funcţionarea complexului mecanism reprezentat de societatea modernă. Sisteme informaţionale reprezintă un ansamblu de tehnici şi metode de organizare şi manevrare a informaţiilor specifice unui anumit domeniu de activitate (ex. circuitul informaţiilor într-o întreprindere, evidenţa populaţiei, evidenţa cărţilor într-o bibliotecă etc.), de la generarea acestora şi până la ştergerea sau stocarea lor. Apariţia calculatorului electronic a permis automatizarea acestor activităţi conducând la apariţia sistemelor informatice. Sistemele informatice sunt sisteme de organizare, manevrare şi exploatare a informaţiilor (respectiv a datelor), specifice unui anumit domeniu de activitate, cu ajutorul calculatorului. Pentru a rezolva problemele legate de manevrarea informaţiilor, reprezentate prin intermediul datelor, apare ca o necesitate existenţa unor modele şi mecanisme de organizare a datelor deoarece, de modul în care sunt organizate datele depinde eficienţa sistemului informatic. Bazele de date, ca principale componente ale sistemelor informatice, oferă tocmai aceste modele şi mecanisme de organizare a datelor. Pentru început trebuiesc clarificate noţiunile de informaţie şi date. Datele sunt reprezentări simbolice ale unor fenomene, procese, obiecte etc. susceptibile a fi stocate pe un suport de memorie externă, şi care pot fi manevrate folosind diverse mijloace tehnice (exemple de date: cifre, şiruri de caractere, imagini, culori etc.). Informaţia reprezintă sensul pe care oamenii îl acordă datelor (astfel că aceeaşi dată poate reprezenta diverse informaţii, funcţie de cei care o folosesc). Organizarea datelor presupune efectuarea următoarele activităţi: - definirea, structurarea, ordonarea şi gruparea datelor; - stabilirea legăturilor ( relaţiilor ) între date, între elementele unei colecţii de date şi între colecţii de date; - stocarea datelor pe un suport informaţional, prelucrabil într-un sistem de calcul. Organizarea datelor se realizează pentru a permite regăsirea lor automată după anumite criterii şi forme.
  2. 2. 6 Obiectivele urmărite la organizarea datelor sunt: - realizarea unui acces rapid la date stocate pe diferite suporturi de memorie; - spaţiul de memorie internă şi externă ocupat să fie cât mai mic (economie de memorie); - datele să apară o singură dată în sistem (unicitatea datelor); - modul de organizare a datelor să reflecte, pe cât posibil, toate legăturile dintre obiectele, fenomenele, procesele pe care acestea le reprezintă; - schimbarea structurii datelor şi a relaţiilor dintre ele să se facă fără a modifica programele ce le gestionează (flexibilitatea datelor). Conceptele de bază utilizate în activitatea de organizare a datelor sunt: entitate, atribut, valoare. Entitatea reprezintă un obiect concret sau abstract, caracterizat de proprietăţile sale. O proprietate a unui obiect poate fi exprimată printr-o pereche (ATRIBUT, VALOARE). Spre exemplu: “studentul X este în anul de studii II”, unde “anul de studii” reprezintă atributul, iar “II” reprezintă valoarea. Deoarece o entitate este caracterizată de proprietăţile sale înseamnă că ea se poate reprezenta prin mai multe perechi (ATRIBUT, VALOARE). De exemplu, o persoană X poate fi reprezentată prin mulţimea de perechi: (NUME, IONESCU), (VÂRSTA, 25), (SEX, MASCULIN), (PROFESIE, INGINER). Se observă însă că mulţimea atributelor NUME, VÂRSTA, SEX, PROFESIE poate fi asociată cu mai multe persoane care se individualizează prin valorile acestor atribute. Rezultă că un atribut nu caracterizează doar o entitate, ci poate caracteriza o clasă de entităţi numită entitate grup. Atributele mai sunt cunoscute şi sub numele de câmpuri sau caracteristici. Un atribut este caracterizat de mulţimea valorilor pe care le poate lua. Aceste valori pot fi numerice, alfanumerice (şiruri de caractere) etc. În general atributele au valori elementare, dar pot exista şi situaţii de atribute compuse (formate prin înlănţuirea mai multor atribute elementare). Atributele care identifică în mod unic o anumită entitate se numesc atribute cheie, celelalte atribute numindu-se atribute non-cheie. 1.2. Relaţii între date Datele folosite pentru a descrie diverse procese, fenomene sau obiecte se găsesc în legătură una cu alta. Între datele care aparţin unor tipuri de entităţi pot exista două categorii de legături: - o categorie de legături definită de însăşi apartenenţa datelor la o anumită entitate; - o a doua categorie constituită de legăturile dintre entităţile de acelaşi tip sau de tipuri diferite.
  3. 3. 7 Exemplu: Fie A mulţimea datelor despre salariaţii unei societăţi comerciale. Între datele acestei mulţimi se pot stabili relaţii de tipul: - x are aceeaşi profesie cu y; - x este şeful lui y; - x este mai în vârstă decât y; - x are salariul mai mare sau egal cu al persoanei y etc. Relaţia binară Dacă luăm exemplul anterior putem spune că relaţia “are aceeaşi profesie cu” asociază fiecărui salariat din mulţimea A pe toţi cei care au aceeaşi profesie, cu condiţia să facă parte tot din A. Astfel, se pune în evidenţă o mulţime de perechi ordonate (x,y) cu proprietatea că elementelor x li se asociază elementele y prin relaţia “are aceeaşi profesie cu”. Aceasta se poate reprezenta astfel: "",/, yxsiAyxAAyxR cuprofesieaceeasiare Definiţie. Fie A o colecţie oarecare de date, nevidă. Se numeşte relaţie binară pe A o submulţime R a produsului cartezian A x A care îndeplineşte o proprietate (o legătură). Numim elemente asociate prin relaţia R acele elemente x, y pentru care Ryx, . Dacă Ryx, spunem că “x este asociat lui y prin relaţia R” sau că “x este în relaţia R cu y”, fapt care se mai simbolizează prin x R y. Proprietăţile relaţiei binare dintre date sunt: 1. Reflexivitate. Spunem că o relaţie R, definită pe o mulţime de date A, este reflexivă dacă pentru Rx , avem x R x. Exemplu: Rxxx , . 2. Simetrie. O relaţie R definită pe mulţimea de date A spunem că este simetrică dacă pentru yRximplicaxRyAyx ,, . Exemplu: Fie A mulţimea judeţelor ţării. Dacă x “este vecin cu” y rezultă că y “este vecin cu” x. 3. Asimetrie. Spunem că o relaţie R definită pe o mulţime de date A este antisimetrică dacă pentru Ayx, cu proprietatea că x R y şi y R x, avem x=y. Exemplu: yx şi xy implică yx .
  4. 4. 8 4. Tranzitivitate. Fie A o mulţime de date. Spunem că o relaţie R pe mulţimea A este tranzitivă dacă pentru Azyx ,, cu proprietatea că x R y şi y R z, atunci x R z. Exemplu: Dacă produsul x “intră în componenţa lui” y şi y “intră în componenţa lui” z, atunci x “intră în componenţa lui” z. Definiţie. O relaţie binară R, definită pe mulţimea de date A se numeşte relaţie de echivalenţă dacă este reflexivă, simetrică şi tranzitivă. Definiţie. Fie A o colecţie de date. Dacă Ayx, , există relaţia x R y sau y R x, spunem că relaţia dintre elementele colecţiei este de ordine totală. Definiţie. O relaţie binară R, definită pe o mulţime de date A, care este reflexivă, asimetrică şi tranzitivă se numeşte relaţie de ordine. Definiţie. Relaţia binară R, definită pe o mulţime de date A, care este reflexivă şi tranzitivă se numeşte relaţie de preordine. 1.3. Structuri de date Prelucrarea şi manevrarea eficientă a datelor impune folosirea unor structuri de date complexe. Tipurile de structuri de date folosite în sistemele informatice depind de sistemul informaţional automatizat şi de tehnologiile de prelucrare a datelor folosite. Structura de date este definită ca o colecţie de date între care s-au stabilit o serie de relaţii care conduc la un anumit mecanism de selecţie şi identificare a componentelor. Mulţimea de date asociată structurii poate fi alcătuită din datele unui tip sau mai multor tipuri de entităţi. Componentele unei structuri de date pot fi individualizate şi identificate prin nume (identificator) sau prin poziţia pe care o ocupă în structură (în raport cu ordinea specificată). După modul de localizare al unei componente, o structură de date poate avea acces direct sau secvenţial. Accesul secvenţial presupune parcurgerea tuturor componentelor structurii, aflate înaintea componentei căutate, în timp ce accesul direct permite localizarea unei componente fără a ţine seama de celelalte componente. Elementele care formează o structură de date pot fi date elementare sau pot fi ele însele structuri de date. Operaţiile care se pot efectua asupra structurilor de date se referă la valori şi/sau la structură. Dintre acestea, cele mai frecvente sunt: crearea datelor (memorarea datelor în forma iniţială pe suportul de memorie); consultarea datelor (accesul la componentele structurii în vederea prelucrării valorilor);
  5. 5. 9 actualizarea datelor (schimbarea stării structurii prin adăugarea, ştergerea unor elemente componente, modificarea valorii unor elemente, modificarea relaţiilor dintre elemente); sortarea datelor (aranjarea elementelor unei structuri după anumite criterii); ventilarea structurii (spargerea structurii în două sau mai multe structuri); fuzionarea (formarea unei noi structuri din două sau mai multe structuri); copierea; interclasarea etc. Structurile de date care au aceeaşi organizare şi sunt supuse aceloraşi operaţii formează un tip de structură de date. Un tip de structură de date este o mulţime ordonată de date între care s-au stabilit anumite relaţii şi pentru realizarea operaţiilor se foloseşte un grup de operatori de bază cu o anumită semantică. Clasificarea structurilor de date Clasificarea structurilor de date se poate realiza după mai multe criterii. După tipul componentelor, structurile de date se clasifică în: structuri omogene, în care componentele sunt toate de acelaşi tip; structuri eterogene, în care componentele sunt de tipuri diferite. Dacă o structură se poate descompune în structuri de acelaşi tip atunci avem o structură recursivă. După posibilitatea de modificare a structurii, avem:  structuri statice, care pe tot parcursul existenţei lor au acelaşi număr de componente în aceeaşi ordine;  structuri dinamice, care permit modificarea numărului de componente sau a poziţiei acestora în structură, prin aplicarea operatorilor specifici strucutrii. Aceste structuri pot avea, teoretic, un număr nelimitat de componente şi de aceea se mai numesc structuri cu cardinalitate infinită. Asemănător, structurile statice se consideră că sunt structuri cu cardinalitate finită. Din punct de vedere al nivelului de structurare al datelor avem: structura logică, care se referă la modul de ordonare al datelor şi la operatorii folosiţi pentru tratarea datelor; structura fizică, ce se referă la modul de implementare, de reprezentare efectivă pe un suport de memorie; Principalele tipuri de structuri logice de date sunt: structura punctuală; structura liniară;
  6. 6. 10 structura arborescentă; structura reţea; structura relaţională. Structura punctuală este reprezentată de o entitate grup izolată, care nu are legături (relaţii) cu alte entităţi. Structura liniară (lista) este o structură care defineşte o relaţie de ordine totală între elementele unei colecţii de date. După cum am văzut mai înainte, o relaţie de ordine totală este o relaţie care există între oricare două elemente ale unei colecţii de date. Structura liniară presupune că fiecare element al structurii conţine, pe lângă informaţiile care trebuiesc manevrate, informaţiile necesare pentru a realiza o legătură (relaţie) cu alt element al aceleiaşi structuri. Fig. 1.1. Structuri de date liniare Acest tip de structură are următoarele caracteristici: - are un singur element iniţial şi un singur element terminal; - orice element care nu este iniţial şi nici terminal are un singur succesor imediat; - primul element nu are predecesori; - ultimul element nu are succesori; - dacă există o relaţie între ultimul şi primul element atunci structura este inelară sau circulară; - relaţiile stabilite între date sunt de tipul 1 la 1. O structură este arborescentă sau ierarhică (descendentă) dacă între elementele sale există o relaţie de ordine. Aceasta înseamnă că fiecare element (cu o singură excepţie) provine din alt element aflat pe un nivel ierarhic superior.
  7. 7. 11 Fig. 1.2. Structură de date arborescentă Structura de date arborescentă are următoarele caracterisitci: - elementele structurii se numesc noduri; - există un element unic, numit rădăcina arborelui, care nu are un predecesor; - orice nod diferit de rădăcină are un predecesor imediat unic; - orice nod netermical are un număr finit de succesori imediaţi; - relaţiile stabilita între noduri sunt de tipul 1 la m. Se numeşte drum de lungime n-1 de la nodul ai1 la nodul ain succesiunea de noduri (ai1 , ai2 , ..., ain ) în care pentru 1,, ,, kiki anka este un succesor imediat al lui aik . Drumul de lungime maximă constituie înălţimea arborelui. Un arbore în care fiecare nod are strict numai doi succesori se numeşte arbore binar. Structura de tip reţea este o structură în care între elementele componente există o relaţie de preordine. În acest caz elementele sunt legate unele de altele prin legături multiple. Caracteristicile acestui tip de structură de date sunt: - o reţea este un graf în care, între două noduri, există legături bidirecţionale; - un nod are mai mulţi predecesori şi el însuşi poate fi predecesor pentru propriul său predecesor, caz în care apar cicluri în reţea. Un ciclu este un drum în care nodul iniţial este acelaşi cu nodul final. - între elementele reţelei se stabilesc legături de tipul “m la n”.
  8. 8. 12 O reţea în care există doar legături univoce între elemente se numeşte reţea “simplă”. În caz contrar reţeaua spunem că este o reţea complexă. Într-o reţea simplă nu există cicluri. Exemple de reţele simplă şi complexă sunt date în figura următoare. Fig. 1.3. Exemple de reţele de date Structura relaţională a datelor consideră că acestea sunt organizate la nivel logic sub formă de tabele (relaţii, tablouri) de date elementare, între care nu sunt legături explicite. Fiecare linie dintr-un asemenea tabel se numeşte înregistrare şi fiecare element al unei înregistrări ce corespunde unei anumte coloane se numeşte câmp. Legăturile între date sunt introduse indirect prin intermediul coloanelor comune la mai multe tabele de date (vezi figura).
  9. 9. 13 Fig. 1.4. Structura relaţională a datelor 1.4. Modele de date Prelucrarea datelor cu ajutorul calculatorului presupune folosirea unor modele de date, care modelează diferite obiecte şi/sau procese reale sau abstracte. Pentru a putea defini un model de date trebuiesc precizate următoarele elemente: - structura modelului; - operatorii care acţionează asupra structurilor de date folosite; - restricţiile care se impun pentru menţinerea corectitudinii datelor, restricţii numite şi reguli de integritate. Precizarea structurii modelului presupune descrierea tuturor obiectelor (entităţilor) şi a caracteristicilor asociate acestora. Acest lucru se realizează folosind următoarele elemente generice: - câmpul; este cel mai mic element al structurii care poate fi accesat pentru prelucrare; - grupul simplu sau compus; este un set format din mai multe câmpuri şi/sau grupuri; - înregistrarea, care este un ansamblu de grupuri şi câmpuri, constituind totodată şi elementul generic al structurii. Stabilirea relaţiilor între obiecte se face prin stabilirea relaţiilor care există între înregistrările structurilor folosite la definirea modelului de date respectiv. Structura unui model de date fără valori reprezintă un obiect generic. O colecţie de date cu valori bine precizate şi care respectă un model definit reprezintă o realizare sau o instanţă a tipului de obiect precizat. NUME PRENUME GRUPA NR. MATRICOL Popescu Ion 4175 1245 Ionescu Amalia 5412 1452 Vasilescu Sergiu 5321 1385 FACULTATE SPECIALIZARE NR. MATRICOL Popescu Ion 1245 Ionescu Amalia 1452 Vasilescu Sergiu 1385
  10. 10. 14 Legăturile dintre obiecte (entităţi) poartă denumirea de asociere. Legăturile dintre două entităţi pot fi de trei tipuri: - legături “unu la unu” . Aceasta înseamnă că fiecare obiect are o legătură cu un alt obiect şi numai cu unul. De exemplu, relaţia dintre locurile existente într-un cămin studenţesc şi studenţi. Un loc poate fi ocupat de un singur student, iar un student are dreptul la un singur loc în cămin. - legături “unu la mulţi”. În acest caz un obiect poate avea legături (relaţii) cu mai multe obiecte. De exemplu, un student poate face parte dintr-o singură grupă dar o grupă poate avea mai mulţi studenţi. - legături de tipul “mulţi la mulţi”. Acest tip de legătură presupune că fiecare obiect poate avea multiple legături (relaţii) cu alte obiecte. Spre exemplu, un produs este cumpărat de mai mulţi clienţi şi un client poate achiziţiona mai multe produse. Operatorii care acţionează asupra structurilor de date constituie cel de-al doilea element al unui model de date. Aceşti operatori pot fi de citire, memorare, modificare, joncţiune etc. Regulile de integritate sunt restricţii menite să asigure menţinerea corectitudinii datelor. Ca exemple de astfel de restricţii putem menţiona: - să nu se permită ştergerea valorilor atributelor unui client dacă acesta nu a achitat integral factura pentru cumpărarea unui produs anume; - să nu se permită memorarea valorilor asociate unui produs dacă nu se cunoaşte valoarea unui anumit atribut caracteristic, numit atribut cheie etc. Modelele de date se împart, în funcţie de modul în care se definesc elementele amintite mai sus, în: modele ierarhice sau arborescente, modele reţea, modele relaţionale, modele orientate obiect etc. Modelul ierarhic Foloseşte tipuri de înregistrări care grupează toate atributele unei entităţi. Pentru a realiza asocierile dintre tipuri de înregistrări acest model foloseşte o structură de date arborescentă (o ierarhie).
  11. 11. 15 Fig. 1.5. Ierarhie de date O ierarhie are un tip de înregistrare definit ca rădăcină şi mai multe tipuri de înregistrări subordonate, legate sub formă de arbore. Fiecare nod din arbore care nu este rădăcină sau nod final are un singur nod superior şi unul sau mai multe noduri inferioare. Legătura de la un nod superior la unul inferior este de tipul “unu la mulţi”, iar legătura de la un nod inferior la unul superior este de tipul “unu la unu”. Modelul reţea În acest model, datele sunt reprezentate asemănător cu modelul ierarhic, cu deosebirea că fiecare inferior poate avea mai mulţi superiori. Toate structurile de date, inclusiv legăturile de tipul “m la n” sunt definite natural, fără a recurge la artificii. În cadrul acestui model întâlnim două tipuri de structuri: -tipul de înregistrare ( care asigură atributele unei entităţi); -tipul de set (care asigură legăturile între tipurile de înregistrări). Modelul relaţional Modelul relaţional are la bază teoria matematică a relaţiilor. El foloseşte o singură structură de date: relaţia (tabelul) care este o submulţime a produsului cartezian al unor domenii (un domeniu este reprezentat de o mulţime de valori ale entităţilor). Modelul relaţional poate fi privit ca o mulţime de tabele obţinute prin metoda normalizării. Normalizarea pleacă de la o mulţime de atribute (câmpuri de date) şi o mulţime de dependenţe
  12. 12. 16 funcţionale dintre atribute şi conduce la o schemă conceptuală a modelului relaţional într-o formă normalizată în care se vor elimina anomaliile de actualizări. La cele trei modele de date prezentate mai sus se adaugă modelul orientat obiect, modelul distribuit şi modelul funcţional. Ordinea în care au fost prezentate modelele de date este cea istorică, în ultimii ani utilizându-se practic numai modelul relaţional sau cel distribuit, datorită avantajelor faţă de celelalte modele. 1.5. Baze de date Conceptul de bază de date a apărut în 1969 cu ocazia prezentării primului raport CODASYL în cadrul unei conferinţe pe probleme de limbaje de gestiune a datelor. Evoluţia metodelor şi tehnicilor de organizare a datelor a fost determinată de necesitatea de a avea un acces cât mai rapid şi uşor la un volum din ce în ce mai mare de informaţii precum şi de perfecţionarea echipamentelor de culegere, memorare, transmitere şi prelucrare a datelor. Ideea principală a organizării datelor în baze de date se sprijină pe existenţa unui fişier de descriere globală a datelor prin care se realizează independenţa programelor faţă de date şi a datelor faţă de programe. Accesul oricărui utilizator la baza de date se realiza prin intermediul fişierului de descriere globală a datelor. Fişierul de date conţinea colecţiile de date şi legăturile dintre ele. În esenţă, conceptul de bază de date poate fi definit ca fiind una sau mai multe colecţii de date (Ki), aflate în interdependenţă, împreună cu descrierea datelor şi a relaţiilor dintre ele, (B={K1, K2, ...}) O bază de date astfel definită trebuie să îndeplinească următoarele condiţii: - să asigure o independenţă sporită a datelor faţă de programe şi invers; - structura bazei de date trebuie astfel concepută încât să asigure informaţiile necesare şi suficiente pentru a satisface cerinţele informaţionale şi de decizie ale utilizatorului; - să asigure o redundanţă minimă şi controlată a datelor; - să permită accesul rapid la informaţiile stocate în bază. Arhitectura generală a bazelor de date a fost standardizată internaţional şi cuprinde următoarele elemente componente: - baza de date propriu-zisă în care se memorează colecţia de date; - sistemul de gestiune al bazei de date, care este un ansamblu de programe ce realizează gestiunea şi prelucrarea complexă a datelor;
  13. 13. 17 - un set de proceduri manuale şi automate, precum şi reglementările administrative, destinate bunei funcţionări a întregului sistem; - un dicţionar al bazei de date (metabaza de date)), ce conţine informaţii despre date, structura acestora, elemente de descriere a semanticii, statistici, documentaţie etc. - echipamentele de calcul (hardware) utilizate (comune sau specializate); - personalul implicat (categorii de utilizatori: finali sau de specialitate, analişti- programatori, gestionari, operatori). Bazele de date sunt extrem de variate în funcţie de criteriile de apreciere considerate. În continuare sunt prezentate câteva criterii de clasificare: - după orientare: generalizate, specializate; - după modelul de date folosit: ierarhice, în reţea, relaţionale, orientate obiect; - după amploarea geografică: locale, distribuite; - după limbajele utilizate: autonome (cu limbaje proprii), cu limbaj gazdă, mixte. Componentele bazei de date pot fi structurate pe trei nivele, în funcţie de clasa utilizatorilor implicaţi: - nivelul logic. Este dat de viziunea programatorului de aplicaţii, care realizează programele de aplicaţii pentru manipularea datelor şi structura logică (subschema) corespunzăroare descrierii datelor aplicaţiei; - nivelul conceptual (global). Este dat de viziunea administratorului bazei de date, care realizează structura conceptuală (schema) corespunzătoare descrierii bazei de date şi administrează componentele bazei de date pentru manipularea datelor; - nivelul fizic. Este date de viziunea inginerului de sistem care realizează structura fizică corespunzăroare descrierii datelor pe suportul fizic. 1.6. Sisteme de gestiune a bazelor de date O bază de date poate fi privită ca o colecţie de date stocate pe suporţi de memorie externă, adresabile de către mai mulţi utilizatori şi care satisface cerinţele de informare ale acestora. Sistemul de gestiune al bazei de date reprezintă ansamblul de programe (software) care permite îndeplinirea scopului pentru care a fost creată baza de date. El trebuie să asigure realizarea următoarelor activităţi: - definirea structurii bazei de date; - încărcarea bazei de date; - accesul la date (interogare, actualizare);
  14. 14. 18 - întreţinerea bazei de date (colectarea şi refolosirea spaţiilor goale, refacerea bazei de date în cazul unui incident); - reorganizarea bazei de date ( restructurarea şi modificarea strategiei de acces); - protejarea datelor. Într-un alt sens, sistemul de gestiune al bazei de date se constituie într-o interfaţă între utilizator şi baza de date, reprezentând mecanismul prin intermediul căruia acesta are acces la date. Pentru a-şi putea îndeplini funcţiunile prevăzute, unui sistem de gestiune al bazei de date modern îi revin o serie de obiective de îndeplinit, cum sunt: 1. Asigurarea independenţei datelor. Aceasta presupune că modificarea strategiei de memorare a datelor sau a strategiei de acces la date nu trebuie să afecteze aplicaţia care prelucrează aceste date. Independenţa datelor faţă de aplicaţie este necesară deoarece: diferite aplicaţii au nevoie de viziuni diferite ale aceloraşi date; administratorul bazei de date trebuie să aibă libertatea de a schimba structura de memorare sau strategia de acces, ca răspuns la cerinţe (schimbări de standarde, priorităţile aplicaţiilor, schimbarea unităţilor fizice de memorare etc.), fără a modifica aplicaţiile existente; baza de date existentă, precum şi programele de exploatare a ei reprezintă o investiţie importantă la care nu trebuie să se renunţe prea uşor. Independenţa datelor trebuie privită din două puncte de vedere: independenţa fizică şi independenţa logică a datelor. Independenţa fizică a datelor implică modificarea tehnicilor fizice de memorare a datelor fără a necesita rescrierea programelor de aplicaţie. Independenţa logică a datelor se referă la posibilitatea adăugării de noi articole de date sau extinderea structurii conceptuale (globale), fără ca aceasta să impună rescrierea programelor existente. 2. Asigurarea unei redundanţe minime şi controlate a datelor din baza de date. Redundanţa se referă la numărul de apariţii în baza de date a unei date. }n general, stocarea datelor în baze de date ar trebui să se facă astfel încât fiecare dată să apară o singură dată. Totuşi, există cazuri în care, pentru a reduce timpul de căutare al unei date şi implicit timpul de răspuns la solicitările utilizatorilor, se acceptă o anumită redundanţă a datelor. Această redundanţă trebuie controlată automat, prin program, pentru a se asigura coerenţa datelor din bază. 3. Asigurarea unor facilităţi sporite de utilizare a datelor. Aceasta presupune: - folosirea datelor de către mai mulţi utilizatori în diferite aplicaţii;
  15. 15. 19 - accesul cât mai simplu al utilizatorilor la date, fără ca aceştia să fie nevoiţi să cunoască structura întregii baze de date, acest lucru rămânând în sarcina administratorului bazei de date; - existenţa unor limbaje performante de regăsire a datelor, care permit exprimarea sub forma unei conversaţii, a unor criterii de selecţie a datelor şi indicarea unor reguli cât mai generale pentru editarea informaţiilor solicitate; - utilizarea unui limbaj cât mai apropiat de limbajul natural, cu posibilitatea exploatării bazei de date în regim conversaţional, lucru care ar oferi posibilitatea exploatării bazei de date şi de către utilizatori neinformaticieni. 4. Sporirea gradului de securitate a datelor împotriva accesului neautorizat la ele. În condiţiile bazelor de date, administratorul bazei de date poate prevedea ca acesul la baza de date să se facă numai prin canalele corespunzătoare, şi poate, totodată, defini verificări de autorizare, realizate oricând se încearcă accesul neautorizat la anumite date. 5. Asigurarea integrităţii datelor împotriva unor ştergeri intenţionate sau neintenţionate, prin intermediul unor proceduri de validare, a unor protocoale de control concurent şi a unor proceduri de refacere a bazei de date după incidente. 6. Asigurarea partajabilităţii datelor. Partajabilitatea datelor trebuie înţeleasă nu numai sub aspectul asigurării accesului mai multor utilizatori la aceleaşi date, cişi acela al posibilităţii dezvoltării unor aplicaţii fără a se modifica structura bazei de date. 1.7. Funcţiile unui sistem de gestiune a bazelor de date Sistemele de gestiune a bazelor de date au o multitudine de sarcini de îndeplinit. Grupând aceste sarcini se obţin activităţile şi apoi funcţiile sistemului de gestiune al bazei de date. Ţinând seama de complexitatea sistemului de gestiune, de facilităţile oferite, de limbajele utilizate şi tipul bazei de date ce urmează a fi gestionată gruparea activităţilor pe funcţii poate avea un caracter relativ. În continuare sunt prezentate câteva funcţii mai importante ale sistemelor de gestiune a bazelor de date, funcţii cu caracter de generalitate, valabile pentru toate tipurile de sisteme de gestiune a bazelor de date.
  16. 16. 20 1. Funcţia de descriere a datelor, care permite definirea structurii bazei de date cu ajutorul unui limbaj de definire. Definirea datelor poate fi realizată la nivel logic, conceptual şi fizic. La nivelul acestei funcţii se descriu multitudinea atributelor (câmpurilor) din cadrul structurii bazei de date, legăturile dintre entităţile bazei de date sau dintre atributele aceleiaşi entităţi, se definesc eventualele criterii de validare a datelor, metodele de acces la date, aspectele referitoare la asigurarea integrităţii şi confidenţialităţii datelor etc. 2. Funcţia de manipulare a datelor este cea mai complexă funcţie şi realizează următoarele activităţi: - crearea bazei de date; - încărcarea bazei de date; - adăugarea de noi înregistrări (tupluri); - ştergerea unor înregistrări; - modificarea valorilor corespunzătoare unor câmpuri; - căutarea, sortarea şi editarea parţială sau totală a unei înregistrări virtuale etc. 3. Funcţia de utilizare asigură mulţimea interfeţelor necesare pentru comunicarea tuturor utilizatorilor cu baza de date. În cadrul realizării acestei funcţii apar mai multe categorii de utilizatori: - utilizatori “liberi” sau conversaţionali. Aceştia reprezintă categoriea beneficiarilor de informaţii (utilizatori finali) care utilizează limbajele de interogare a bazei de date într-o formă simplistă. Ei apar ca utilizatori neinformaticieni. - utilizatori programatori, care utilizează limbaje de manipulare, realizând proceduri complexe de exploatare a bazei de date; - administratorul bazei de date, care este un utilizator special având un rol hotărâtor în ceea ce priveşte funcţionarea optimă a întregului ansamblu. 4. Funcţia de administrare a bazei de date. Aceasta apare ca o funcţie complexă şi este de competenţa administratorului bazei de date. Întrebări de verificare a cunoştinţelor 2. Care este diferenţa între date şi informaţii ? 3. Care sunt obiectivele activităţii de organizare a datelor ? 4. Ce activităţi presupune organizarea datelor ? 5. Definiţi conceptele de entitate, atribut, valoare ? 6. Ce se înţelege prin structură de date ? 7. De câte feluri pot fi structurile de date ?
  17. 17. 21 8. Ce fel de operaţii se pot efectua asupra unei structuri de date ? 9. Caracterizaţi structura de date arborescentă ? 10. Caracterizaţi structura de date relaţională ? 11. Care sunt componentele unui model de date ? 12. De câte tipuri pot fi legăturile între entităţi ? 13. Care este structura unei baze de date ? 14. Care sunt nivelele de structurare ale unei baze de date ? 15. Care sunt obiectivele pe care trebuie să le îndeplinească un SGBD ? 16. Care sunt funcţiile unui SGBD ?
  18. 18. 22 2. PROIECTAREA BAZELOR DE DATE 2.1. Etapele de realizare a bazelor de date Pentru a realiza o bază de date este necesară parcurgerea unor etape care nu depind de tipul bazei de date create. Aceste etape sunt: - analiza sistemului informatic pentru care se realizează baza de date şi a cerinţelor informaţionale solicitate de acest sistem; - proiectarea structurii bazei de date (schema conceptuală, externă şi internă); - încărcarea datelor în baza de date; - exploatarea şi întreţinerea bazei de date. Conţinutul acestor etape, respectiv activităţile implicate şi modul lor de desfăşurare depind, în general, de tipul bazei de date precum şi de domeniul de activitate pentru care se construieşte baza de date. Există însă o serie de aspecte cu caracter general care nu sunt influenţate de specificul unui anumit domeniu de activitate sau de caracteristicile unui anumit tip de baze de date. În continuare vor fi prezentate aceste aspecte generale, aspectele specifice urmând a fi tratate atunci când vor fi tratate diferite tipuri de baze de date. Realizarea unei baze de date presupune şi folosirea unor metode şi tehnici de analiză (tehnica normalizării relaţiilor, a diagramelor de dependenţă riguroasă etc.), de programare precum şi a unor instrumente de lucru (limbaje de descriere a datelor - LDD, limbaje de manipulare a datelor - LMD etc.) specifice. 2.2. Analiza sistemului informatic şi a cerinţelor sale informaţionale Analiza sistemului informatic are ca scop elaborarea unuia sau mai multor modele ale acestui sistem, modele care să permită ulterior elaborarea structurii bazei de date. Această analiză presupune următoarele etape: - analiza componentelor sistemului şi a legăturilor (asocierilor) dintre acestea, activitate cunoscută şi sub numele de analiză statică sau structurală, în urma căruia se obţine modelul structural (static) al sistemului; - analiza stărilor sistemului şi a tranziţiilor posibile între aceste stări, în raport de anumite evenimente. Aceasta este aşa numita analiză temporală (comportamentală), prin care se obţine modelul dinamic (sau temporal) al sistemului;
  19. 19. 23 - analiza cerinţelor informaţionale, respectiv a transformărilor de date (a tranzacţiilor) din cadrul sistemului prin care sunt satisfăcute cerinţele informaţionale asociate sistemului. În urma acestei activităţi se obţine modelul funcţional al sistemului informatic analizat; - integrarea modelelor sistemului informatic (structural, dinamic şi funcţional) în scopul corelării şi completării lor. 2.2.1. Analiza structurală a sistemului informatic. Tehnica diagramelor entitate-asociere Analiza structurală a sistemului informatic are ca obiectiv evidenţierea componentelor (obiectelor) din cadrul sistemului, pentru care urmează să se colecteze şi să se memoreze date în cadrul bazei de date, precum şi evidenţierea legăturilor dintre aceste componente. Există astăzi mai multe tehnici de analiză structurală, cea mai utilizată dintre acestea fiind tehnica entitate-asociere. Această tehnică permite constituirea modelului structural sub forma unei diagrame entitate-asociere prin parcurgerea următorilor paşi: - identificarea componentelor (entităţilor) din cadrul sistemului informatic analizat; - identificarea asocierilor dintre entităţi şi calificarea acestora; - identificarea atributelor aferente entităţilor şi asocierilor dintre entităţi; - stabilirea atributelor de identificare a entităţilor. Identificarea componentelor sistemului informatic Componentele sistemului informatic sunt entităţi (obiecte) care au anumite proprietăţi şi care fac schimb de informaţii cu alte entităţi ale sistemului. Ele sunt reprezentate în cadrul diagramei entitate-asociere prin blocuri dreptunghiulare. Considerând activitatea dintr-o instituţie de învăţământ superior se pot identifica următoarele entităţi: - cadre didactice (CADRE_DIDACTICE); - studenţi (STUDENŢI); - personal didactic auxiliar (PERS.DID.AUX.); - personal administrativ (PERS.ADMIN.); - serviciul administrativ (SERV.ADMIN.); - serviciul personal (SERV.PERS.); - serviciul contabilitate (SERV.CONTAB.); - serviciul social (SERV.SOCIAL).
  20. 20. 24 Fiecare entitate poate prezenta în cadrul sistemului mai multe instanţe (realizări). În urma acestei etape se elaborează o primă formă a diagramei entitate-asociere, formă prezentată în figura următoare. Fig. 2.1. Reprezentarea entităţilor în diagrama entitate-asociere Identificarea asocierilor dintre entităţi şi calificarea acestora Componentele unui sistem nu sunt decât arareori izolate, între acestea stabilindu-se legături (asocieri). Spre exemplu, între entităţile STUDENŢI şi SERV.SOCIAL există o asociere, în sensul că serviciul social pune la dispoziţia studenţilor locuri de cazare în cămin. Legăturile dintre entităţi sunt reprezentate prin arce neorientate, care fac legătura între nodurile ce reprezintă entităţile participante la asociere. Semnificaţia legăturii se exprimă printr-un nume acordat legăturii şi se reprezintă cu ajutorul unui nod etichetă în formă de romb, plasat ca nod intermediar între entităţi. Tipul (forma) legăturii se exprimă cu ajutorul cardinalităţii. Cardinalitatea unei legături reprezintă numărul minim şi numărul maxim de realizări (instanţe) de entitate care pot fi asociate cu o realizare a partenerului de asociere. Cardinalitatea se exprimă prin perechi de numere, câte o pereche pentru fiecare entitate din cadrul legăturii. Fig. 2.2. Reprezentarea unei legături (asocieri) între două entităţi cu menţionarea semnificaţiei şi a cardinalităţii
  21. 21. 25 În figura de mai sus este prezentat modul de reprezentare al unei legături cu menţionarea semnificaţiei legăturii şi a cardinalităţii acesteia. Cardinalitatea legăturii de mai sus se poate interpreta astfel: - Serviciul social este obligat să asigure, în limita locurilor disponibile în cămine, locuri de cazare pentru toţi studenţii care solicită acest lucru chiar dacă este vorba doar de un singur student; - Pot solicita locuri de cazare în cămine un număr de studenţi până la numărul maxim de studenţi care locuiesc în alte localităţi, fiind posibilă şi situaţia în care nici un student nu solicită cazare în cămin. Legăturile (asocierile) între entităţi pot fi de mai multe tipuri şi anume: 1. După cardinalitatea asocierii putem avea două situaţii, funcţie de gradul asocierii, respectiv obligativitatea participării entităţilor la asociere. După gradul asocierii (valorile maxime ale cardinalităţi) avem: - asocieri de tipul “unu la unu”. Aceasta înseamnă că cel puţin o realizare a fiecărei entităţi trebuie să participe la asociere. - asocieri de tipul “unu la mulţi”. În acest caz o realizare a unei entităţi are legături cu mai multe realizări ale celeilalte entităţi care participă la asociere. - asocieri de tipul “mulţi la mulţi”, caz în care mai multe realizări ale unei entităţi participante la legătură se asocieză cu mai multe realizări ale celeilalte entităţi. După obligativitatea participării entităţilor la asociere (minimele cardinalităţii) avem: - asocieri parţiale; la care entităţile nu sunt obligate să participe (deci pot avea valoarea minimă a cardinalităţii zero); - asocieri totale sau complete; când cel puţin o realizare a fiecărei entităţi trebuie să participe la sociere. 2. După numărul de entităţi distincte care participă la asociere avem: - asocieri binare; care se realizează între două entităţi distincte; - asocieri recursive; asocieri ale entităţilor cu ele însele; - asocieri complexe; asocieri realizate între mai mult de două entităţi distincte. 3. După semnificaţia lor asocierile se pot clasifica într-o multitudine de categorii datorită semnificaţiilor extrem de variate în cadrul unui anumit sistem informatic. În cadrul analizei structurale este necesar să fie identificate şi analizate asocierile dintre entităţile aflate pe nivele de abstractizare diferite, mai precis asocierile de tipul “este un” şi “este conţinut în”.
  22. 22. 26 Asocierile de tipul “este un” Entităţile puse în evidenţă în cadrul primei etape de analiză structurală pot prezenta diferite grade de abstractizare, deci se pot plasa pe diferite nivele în cadrul schemei de clasificare a entităţilor. În acest sens există entităţi generice (clase), obţinute printr-un proces de generalizare a entităţilor cu anumite caracteristici comune, numite subclase. De exemplu, membrii unei universităţi reprezintă o entitate clasă, care generează entităţile STUDENŢI şi ANGAJAŢI, ultima generând, la rândul ei, entităţile CADRE DIDACTICE, PERS.DID.AUXILIAR şi PERS.ADMINISTRATIV. Asocierea de tip “este un” se prezintă întotdeauna ca o asociere parţială de tip “unu la unu”. Asocierile de tipul “este conţinut în” Asocierile de tipul “este conţinut în” exprimă un proces de agregare, de grupare a mai multor entităţi într-o entitate de nivel superior. Spre deosebire de tipul “este un”, asocierea “este conţinut în” este calificată, după cardinalitate drept asociere de tip “unu la mulţi” sau “mulţi la mulţi”, totală sau parţială. Identificarea atributelor aferente entităţilor şi asocierilor dintre entităţi Atributele exprimă caracteristici, proprietăţi ale componentelor sistemului informatic analizat sau ale asocierilor (legăturilor) dintre aceste componente. În cadrul diagramei entitate-asociere, atributele sunt figurate prin blocuri ovale, legate de entitatea, respectiv asocierea pe care o descriu într-un mod specific, în funcţie de tipul atributelor. Ex.: Atributele pot fi de mai multe tipuri, după cum urmează: 1. Atribut compus (bloc). Acesta este un atribut format din cel puţin două alte atribute. Valoarea sa este reprezentată de valorile atributelor componente. Ex.:
  23. 23. 27 2. Atribut calculat (dedus). Acesta reprezintă un atribut a cărui valoare nu este cunoscută direct, ci se calculează pe baza valorilor altor atribute (de exemplu, atributul VALOARE, calculat ca produs între CANTITATE şi PREŢ). 3. Atribut simplu; atribut care nu este nici compus şi nici calculat. Valorile sale sunt valori atomice, adică nu mai pot fi descompuse în elemente componente. 4. Atribut repetitiv multivaloare. Acesta este un atribut format din mai multe valori care se repetă de mai multe ori pentru aceeaşi entitate. De exemplu : entitatea STUDENT poate fi caracterizată de atributele simple NUME şi GRUPĂ precum şi de atributul repetitiv DISCIPLINĂ, NOTĂ care este identic pentru toate disciplinele audiate de un student. 5. Atribut de identificare (cheie). Reprezintă un atribut care se caracterizează prin unicitatea valorii sale pentru fiecare instanţă a entităţii căreia îi aparţine. Atributele de identificare au un rol aparte în organizarea şi manipularea informaţiilor din baza de date. Stabilirea atributelor de identificare pentru entităţile din cadrul sistemului informatic analizat necesită examinarea mai întâi a capacităţii fiecărui atribut de a se constitui drept atribut de identificare (cheie). Un atribut poate fi atribut de identificare dacă îndeplineşte o serie de cerinţe şi anume: - oferă o identificare unică a realizărilor (instanţelor) de entitate; - posedă o semnificaţie clară; - este uşor de utilizat; - este scurt. Pentru o aceeaşi entitate pot exista mai multe atribute care pot servi drept atribute de identificare, adică pot exista mai multe chei candidate. Selectarea unuia dintre candidaţii cheie drept atribut de identificare a entităţii (cheie) se realizează astfel: 1. Se determină atributele care potenţial pot constitui atribute de identificare a entităţii, deci care respectă cerinţele menţionate anterior şi care poartă numele de candidaţi cheie. Dacă
  24. 24. 28 nu există astfel de atribute se introduce un nou atribut (sau grup de atribute) drept candidat cheie. 2. Dacă există un singur candidat cheie, se va selecta acesta drept atribut de identificare a entităţii. 3. Dacă există mai mulţi candidaţi cheie, se selectează unul, cu ajutorul unor euristici, precum: - se preferă atributele ale căror valori sunt mai puţin volatile; - se preferă atributele ale căror valori sunt mai scurte. 2.2.2. Analiza dinamică (de comportament) a sistemului informatic Analiza dinamică are drept scop explicarea comportamentului elementelor componente ale sistemului informatic analizat. În urma acestei analize se obţine modelul dinamic al sistemului analizat. Construirea modelului dinamic presupune următoarele etape: - identificarea stărilor în care se pot afla componentele sistemului; - identificarea evenimentelor care determină trecerea unei componente dintr-o stare în alta; - stabilirea succesiunii (fluxului) de evenimente şi construirea unei diagrame care să reflecte tranziţiile de stare pentru componentele sistemului (diagramă de flux a evenimentelor). La realizare diagramei de flux a evenimentelor este necesar să se ţină cont de restricţiile dinamice ale sistemului care servesc la identificarea tranziţiilor admisibile între două stări. Fig. 2.3. Stările unei resurse de producţie (utilaj, secţie etc.) şi tranziţiile între aceste stări În figura de mai sus sunt prezentate stările posibile ale unei resurse de producţie generice. Particularizarea acestui model pentru un depozit de materii prime este prezentată în figura următoare.
  25. 25. 29 Fig. 2.4. Modelul dinamic al unui depozit de materii prime privit ca resursă de producţie 2.2.3. Analiza cerinţelor informaţionale (analiza funcţională a sistemului) Analiza cerinţelor informaţionale are drept scop determinarea transformărilor de date care se produc în cadrul sistemului informatic analizat, în scopul satisfacerii cerinţelor informaţionale aferente acestuia. Transformările de date (tranzacţiile) se vor reprezenta sub forme unei diagrame de flux a prelucrărilor (modelul funcţional), în care nodurile reflectă procesele de prelucrare informaţională, iar arcele reflectă fluxurile informaţionale. În cadrul analizei funcţionale accentul se deplasează de la realitatea analizată către cerinţele informaţionale ale utilizatorilor, cerinţe a căror satisfacere constituie obiectivul realizării bazei de date. Construirea modelului funcţional presupune parcurgerea următoarelor etape: - identificarea datelor de intrare şi a datelor de ieşire din sistem; - construirea diagramelor de flux, prin care sunt reflectate legăturile procedurale dintre intrări şi ieşiri; - identificarea restricţiilor; precizarea criteriilor de optimizare.
  26. 26. 30 În figura următoare sunt prezentate două modele funcţionale parţiale, primul se referă la căutarea preţului unui articol dintr-un nomenclator de articole, iar al doilea la tranzacţiile (transformările de date) care se fac pentru a opera o modificare într-un cont bancar al unui client. Fig. 2.5. Modele funcţionale parţiale 2.2.4. Integrarea modelelor sistemului informatic analizat Analiza sistemului informatic se finalizează prin integrarea modelelor structural, dinamic şi a celui funcţional. Modelul structural şi cel dinamic sunt obţinute prin investigarea sistemului real a proprietăţilor intrinseci, statice şi dinamice ale componentelor acestui sistem, proprietăţi care sunt independente de aplicaţiile care operează asupra lor. Modelul funcţional este rezultatul analizei cerinţelor informaţionale ale utilizatorilor, mai precis a tranzacţiilor (aplicaţiilor) prin care pot fi satisfăcute aceste cerinţe. Perspectiva diferită din care este realizată analiza explică de ce rezultatele obţinute pot să difere fiind necesară o coordonare, deci o integrare a lor. În cadrul etapei de integrare a modelelor sistemului se stabileşte în ce măsură modelul structural şi cel dinamic satisfac necesităţile diferitelor aplicaţii, verificându-se completitudinea (existenţa elementelor informaţionale solicitate) şi consistenţa lor (în ce măsură componentele modelelor sunt necesare şi suficiente în raport cu procesele de prelucrare). Se verifică dacă relaţiile dintre componentele sistemului sunt stabilite în mod corespunzător, pentru a face posibilă regăsirea informaţiilor din mai multe entităţi. Se determină, de asemenea, dacă legăturile
  27. 27. 31 dintre entităţi asigură coerenţa informaţiilor, posibilitatea efectuării de actualizări concomitente asupra datelor redundante. Se urmăreşte ca toate elementele informaţionale participante la diferitele tranzacţii să fie asignate, ca atribute ale diferitelor entităţi. Pe baza acestei analize integrate se efectuează adăugările şi/sau corelările necesare între modelele sistemului. În final se ajunge ca modelul structural şi cel dinamic să nu mai fie complet independente de aplicaţii, iar modelul funcţional să nu mai fie orientat exclusiv pe aplicaţii. 2.3. Proiectarea structurii bazei de date Modelele obţinute în urma analizei sistemului informaţional sunt modele ale datelor despre sistem. O caracteristică esenţială a acestor modele (denumite şi modele conceptuale sau semantice) este faptul că sunt independente de instrumentul, respectiv SGBD-ul prin intermediul căruia devin operaţionale. Etapa de analiză a sistemului informatic este important să se realizeze independent de un SGBD specificat. Orientarea pe conceptele proprii unui anumit SGBD prezintă numeroase dezavantaje cum sunt: schimbarea SGBD-ului impune reproiectarea Bazei de Date; conceptele tehnice ale SGBD-ului pot influenţa negativ activitatea de analiză şi modelare, prin restricţii impuse de acesta, care pot încuraja sau descuraja anumite reprezentări; fixând ca punct de plecare facilităţile unui SGBD, utilizatorul neinformatician care nu stăpâneşte acest SGBD nu îşi poate exprima cerinţele în deplină cunoştinţă de cauză. Trecerea la proiectarea structurii bazei de date impune luarea în considerare a SGBD-ului cu ajutorul căruia va fi implementată şi exploatată baza de date. Acesta deoarece baza de date reprezintă un model al datelor exprimat cu ajutorul conceptelor specifice unui anumit SGBD, ceea ce face ca proiectarea structurii bazei de date să reprezinte transpunerea modelelor conceptuale în termenii unui model al datelor suportat de un anumit tip de SGBD (model ierarhic, reţea, relaţional, orientat obiect etc.). Etapa de proiectare a structurii bazei de date constă în următoarele activităţi: alegerea SGBD-ului care va fi utilizat pentru implementarea şi exploatarea bazei de date; proiectarea schemei conceptuale a bazei de date; proiectarea schemei externe (subschemei) a bazei de date; proiectarea schemei interne (de memorare) a bazei de date.
  28. 28. 32 Deoarece aceste activităţi sunt puternic influenţate de tipul bazei de date care se proiectează, în continuare sunt prezentate aspectele generale, valabile indiferent de tipul bazei de date proiectate. Aspectele particulare urmează a fi prezentate atunci când vor fi prezentate diferite tipuri de baze de date. 2.3.1. Alegerea sistemului de gestiune a bazei de date Alegerea unui SGBD presupune realizarea următoarelor activităţi: 1. Stabilirea cerinţelor utilizatorilor, sub aspectul: tipurilor de aplicaţii dorite; timpului de răspuns; confidenţialităţii datelor; securităţii datelor; uşurinţei de utilizare şi altele. 2. Stabilirea cerinţelor de ordin tehnic privind realizarea bazei de date, cum sunt: portabilitatea SGBD-ului, adică posibilitatea folosirii SGBD-ului pe diferite sisteme de calcul; portabilitatea colecţiilor de date şi a programelor. Aceasta înseamnă că datele pregătite cu ajutorul unui calculator să poată fi transferate direct pe alt tip de calculator, împreună cu programele aferente, fără alte operaţii auxiliare; facilităţile de încărcare, exploatare şi întreţinere a bazei de date care trebuiesc asigurate (modalităţile de descriere a datelor, tehnicile de organizare şi regăsire a datelor etc.) şi altele. 3. Stabilirea cerinţelor de ordin economic, privind: încadrarea în bugetul alocat pentru realizarea bazei de date; timpul necesar pentru pregătire utilizatorilor şi trecerea la exploatarea curentă a bazei de date. 4. Ierarhizarea cerinţelor de la punctele anterioare, în funcţie de importanţa (prioritatea) acordată fiecărei cerinţe în parte. 5. Analiza comparativă a SGBD-urilor disponibile şi/sau posibil de achiziţionat, în funcţie de caracteristicile pe care le prezintă aceste SGBD-uri.
  29. 29. 33 6. Stabilirea corespondenţei între cerinţele formulate la punctele 1-3 şi caracteristicile diferitelor SGBD-uri analizate, pentru a determina măsura în care diferitele SGBD-uri analizate permit satisfacerea cerinţelor formulate. 7. Alegerea propriu-zisă a SGBD-ului care va fi folosit la realizarea bazei de date. 2.3.2 Proiectarea schemei conceptuale Proiectarea schemei conceptuale a bazei de date presupune următoarele activităţi: stabilirea colecţiilor de date şi definirea detaliată a conţinutului acestora; determinarea legăturilor dintre colecţiile de date şi a modului de reprezentare a acestora în cadrul schemei conceptuale; testarea schemei obţinute şi revizuirea acesteia, dacă este cazul; descrierea schemei conceptuale în limbajul de descriere a datelor de care dispune SGBD-ul şi încărcarea acestei descrieri în baza de date. La realizarea acestor activităţi sunt utilizate, în principal, modelul structural şi cel dinamic al sistemului analizat. Stabilirea colecţiilor de date şi a conţinutului acestora La stabilirea colecţiilor de date (a componentelor schemei conceptuale) se pleacă de la entităţile identificate în etapa de analiză a sistemului. Fiecărei entităţi îi corespunde, de obicei, o colecţie de date în cadrul schemei conceptuale. În aceste colecţii vor figura atributele specifice entităţilor plus eventual o serie de atribute pentru exprimarea legăturilor cu celelalte componente ale sistemului real, atribute cunoscute sub numele de chei externe. Deoarece nu întotdeauna există o corespondenţă strictă între entităţile din modele semantice şi colecţiile de date din schema conceptuală a bazei de date şi din considerente de ameliorare a lucrului pe aceste colecţii de date se poate decide <spargerea> unei entităţi în două sau mai multe colecţii de date. Acest lucru duce la o creştere a flexibilităţii de operare cu colecţiile de date respective. “Spargerea” unei entităţi în două sau mai multe colecţii de date se realizează ţinând seama de cerinţele informaţionale ale sistemului şi de durata de existenţă a datelor în cadrul sistemului. Astfel, datele care sunt solicitate mai des de către utilizatori, cele care se modifică la intervale reduse de timp sau cele care, deşi nu se modifică prea des, sunt solicitate frecvent de către programe pentru a genera alte date (prin calcul sau în alt mod), pot constitui colecţii separate de date pentru a reduce timpul necesar regăsirii informaţiilor căutate. De exemplu, să considerăm
  30. 30. 34 entitatea UTILAJE aparţinând unui model al unei unităţi de producţie. Un utilaj este caracterizat de următoarele: denumire, tip, număr de inventar, valoare de achiziţionare, data achiziţiei, durata normată de funcţionare, totalul orelor de funcţionare, datele reparaţiilor curente planificate etc. Dar nu toate aceste informaţii prezintă importanţă pentru utilizatori la un moment dat. Aceştia pot fi interesaţi, de exemplu, de caracteristicile generale ale utilajului sau de caracteristicile legate de funcţionarea sau întreţinerea utilajului. Din acest motiv, în cadrul schemei conceptuale a bazei de date pot apare două sau mai multe colecţii de date referitoare la utilajele de producţie şi anume: un nomenclator de utilaje, o colecţie de date referitoare la funcţionarea utilajelor, o colecţie privind reparaţiile efectuate sau planificate. Un alt motiv pentru care apare necesară descompunerea unei colecţii de date în două sau mai multe colecţii derivă din legăturile care apar între atributele unei entităţi. Aceste legături conduc la dependenţe între date datorită cărora, la momentul exploatării bazei de date pot apare o serie de disfuncţionalităţi, aşa numitele “anomalii” de actualizare. Se impune deci reducerea la minimum a dependenţelor (condiţionărilor) dintre atributele unei colecţii de date, lucru realizat, de obicei prin descompunerea colecţiei în două sau mai multe colecţii de date cu un număr mai mic de atribute. Cu toate acestea, îmbunătăţirea performanţelor în manipularea entităţilor nu presupune obligatoriu mărirea numărului colecţiilor de date folosite în cadrul schemei conceptuale. Aceasta deoarece nu se poate admite o creştere nelimitată a numărului de colecţii de date, lucru care determină creşterea dificultăţilor de localizare şi accesare a datelor. Legăturile între un număr mare de colecţii de date impune şi creşterea redundanţei datelor în cadrul bazei de date şi deci o utilizare ineficientă a suportului de memorare. Rezultatele obţinute prin prelucrări costisitoare efectuate asupra datelor din baza de date pot fi memorate folosind colecţii de date special introduse, astfel încât aceste rezultate să nu fie recalculate ori de câte ori sunt solicitate de utilizatori. Este vorba, bineânţeles de informaţii solicitate frecvent de către utilizatori. Prin memorarea acestor rezultate creşte redundanţa datelor, dar se evită efectuarea repetată a unor calcule complicate. Pentru scurtarea căilor de acces la date se mai admite un tip de redundanţă, şi anume cea care apare datorită includerii unor atribute, simultan în mai multe colecţii ale bazei de date. În continuare este prezentat un exemplu referitor la drepturile profesorilor care lucrează într- un liceu. Se pot forma două colecţii de date, una cu informaţiile privind: numele angajatului; salariul de bază; vechimea; numărul de ore suplimentare; numărul de ore de dirigenţie etc.
  31. 31. 35 informaţii care au un grad ridicat de stabilitate, şi alta cu informaţii privind: numele angajatului; salariul de bază; sporul de vechime; numărul de zile lucrate; numărul zilelor de concediu medical şi de odihnă; numărul de ore suplinite; suma pentru orele suplinite; restanţe de plată; suma dedusă pentru pensie suplimentară şi şomaj; impozitul pe salariu; chirii; alte reţineri; avans; restul de plată la lichidare; informaţii care trebuiesc adăugate în baza de date lunar, fie din exterior, fie prin calculul acestora prin program. Determinarea legăturilor dintre colecţiile de date şi a modului de reprezentare a acestora Aceasta se realizează, în principiu, pe baza legăturilor dintre entităţile identificate în cadrul etapei de analiză a sistemului şi a cerinţelor informaţionale. Este necesar să se determine, de asemenea şi legăturile dintre colecţiile care nu au un corespondent direct în entităţile care compun sistemul, dar care la rândul lor se află în asociere, unele cu altele. Modul de reprezentare a legăturilor dintre colecţiile de date depinde de modelul datelor suportatde SGBD. Astfel, modelul ierarhic şi cel reţea utilizează pointeri (adrese de legătură) pentru înlănţuirea datelor în cadrul diferitelor colecţii. Modelul relaţional reprezintă legăturile dintre colecţiile de date (relaţii) cu ajutorul cheilor externe sau cu ajutorul unor colecţi de date distincte. Această reprezentare uniformă a datelor şi a asocierilor între date prin intermediul relaţiilor constituie o caracteristică a modelului relaţional, care conferă acestuia o mare simplitate şi flexibilitate.
  32. 32. 36 Testarea schemei conceptuale Testarea schemei conceptuale presupune verificarea completitudinii şi consistenţei schemei conceptuale, adică determinarea gradului în care schema conţine elementele informaţionale necesare satisfacerii cerinţelor informaţionale ale diferiţilor utilizatori şi măsura în care legăturile stabilite între aceste elemente informaţionale reflectă raporturile naturale dintre componentele sistemului real. De asemenea, prin testarea schemei conceptuale trebuie să se verifice dacă redundanţa datelor este la un nivel minim şi poate fi controlată. Testarea schemei conceptuale permite identificarea unor eventuale erori de proiectare care fac necesară revizuirea schemei. În acest caz se va relua etapa de proiectare a structurii bazei de date, şi, uneori, chiar şi etapa de analiză a sistemului şi a cerinţelor informaţionale. Descrierea schemei conceptuale în limbajul de descriere a datelor şi încărcarea sa în baza de date Descrierea schemei conceptuale a bazei de date se realizează în limbajul de descriere a datelor de care dispune SGBD-ul folosit. Rezultatul acestei descrieri îl constituie proiectul bazei de date sau schema bazei de date. Compilatorul limbajului de descriere a datelor permite aducerea schemei bazei de date în forma la care aceasta să poată fi memorată în baza de date. 2.3.3. Proiectarea schemei externe Schema externă a bazei de date reprezintă forma sub care apare schema conceptuală pentru utilizatori. Ea este formată din multitudinea viziunilor (vederilor) utilizator. O vedere utilizator reprezintă acea parte din schema conceptuală pe care o poate vedea un anumit utilizator. Programele de aplicaţie operează asupra schemei conceptuale prin intermediul schemei externe, având acces doar la acele elemente care sunt incluse în schema externă. Folosirea vederilor reprezintă mecanismul prin care sunt satisfăcute cererile de informaţii ale utilizatorilor (deoarece un utilizator nu este interesat de toate informaţiile stocate în baza de date) asigurând totodată şi protecţia datelor contra accesului neautorizat la date (folosind vederile se limitează accesul fiecărui utilizator doar la acele date care îi sunt necesare). 2.3.4. Proiectarea schemei interne
  33. 33. 37 Schema internă reprezintă modul în care sunt memorate datele pe suport fizic. Schema conceptuală foloseşte diferite structuri de date: liniară, arborescentă, reţea, relaţională în timp ce memorarea datelor pe suport fizic se poate face numai sub forma unei structuri linare. Din această cauză, la proiectarea schemei interne a bazei de date se pune problema modului în care să fie liniarizată schema conceptuală. Metoda de liniarizare a schemei conceptuale depinde de SGBD-ul folosit. Există astfel SGBD-uri care fac apel la metodele de memorare ale datelor pe suportul fizic de memorare pe care le folosesc şi sistemele de operare gazdă şi SGBD-uri care utilizează metode proprii de stocare a datelor pe suportul fizic. Aceste SGBD-uri depind mai puţin de sistemul de operare gazdă, ceea ce le oferă o portabilitate sporită, comparativ cu SGBD-urile din prima categorie. 2.4. Încărcarea datelor în baza de date Aceasta este etapa în care se realizează popularea masivă cu date a bazei de date. Deşi conţinutul acestei etape este relativ simplu, fără dificultatea şi creativitatea reclamate de activităţile de analiză şi proiectare, încărcarea datelor în baza de date reprezintă totuşi o activitate dificil de realizat datorită volumului mare de date care se transferă în baza de date de la diferite surse de date. Fig. 2.6. Fazele încărcării datelor în baza de date
  34. 34. 38 După cum se vede în figura de mai sus, sursele de alimentare cu date a bazei pot fi: documente primare (facturi, bonuri, chitanţe etc.); colecţii de date, gestionate prin diverse instrumente informatice, de exemplu preluarea datelor dintr-o bază de date creată anterior, folosind un SGBD cu care nu se mai lucrează în continuare. Indiferent de sursa datelor, se recomandă ca, în scopul încărcării bazei de date, să se constituie colecţii temporare de date (fişiere). În situaţia în care datele se preiau din documente primare este necesară utilizarea unor colecţii temporare pentru a se deplasa activitatea de validare a datelor cât mai devreme în procesul de încărcare a datelor în baza de date. Programele de încărcare a bazei de date, scrise în limbajul de manipulare a datelor de care dispune SGBD-ul trebuie să conţină cât mai puţine validări deoarece aceste validări încetinesc mult execuţia programelor şi determină apariţia unor “puncte albe” în baza de date, de exemplu, legături neconstituite datorită inexistenţei datelor corespunzătoare. Pe de altă parte, în situaţia în care datele se preiau din colecţii gestionate prin alte instrumente informatice, este necesară utilizarea colecţiilor temporare pentru a se putea adapta cât mai bine structura acestor colecţii la modul de organizare a datelor în baza de date. Programele de încărcare vor fi în acest caz mai simple şi mai robuste, asigurând un transfer mai rapid al datelor în baza de date. 2.5. Exploatarea şi întreţinerea bazei de date Exploatarea bazelor de date de către diferiţi utilizatori finali are ca scop satisfacerea cerinţelor informaţionale ale acestora. SGBD-urile sprijină utilizatorii finali în exploatrea bazelor de date oferind o serie de mecanisme şi instrumente pentru descrierea cerinţelor de date, cum ar fi limbaje de manipulare a datelor etc. Întreţinerea bazei de date este o activitate complexă care are ca scop actualizarea datelor din baza de date, recuperarea datelor pierdute accidental, reproiectarea structurii bazei de date şi orice alte activităţi necesare menţinerii funcţionalităţii bazei de date. Întreţinerea bazei de date este realizată în principal de către administratorul acesteia. 2.6. Întrebări pentru verificarea cunoştinţelor 1. Care sunt etapele proiectării unei baze de date ? 2. Care este obiectivul analizei statice a sistemului informaţional existent ? 3. Explicaţi tehnica diagramelor entitate-asociere.
  35. 35. 39 4. Definiţi cardinalitatea unei legături. 5. Cum se clasifică atributele unei antităţi ? 6. Prin ce se caracterizează atributul cheie ? 7. Care este obiectivul analizei dinamice ? 8. Care este obiectivul analizei funcţionale ? 9. Care sunt etapele proiectării structurii bazei de date ? 10. Care sunt activităţile desfăşurate pentru alegerea unui SGBD ? 11. Ce activităţi presupune proiectarea schemei conceptuale a bazei de date ? 12. Din ce este compusă schema externă a unei baze de date ? 13. Care sunt sursele de date folosite la încărcarea bazei de date ? 14. Care este scopul activităţii de întreţinere a bazei de date ?
  36. 36. 40 3. BAZE DE DATE RELAŢIONALE Ideea bazelor de date relaţionale a fost lansată pentru prima dată de către D. F. Childs care a subliniat faptul că orice structură de date poate fi reprezentată printr-una sau mai multe tabele de date, în cadrul cărora este necesar să existe şi informaţii de legătură, pentru a se asigura legăturile între tabele. Bazele modelului de date relaţional au fost puse de către Codd E.F., în 1970 care are meritul de a fi articulat şi dezvoltat ideile cu privire la utilizarea teoriei apartenenţei la ansambluri sub forma unui model coerent de structurare a datelor - modelul relaţional. 3.1. Modelul relaţional al datelor Componentele modelului relaţional sunt: 1. Structura relaţională a datelor. Aceasta înseamnă că, în bazele de date relaţionale, datele sunt organizate sub forma unor tablouri bidimensionale (tabele) de date, numite relaţii. Asocierile dintre relaţii se reprezintă explicit prin atribute de legătură. Aceste atribute figurează într-una din relaţiile implicate în asociere (de regulă, în cazul legăturilor de tip “unu la mulţi”) sau sunt plasate într-o relaţie distinctă, construită special pentru exprimarea legăturilor între relaţii (în cazul legăturilor de tip “mulţi la mulţi”). O bază de date relaţională (BDR) reprezintă un ansamblu de relaţii, prin care se reprezintă atât datele cât şi legăturile dintre date. 2. Operatorii modelului relaţional. Aceştia definesc operaţiile care se pot executa asupra relaţiilor, în scopul realizării funcţiilor de prelucrare asupra bazei de date, respectiv consultarea, inserarea, modificarea şi ştergerea datelor. 3. Restricţiile de integritate ale modelului relaţional. Permit definirea stărilor coerente ale bazei de date. În comparaţie cu modelele ierarhice şi în reţea, modelul relaţional prezintă o serie de avantaje, precum: ► Asigurarea unui grad sporit de independenţă a programelor de aplicaţie faţă de modul de reprezentare internă a datelor şi metodele de acces la date. În precizarea prelucrărilor asupra datelor, programele de aplicaţie nu fac apel la pointeri, fişiere inverse sau alte elemente ale schemei interne a bazei de date. În ceea ce priveşte independenţa logică, aceasta nu este complet rezolvată nici cu ajutorul modelului
  37. 37. 41 relaţional. O deficienţă a modelului relaţional este aceea că nu permite modelarea comportamentului dinamic al datelor, ceea ce face ca o mare parte din semantica aplicaţiilor să fie codificată în programe şi nu în schema conceptuală a bazei de date. ► Furnizarea unor metode şi tehnici eficiente de control a coerenţei redundanţei datelor, cu o bună fundamentare teoretică. Modificările pe care le suferă în timp datele ridică probleme serioase la întreţinerea bazei de date, în ceea ce priveşte controlul actualizărilor, reflectarea modificărilor din structura mediului economic real în structura datelor etc. Modelul relaţional, prin tehnica normalizării relaţiilor permite definirea unei structuri conceptuale optime a datelor, prin care se minimizează riscurile de eroare la actualizare, reducându-se redundanţa datelor. ► Oferirea unor facilităţi multiple de definire şi manipulare a datelor. În primul rând, modelul relaţional oferă posibilitatea utilizării unor limbaje procedurale, bazate pe algebra relaţională, precum şi a unor limbaje neprocedurale având la bază calculul relaţional. Limbajele neprocedurale (declarative) contribuie la îmbunătăţirea semnificativă a comunicării dintre sistem şi utilizatorii neinformaticieni. În al doilea rând, manipularea datelor se realizează la nivel de ansamblu (relaţie), fiind posibilă utilizarea paralelismului în prelucrarea datelor. ► Ameliorarea integrităţii şi confidenţialităţii datelor. Modelul relaţional realizează acest lucru prin mecanisme flexibile şi eficace de specificare şi utilizare a restricţiilor de integritate şi a relaţiilor virtuale. 3.2. Structura relaţională a datelor Pentru a defini structura relaţională a datelor trebuie să definim noţiunile de: domeniu, relaţie, atribut şi schemă a unei relaţii. 3.2.1. Domeniu Domeniul reprezintă un ansamblu de valori, caracterizat printr-un nume. Un domeniu se poate defini explicit, prin enumerarea tuturor valorilor aparţinând acestuia sau implicit, prin precizarea proprietăţilor pe care le au valorile domeniului respectiv. Spre exemplu să consideră următoarele domenii D1, D2, D3, definite astfel: D1 : {“F”,”M”} D2 : }100,0,|{ xNxx
  38. 38. 42 D3 : {s | s = şir de caractere } Domeniul D1 este definit explicit în timp ce domeniile D2 şi D3 sunt definite implicit. Pentru un ansamblu de domenii D1, D2, ..., Dn produsul cartezian al acestora reprezintă ansamblul tuplurilor <v1, v2, ..., vn>, unde vi este o valoare aparţinând domeniului Di. De exemplu, tuplurile <”Maria”, “F”, 45>, <”Vasile”, “M”, 24> aparţin produsului cartezian: D3xD1xD2. 3.2.2. Relaţie Relaţia reprezintă un subansamblu al produsului cartezian al mai multor domenii, subansamblu caracterizat printr-un nume şi care conţine doar tupluri cu semnificaţie. Considerând, de exemplu că pentru produsul cartezian definit mai sus se cunosc doar două persoane, definim relaţia R prin tuplurile care descriu aceste persoane: R : {<”Maria”, “F”, 20>, <”Vasile”, “M”, 22>} Într-o relaţie, tuplurile trebuie să fie distincte ( nu se admit duplicări ale tuplurilor ). O reprezentare comodă a relaţiei este tabelul bidimensional (tabela de date), în care liniile reprezintă tuplurile, iar coloanele corespund domeniilor (vezi figura). R: D3 D1 D2 “Maria” “F” 20 “Vasile” “M” 22 În prezentarea conceptului de relaţie se poate recurge la analogii cu alte concepte, extrem de bine cunoscute în domeniul prelucrării automate a datelor, precum este conceptul de fişier. Relaţia poate avea semnificaţia unui fişier, tuplul poate fi considerat drept o înregistrare, iar valorile din cadrul tuplului pot fi interpretate drept valori ale câmpurilor înregistrării. În cadrul modelului relaţional nu interesează decât relaţiile finite, chiar dacă la construirea relaţiilor se admit domenii infinite. Numărul tuplurilor dintr-o relaţie reprezintă cardinalul relaţiei, în timp ce numărul valorilor dintr-un tuplu defineşte gradul relaţiei.
  39. 39. 43 3.2.3. Atribut Atributul reprezintă coloana unei tabele de date, caracterizată printr-un nume. Numele coloanei (atributului) exprimă de obicei semnificaţia valorilor din cadrul coloanei respective. Atributele se folosesc pentru a conferi flexibilitate datelor. Pentru a înţelege această problemă vom considera următorul exemplu. Să presupunem că pentru o persoană dispunem de următoarele date: nume, sex, vârstă şi numele soţului/soţiei. O posibilitate de organizare a acestor date este reprezentată de relaţia din figura următoare. PERS: D3 D1 D2 D3 “Maria” “F” 30 “Vasile” “Vasile” “M” 32 “Maria” Relaţia PERS reprezintă un subansamblu al produsului cartezian: D3 x D1 x D2 x D3. Semnificaţia valorilor din cadrul unui tuplu se stabileşte în acest caz nu numai pe baza domeniului de care aparţin valorile, ci şi în funcţie de poziţia ocupată în cadrul tuplului. Dependenţa faţă de ordine a datelor înseamnă o reducere a flexibilităţii organizării datelor. Într-o organizare eficientă, flexibilă, ordinea liniilor şi a coloanelor din cadrul tabelei de date nu trebuie să prezinte nici o importanţă. Pentru a diferenţia coloanele care conţin valori ale aceluiaşi domeniu şi a elimina astfel dependenţa de poziţie în cadrul tabelei se asociază fiecărei coloane un nume distinct, lucru care a dus la apariţia noţiunii de atribut. Prin folosirea atributelor, relaţia PERS poate fi prezentată într-unul din modurile menţionate mai jos. PERS: PERS: Nume (D3) Sex (D1) Vârsta (D2) Sot(D3) Nume (D3) Sot(D3) Sex (D1) Vârsta (D2) “Maria” “F” 30 “Vasile” “Maria” “Vasile” “F” 30 “Vasile” “M” 32 “Maria” “Vasile” “Maria” “M” 32
  40. 40. 44 3.2.4. Schema unei relaţii Prin schema unei relaţii se înţelege numele relaţiei, urmat de lista atributelor, pentru fiecare atribut precizându-se domeniul asociat. Astfel, pentru o relaţie R, cu atributele A1, A2, ..., An şi domeniile D1, D2, ..., Dm, schema relaţiei R poate fi reprezentată într-una din formele prezentate în figura de mai jos. R (A1:D1, A2:D2, ..., An:Dm) sau R: A1:D1 A2:D2 . .. An:Dm Schema unei relaţii se mai numeşte şi intensia relaţiei, ca expresie a proprietăţilor comune şi invariante ale tuplurilor care compun relaţia. Spre deosebire de intensie, extensia unei relaţii reprezintă ansamblul tuplurilor care compun la un moment dat relaţia, ansamblu care este variabil în timp. De obicei, extensia unei relaţii este stocată fizic în spaţiul asociat bazei de date, caz în care relaţia poartă numele de relaţie de bază. Există însă şi situaţii în care extensia nu este memorată în baza de date. Este cazul aşa-numitelor relaţii virtuale, cunoscute şi sub numele de relaţii derivate sau viziuni. Relaţia virtuală nu este definită explicit ca relaţie de bază, prin ansamblul tuplurilor componente, ci implicit, pe baza altor relaţii, prin intermediul unei expresii relaţionale. Stabilirea efectivă a tuplurilor care compun relaţia virtuală se realizează prin evaluarea expresiei, ori de câte ori utilizatorul invocă această relaţie. 3.3. Operatorii modelului relaţional Modelul de date relaţional oferă două colecţii de operatori pentru operaţii cu relaţii şi anume: - algebra relaţională; - calculul relaţional.
  41. 41. 45 3.3.1. Algebra relaţională şi extensiile sale Algebra relaţională (AR) se poate defini ca o colecţie de operaţii pe relaţii, fiecare operaţie având drept operanzi una sau mai multe relaţii şi producând ca rezultat o altă relaţie. Operaţiile algebrei relaţionale se pot împărţi în: - operaţii de bază, precum: reuniunea, diferenţa, produsul cartezian etc. - operaţii derivate, ca: intersecţia, diviziunea etc. Algebra relaţională standard, definită de Codd, este constituită din 6 operaţii de bază: reuniunea, diferenţa, produsul cartezian, proiecţia, selecţia şi joncţiunea precum şi din două operaţii derivate: intersecţia şi diviziunea. Ulterior, la operaţiile AR standard au fost adăugate şi alte operaţii, aşa numitele operaţii “adiţionale” sau extensii ale AR standard, precum: complementarea unei relaţii, splitarea (spargerea) unei relaţii, închiderea tranzitivă etc. În general, operaţiile AR pot fi grupate în: - operaţii tradiţionale pe mulţimi (reuniunea, intersecţia, diferenţa, produsul cartezian); - operaţii relaţionale speciale (selecţia, proiecţia, joncţiunea etc.). În continuare sunt prezentate principalele operaţii ale algebrei relaţionale, precum şi modul lor de utilizare. 1. Reuniunea. Reprezintă o operaţie a algebrei relaţionale definită pe două relaţii: R1 şi R2, ambele cu aceeaşi schemă, operaţie care constă din construirea unei noi relaţii R3, cu o schemă identică cu R1 şi R2 şi având drept extensie tuplurile din R1 şi R2, luate împreună o singură dată. Reuniunea se notează uzual cu: OR (R1,R2) APPEND (R1,R2) UNION (R1,R2) În figura următoare este prezentat un exemplu de reuniune a două relaţii ORAŞE şi MUNICIPII, formând astfel o a treia relaţie, LOCALITĂŢI.
  42. 42. 46 2. Diferenţa. Reprezintă o operaţie a algebrei relaţuionale construită pe două relaţii: R1 şi R2, ambele cu o aceeaşi schemă, operaţie care constă din construirea unei noi relaţii R3, cu schema identică cu a operanzilor şi cu extensia formată din acele tupluri ale relaţiei R1 care nu se regăsesc şi în relaţia R2. Notaţiile uzuale pentru operaţia de diferenţă a două relaţii sunt: R1-R2 REMOVE (R1,R2) MINUS (R1,R2) Un exemplu de diferenţă a două relaţii este dat în continuare. 3. Produs cartezian. Reprezintă o operaţie a algebrei relaţionale definită pe două relaţii: R1 şi R2, operaţie care constă din construirea unei noi relaţii R3, a cărei schemă se obţine prin concatenarea schemelor relaţiilor R1 şi R2 şi a cărei extensie cuprinde toate combinaţiile tuplurilor din R1 cu cele din R3. Notaţiile uzuale pentru desemnarea operaţiei sunt: R1 x R2 PRODUCT (R1,R2) TIMES (R1,R2)
  43. 43. 47 În continuare este prezentat un exemplu de produs cartezian a două relaţii. 4. Proiecţia. Reprezintă o operaţie din algebra relaţională definită asupra unei relaţii R, operaţie care constă din construirea unei noi relaţii P, în care se regăsesc numai acele atribute din R specificate explicit în cadrul operaţiei. Suprimarea unor atribute din R înseamnă efectuarea unor tăieturi verticale asupra lui R, care pot avea ca efect apariţia unor tupluri duplicate ce se cer a fi eliminate. Prin proiecţie se trece de la o relaţie de grad n la o relaţie de grad p, mai mic decât cel iniţial, adică de la un spaţiu cu n dimensiuni la un spaţiu cu mai puţine dimensiuni, ceea ce explică şi numele de proiecţie atribuit operaţiei. Notaţiile uzuale pentru operaţia de proiecţie: )(,...,, Rmji AAA R [ Ai, Aj, ..., Am ] PROJECT(R, Aj, Aj, ..., Am)
  44. 44. 48 În figura de mai sus este prezentată proiecţia relaţiei ORAŞE pe atributul JUDEŢ. 5. Selecţia reprezintă o operaţie din algebra relaţională definită asupra unei relaţii R, operaţie care constă din construirea unei relaţii S, a cărei schemă este identică cu cea a relaţiei R şi a cărei extensie este constituită din acele tupluri din R care satisfac o condiţie menţionată explicit în cadrul operaţiei. Întrucât cel mai adesea, nu toate tuplurile din R satisfac această condiţie, selecţia înseamnă efectuarea unor tăieturi orizontale asupra relaţiei R, adică eliminarea de tupluri. Condiţia precizată în cadrul operaţiei de selecţie este în general de forma: atribut operator de comparaţie valoare unde: <operator de comparaţie> poate fi: <, <=, >=, > sau #. Notaţiile folosite pentru desemnarea operaţiei de selecţie sunt următoarele: )(Rconditie R [condiţie] RESTRICT(R, condiţie). 6. Joncţiunea (Joinul) reprezintă o operaţie din algebra relaţională definită pe două relaţii: R1 şi R2, operaţie care constă din construirea unei noi relaţii R3, prin concatenarea unor tupluri din R1 cu tupluri din R2. Se concatenează acele tupluri din R1 şi R2 care satisfac o anumită condiţie,
  45. 45. 49 specificată explicit în cadrul operaţiei. Extensia relaţiei R3 va conţine deci combinaţiile acelor tupluri care satisfac condiţia de concatenare. Notaţiile uzuale pentru desemnarea operaţiei de joncţiune sunt: R1 R2 condiţie JOIN (R1, R2, condiţie) 7. Intersecţia reprezintă o operaţie din AR definită pe două relaţii: R1 şi R2, ambele cu aceeaşi schemă, operaţie care constă din construirea unei noi relaţii R3, cu schema identică cu a relaţiilor R1 şi R2 şi cu extensia formată din tuplurile comune lui R1 şi R2. Notaţiile uzuale pentru operaţia de intersecţie sunt: 21 RR INTERSECT (R1, R2) AND (R1, R2). 8. Diviziunea reprezintă o operaţie din AR definită asupra unei relaţii R din care se obţine, cu ajutorul altei relaţii P, relaţia Q a cărei extensie este formată din atributele din R care rămân după eliminarea atributelor relaţiei P. Notaţiile folosite pentru operaţia de diviziune sunt: rR DIVISION(R,r). 3.4. Restricţiile de integritate ale modelului relaţional Restricţiile de integritate, denumite şi reguli de integritate, definesc cerinţele pe care trebuie să le satisfacă datele din cadrul bazei de date pentru a putea fi considerate corecte, coerente în raport cu lumea reală pe care o reflectă. Restricţiile de integritate reprezintă principalul mod de integrare a semanticii datelor în cadrul modelului relaţional al datelor, mecanismele de definire şi verificare a acestor restricţii
  46. 46. 50 reprezentând principalele instrumente pentru controlul semantic al datelor. Avantajele încorporării semanticii datelor în cadrul bazelor de date constau din posibilitatea întreţinerii mai uşoare a aplicaţiilor şi posibilitatea implementării unor mecanisme fizice mai eficiente. În teoria sistemelor relaţionale, restricţiile de integritate sunt studiate în principal sub aspectul puterii lor de modelare şi al posibilităţilor de verificare eficace a respectării lor. Un exemplu semnificativ îl reprezintă dependenţele între date, şi în primul rând dependenţele funcţionale. Dependenţele între date, ca restricţii de integritate constituie un suport teoretic solid pentru problemele de modelare informatică. În acest sens, dependenţele funcţionale au permis definirea conceptului de “structură relaţională optimă”, stând la baza teoriei optimizării structurii relaţionale a datelor, respectiv teoria normalizării relaţiilor. Restricţiile de integritate ale modelului relaţional sunt următoarele: 1. Restricţii de integritate minimale, obligatoriu de definit şi de respectat atunci când se lucrează cu modelul relaţional. Din această categorie fac parte: restricţia de unicitate a cheii; restricţia referenţială; restricţia entităţii. 2. Alte restricţii de integritate, din care fac parte: dependenţele între date; restricţiile de comportament. Restricţiile de integritate minimale sunt definite în raport cu noţiunea de cheie a unei relaţii. Cheia unei relaţii, R, reprezintă ansamblul minimal de atribute prin care se poate identifica în mod unic orice tuplu din R. Orice relaţie posedă cel puţin o cheie. La limită, cheia este constituită fie dintr-un singur atribut, fie din totalitatea atributelor din schema relaţiei respective. Când cheia este constituită dintr-un singur atribut poartă numele de cheie simplă, iar atunci când este formată din mai multe atribute este denumită cheie compusă. Într-o relaţie pot exista mai multe combinaţii de atribute cu proprietatea de identificare unică a tuplurilor. Se spune în acest caz că relaţia posedă mai mulţi candidaţi cheie (sau mai multe chei candidate). În această situaţie, administratorul bazei de date va alege dintre cheile candidate una care să servească în mod efectiv la identificarea tuplurilor şi care va primi numele de cheie primară. Restul cheilor candidate vor purta numele de chei alternate. Cheia unei relaţii trebuie să fie minimală, adică nici o parte a sa nu trebuie să fie la rândul ei cheie. Un grup de atribute din cadrul unei relaţii care conţine o cheie a relaţiei poartă numele de supercheie. Modelarea asocierilor dintre entităţi impune recurgerea la conceptul de cheie externă. O cheie externă reprezintă un atribut/grup de atribute dintr-o relaţie R1 ale cărui/căror valori sunt definite
  47. 47. 51 pe acelaşi/aceleaşi domeniu/domenii ca şi cheia primară a unei relaţii, R2 şi care are rolul de a modela asocierea între entităţile reprezentate prin relaţiile R1 şi R2. În acest context, R1 este denumită relaţie care referă, în timp ce R2 poartă numele de relaţie referită. Restricţia de unicitate a cheii reprezintă restricţia de integritate care impune ca într-o relaţie, R care are cheia K, oricare ar fi tuplurile t1 şi t2 să fie satisfăcută inegalitatea: t1 (K) # t2 (K). Această inegalitate semnifică faptul că într-o relaţie nu pot exista două tupluri cu aceeaşi valoare pentru atributele cheie. Restricţia referenţială (integritatea referirii) reprezintă restricţia de integritate care impune ca într-o relaţie R1 care referă o relaţie R2, valorile cheii externe să figureze printre valorile cheii primare din relaţia R2 sau să fie valori nedefinite (“null”). R1 şi R2 nu trebuie să fie neapărat distincte. Semnificaţia restricţiei de integritate a referirii este următoarea : o asociere nu poate exista decât între entităţi deja definite. Atunci când, într-o anumită situaţie, asocierea nu este aplicabilă, unul din parteneri va fi desemnat prin valoarea “null”, cu semnificaţia de “partener inexistent”. Restricţia entităţii (integritatea entităţii) reprezintă restricţia de integritate care impune ca într-o relaţie atributele cheii primare să fie nenule. Unicitatea cheii impune ca la încărcarea unui tuplu, valoarea cheii să fie cunoscută, pentru a se putea verifica faptul că această valoare nu există deja încărcată (tuplul nu figurează deja în baza de date). Cu valori <null>, cheia îşi pierde rolul de identificator de tuplu. Restricţia de integritate a entităţii nu se aplică cheilor externe dintr-o relaţie, dacă acestea nu aparţin cheii primare. Restricţiile referitoare la dependenţa datelor semnifică modul în care datele depind unele de altele. Această dependenţă între date poate fi de mai multe tipuri şi anume: - dependenţă funcţională; reprezintă dependenţa între date prin care se poate identifica un atribut/grup de atribute prin intermediul altui atribut/grup de atribute. Fiind dată o relaţie R, un atribut Y din R este dependent funcţional de un alt atribut X din R, dacă şi numai dacă fiecare valoare a lui X are asociată o valoare precisă a lui Y. - dependenţă multivaloare; reprezintă acel tip de dependenţă între date în care un atribut/grup de atribute poate prezenta mai multe valori pentru o singură valoare a unui alt atribut/grup de atribute. Fie o relaţie R, în care apar atributele/grupurile de atribute:X, Y şi Z. În cadrul relaţiei R există o dependenţă multivaloare dacă şi numai dacă mulţimea valorilor lui Y corespunzătoare unei perechi: (valoare X, valoare Z) depinde numai de valoarea lui X, nu şi de valoarea lui Z; - dependenţă jocţiune; această restricţie exprimă o dependenţă între date mai generală decât dependenţa funcţională sau dependenţa multivaloare. Considerând o relaţie R, cu schema R(X:Dx,Y:Dy,Z:Dz) pentru care nu se manifestă dependenţe funcţionale
  48. 48. 52 sau dependenţe multivaloare, adică relaţia R se poate asimila unei chei compuse. Asupra acestei relaţii se formulează următoarea restricţie: dacă în relaţia R figurează tuplurile, şi atunci în R trebuie să figureze şi tuplul . Restricţiile de comportament se pot defini de către utilizator în funcţie de realitatea descrisă în baza de date şi pot fii: restricţii de domeniu; care impun ca valorile unui atribut dintr-o relaţie să se încadreze în anumite limite; restricţii temporale etc. 3.5. Proiectarea bazelor de date relaţionale Proiectarea bazelor de date relaţionale se realizează conform cu cele prezentate în capitolul anterior. Diferenţe apar la activităţile legate de proiectarea schemelor conceptuale, interne şi externe, de încărcarea, exploatarea şi întreţinerea bazei de date. 3.5.1. Proiectarea schemei conceptuale La proiectarea bazelor de date relaţionale se foloseşte frecvent termenul de “schemă conceptuală optimă”, prin care se înţelege acea schemă conceptuală care înlătură posibilităţile apariţiei de anomali în lucrul cu baza de date, asigurând totodată facilităţi şi performanţe sporite la încărcarea, exploatarea şi întreţinerea bazei de date. Anomaliile care apar la lucrul cu baze de date se manifestă îndeosebi la întreţinerea bazei de date, fiind cunoscute şi sub numele de anomalii de actualizare a datelor. Ele se manifestă nu numai în cazul bazelor de date relaţionale, ci şi la celelalte tipuri de baze de date. În cadrul teoriei relaţionale a bazelor de date, anomaliile de actualizare sunt puse în legătură cu dependenţele care se manifestă între date. Abordarea anomaliilor de actualizare a permis, pe de o parte caracterizarea riguroasă a relaţiilor după gradul de “perfecţiune” pe care îl prezintă (aşa numitele “forme normale” ale relaţiilor) şi pe de altă parte a făcut posibilă definirea unor tehnici formale pentru înlăturarea anomaliilor de actualizare. Formele normale ale relaţiilor Anomaliile care apar în lucrul cu baze de date relaţionale se produc datorită dependenţelor “nedorite” care se manifestă între datele din cadrul relaţiilor bazei de date. Aceste dependenţe
  49. 49. 53 determină creşterea redundanţei datelor şi reducerea flexibilităţii structurii bazei de date, efect manifestat prin: limitarea posibilităţilor de inserare a datelor; apare când anumite date despre o entitate nu pot fi introduse în baza de date datorită lipsei altor date, relative la aceeaşi entitate, şi fără de care, datele noi nu pot fi introduse datorită dependenţelor dintre aceste date; pierderi de date la ştergere; apar atunci când, în urma unei ştergeri din baza de date sunt şterse şi altele, care nu mai pot fi obţinute (reconstituite) din baza de date; apariţia unor inconsistenţe la modificarea datelor; adică menţinerea, pentru unele atribute, a unor valori neactualizate alături de valorile actualizate. Formele normale ale relaţiilor dintr-o bază de date relaţională sunt definite în raport de anomaliile care pot apare în lucrul cu aceste relaţii, deci în funcţie de dependenţele “nedorite” care se manifestă în cadrul acestor relaţii. La proiectarea bazelor de date relaţionale se pot defini cinci forme normale, formând cinci nivele de normalizare a relaţiilor. O relaţie R este în forma normală unu, FN1, dacă domeniile pe care sunt definite atributele relaţiei sunt constituite numai din valori atomice (elementare). În plus, un tuplu nu trebuie să conţină atribute sau grupuri de atribute repetitive. O relaţie R este în forma normală doi, FN2, dacă este în FN1 şi oricare dintre atributele noncheie este dependent funcţional complet de cheia primară a relaţiei. O relaţie R este în forma normală trei, FN3, dacă este în FN2 şi atributele noncheie nu sunt dependente tranzitiv de cheia primară a relaţiei. Relaţia R este în forma normală patru, FN4, dacă este în FN3 şi în cadrul ei nu se manifestă mai mult de o dependenţă multivaloare. Spunem că relaţia R este în forma normală cinci, FN5, dacă fiecare dependenţă joncţiune este implicată printr-un candidat cheie al lui R. Etapele procesului de proiectare a schemei conceptuale Proiectare schemei conceptuale a unei baze de date relaţionale presupune parcurgerea următoarelor etape: 1. Determinarea formei normale în care trebuie să se afle relaţiile din baza de date (a nivelului de “perfecţiune” impus schemei conceptuale). Relaţiile aflate în forme normale superioare determină apariţia unui număr redus de anomali în lucrul cu baza de date, comparativ cu relaţiile nenormalizate sau aflate în primele forme normale, dar conduc todată la creşterea timpului de acces la date. Aceasta deoarece relaţiile aflate în forme
  50. 50. 54 normale superioare conţin, de regulă, un număr mai mic de atribute, lucru care impune creşterea numărului de relaţii din baza de date, deci interogarea simultană a mai multor relaţii pentru a găsi anumite informaţii. În determinarea formei normale la care trebuiesc aduse relaţiile din bazele de date relaţionale se vor avea în vedere următoarele: ponderea operaţiilor de interogare şi a celor de actualizare în lucrul cu bazele de date relaţionale; exigenţele de performaţă şi flexibilitate impuse de utilizatorii finali la interogarea şi, respectiv la actualizarea bazelor de date relaţionale. 2. Stabilirea relaţiilor care să facă parte din baza de date, în forma normală stabilită anterior. Aceasta presupune definirea relaţiilor şi a restricţiilor de integritate asociate, lucru realizat pe baza modelelor conceptuale ale sistemului, modele obţinute în etapa de analiză a sistemului şi a cerinţelor informaţionale asociate. În cadrul acestei etape se pot aplica mai multe tehnici de proiectare (tehnica normalizării, tehnica diagramelor de dependenţă riguroasă etc.). 3. Testarea schemei conceptuale obţinute şi revizuirea acesteia, dacă este cazul; 4. Descrierea schemei conceptuale în limbajul de descriere a datelor utilizat de SGBD-ul relaţional folosit şi încărcarea acestei descrieri în baza de date relaţională. 3.5.2. Proiectarea schemei externe Schema externă a unei baze de date relaţionale reprezintă ansamblul relaţiilor (tabelelor de date) la care are acces un utilizator (un program de aplicaţie). Deşi mai mulţi utilizatori pot lucra cu o aceeaşi schemă externă, în general, se consideră pentru o bază de date relaţională atâtea scheme externe câţi utilizatori există la un moment dat, scheme care trebuiesc proiectate şi apoi făcute operaţionale. Schema externă reprezintă modul de organizare, structurare, a datelor de care are nevoie un anumit utilizator pentru a-şi satisface toate cerinţele informaţionale. Deoarece, de cele mai multe ori, un utilizator nu are nevoie de ansamblul datelor memorate în cadrul bazei de date ci numai de o parte a acestor date, se consideră schema externă drept o partiţie logică a schemei conceptuale a bazei de date. Din această cauză, schema externă a unei baze de date mai este cunoscută şi sub numele de subschemă a bazei de date. Modul de structurare a datelor în cadrul schemei externe poate fi cel din cadrul schemei conceptuale sau poate să fie diferit. Acest lucru se explică prin faptul că structurarea datelor în cadrul schemei conceptuale are ca obiectiv optimizarea structurii de ansamblu a bazei de date
  51. 51. 55 relaţionale, în raport de ansamblul cerinţelor informaţionale ale tuturor utilizatorilor, în timp ce structurarea datelor în cadrul schemei externe urmăreşte facilitarea satisfacerii cerinţelor informaţionale pentru un anumit utilizator. Deoarece aceste două criterii nu sunt echivalente se obţin rezultate, deci structuri ale datelor diferite. La proiectarea unei scheme externe a unei baze de date relaţionale se parcurg următoarele etape: 1. Determinarea zonei (ariei) de interes pentru un anumit utilizator din cadrul sistemului informatic reflectat informaţional cu ajutorul bazei de date; 2. Analiza structurală, dinamică şi funcţională a acestei zone din domeniul activităţii economice reprezentate prin sistemul informatic pentru care se realizează baza de date; 3. Proiectarea schemei externe, pe baza analizei anterioare, în modul de lucru descris la proiectarea schemei conceptuale a bazei de date relaţionale, ţinând cont de faptul că aceeaşi schemă poate apare drept o schemă conceptuală, dacă sistemul de referinţă este întregul domeniu economic analizat, sau drept o schemă externă, dacă sistemul de referinţă este o parte din domeniul economic analizat; 4. Testarea schemei externe şi modificarea acesteia, dacă este cazul; 5. Aducerea schemei externe în forma operaţională. Acest lucru se realizează în mod diferit faţă de schema conceptuală a bazelor de date, pentru care operaţionalizarea presupune descrierea sa cu ajutorul limbajului de descriere a datelor utilizat de SGBDR, compilarea acestei descrieri şi încărcarea acestei descrieri compilate în cadrul bazei de date. Pentru ca o schemă externă să devină operaţională, să poată fi aplicată, utilizatorul căruia îi este destinată trebuie să primească drepturi de acces asupra tabelelor de date care compun schema externă. 3.6. Sisteme de gestiune a bazelor de date relaţionale Un sistem de gestiune a bazelor de date relaţionale poate fi definit ca reprezentând un SGBD care utilizează drept concepţie de organizare a datelor modelul relaţional. Diversitatea modelelor relaţionale “operaţionale” au determinat, în mod natural existenţa unei mari diversităţi de SGBDR, care se apropie mai mult sau mai puţin de modelul relaţional “teoretic”. Cerinţele teoretice pe care trebuie să le satisfacă un SGBD relaţional au fost specificate de Codd, printr-o serie de 13 reguli, numite regulile lui Codd. Deoarece aceste reguli au fost mult disputate şi deoarece nici unul dintre SGBD-urile relaţionale (SGBDR) disponibile astăzi nu respectă întrutotul cerinţele exprimate de Codd, în

×