Baze de date
Curs bd si sgbdCURS BD si SGBD O notiune importanta in definitia bazei de date este cea de „relatie logica”. La analiza necesitatilor informationale ale unei organizatii se urmareste identificarea entitatilor, atributelor si relatiilor: O entitate este un obiect distinct (o persoana, concept, eveniment, loc sau lucru) din organizatie, care trebuie reprezentat in baza de date. Un atribut este o proprietate care descrie un aspect oarecare al obiectului pe care dorim sa-l inregistram. O relatie este o asociatie intre mai multe entitati. Baza de date contine entitatile, atributele si relatiile logice dintre acestea, altfel spus, baza de date contine date intre care exista relatii logice. Exemplu: Colectia de date: CONTURI → clasa de obiecte CONTURI.
Fiecare obiect tip CONT are o existenta proprie si este dotat cu aceleasi caracteristici, respectiv codul contului si denumirea contului. Contul cu codul 101 si denumirea Capital social constituie o realizare (o instantiere) a obiectului tip CONT pentru care caracteristicile Cod_cont si Denumire_cont iau valorile 101 si, respectiv, Capital social. O clasa de obiecte contine obiecte de acelasi tip (i.e. obiecte ce au aceleasi caracteristici sau atribute). Realizarile unei clase de obiecte formeaza o colectie de date. Colectiile de date au structuri uniforme, ele reprezinta valori ale caracteristicilor (atributelor) obiectelor tip. Alte exemple de colectii de date gestionate de o intreprindere : PERSONAL, PRODUSE, OPERATII_CONTABILE, LOCURI_DE_MUNCA . Intr-o baza de date sunt inregistrate datele despre obiectele reale sau abstracte, dar si asocierile (relatiile) care se pot stabili intre acestea. Spunem ca intre datele unei baze de date exista o interdependenta logica. Luarea in calcul a acestor interdependente contribuie la asigurarea integritatii functionale a bazei de date. Exemplu2: Facturi numai pentru acei Furnizori care exista. Nr. factura Cod furnizor Cod furnizor Nume furnizor Datele sunt descrise o singura data si utilizate, chiar simultan, de mai multi utilizatori, (acestia nu trebuie sa se mai preocupe de descrierea acestora si de modul cum sunt memorate fizic datele pe suporturile tehnice). Obiectivul principal al unei BD este de a separa descrierea datelor fata de programele de aplicatii si pentru aceasta este necesara o abstractizare a datelor memorate in BD. Astfel s-a ajuns ca o BD sa fie reprezentata si perceputa pe 3 niveluri: extern, conceptual si intern. La fiecare nivel se defineste o schema (model) a BD:
Utilizator
n Grup
de utilizatori n Utilizator
1 Grup
de utilizatori 1
Administrator
BD Modelul fizic Schema externa face referire la datele necesare unui utilizator sau unui grup de utilizatori. Ea este o sub-schema (o imagine) a schemei conceptuale. Schemele externe constituie sursa pentru intocmirea schemei conceptuale. La nivel conceptual, analizand schemele externe si eliminand redundantele rezulta o noua viziune la nivelul intreprinderii, care se numeste schema conceptuala. schema conceptuala este completa daca poate furniza date pentru toate schemele externe, adica datele de care au nevoie utilizatorii (unele obtinute prin calcul si/sau agregare). Schema interna implementeaza schema conceptuala folosind un SGBD. Pentru o baza de date se pot defini mai multe scheme externe, o singura schema conceptuala si respectiv o singura schema interna. Faptul ca utilizatorul vede baza de date folosind o schema externa faciliteaza determinarea drepturilor de acces la baza de date. Sistemul de gestiune a bazelor de date trebuie sa poata interpreta instructiunile exprimate in termen de schema externa si respectiv schema conceptuala iar dupa aceea in termen de operatii de intrare/iesire la nivel fizic si sa asigure trecerea de la un nivel la altul. Plecand de la obiectivul principal putem spune ca principalele obiective ale SGBD-ului sunt: independenta fizica a datelor; independenta logica a datelor; manipularea datelor prin limbaje declarative (neprocedurale); administrarea intr-o maniera cat mai simpla a datelor; eficacitatea accesului la date; partajarea datelor; coerenta datelor; redudanta controlata; securitatea datelor. Independenta fizica a datelor Schema interna a BD descrie modul in care datele sunt organizate pe suportul fizic (fisiere, inregistrari) precum si metodele de acces, criteriile de ordonare si regasire ale acestora, astfel incat sa se asigure un grad de performanta si suplete cat mai ridicat. Independenta fizica a datelor consta in posibilitatea de a schimba organizarea interna a datelor si structurile de inregistrare, fara a modifica programele care le folosesc (programe utilizator). Raportandu-ne la structura pe cele niveluri, aceasta inseamna independenta schemei interne de cea conceptuala, care descrie aceleasi date, dar pe niveluri diferite. Spre exemplu, pe baza unor criterii de performanta si flexibilitate a accesului la date, se pot adauga indecsi noi, se pot reorganiza anumite fisiere, fara a afecta schema conceptuala.
Independenta logica a datelor Schema conceptuala a BD se obtine printr-o sinteza si integrare a schemelor externe, care reprezinta interese informationale de grup sau individuale. In aceste conditii, este normal ca fiecare grup de utilizatori sa aiba posibilitatea sa-si modifice in timp cerintele infonnationale fara a afecta schema conceptuala a BD. Independenta logica a datelor consta in posibilitatea de a modifica schemele externe fara a modifica schema conceptuala. Principalele avantaje ale independentei logice a datelor sunt urnatoarele: permite oricarui grup de utilizatori sa vizualizeze datele asa cum isi doresc; permite evolutia in timp a schemelor externe ale fiecarui grup de utilizatori fara a afecta schema conceptuala; permite evolutia unei anumite scheme externe fara a afecta celelalte scheme externe. Manipularea datelor prin limbaje declarative (neprocedurale) In general, exista doua categorii de utilizatori care manipuleaza datele dintr-o BD: utilizatori interactivi care, de regula, nu sunt informaticieni si programatorii. Prima categorie, are nevoie de limbaje de interogare foarte simple, apropiate de limbajul natural, care sa le permita intr-o maniera foarte simpla sa-si obtina informatiile de care au nevoie. Un exemplu de astfel de limbaj, care este si standardizat, este SQL (Structured Query Language). Cea de-a doua categorie de utilizatori (programatorii de aplicatii) folosesc de regula limbaje procedurale cum sunt cele traditionale (generatia a treia: C, COBOL, PL1, etc.), limbaje orientate obiect (C++, Java) sau limbaje din generatia a 4-a (4LG) orientate pe descrierea specificatiilor la nivel utilizator final. Administrarea cat mai simpla a datelor Un SGBD trebuie sa furnizeze instrumente adecvate pentru descrierea datelor, atat din pumct de vedere al schemei externe cat si al schemei interne. Operatiile de descriere si de modificare a descrierii datelor sunt cunoscute sub numele de administrarea datelor. Pentru a permite un control eficient asupra datelor si a rezolva diferite conflicte care pot aparea cu ocazia definirii acestora, aceasta operatie cade in sarcina unui grup restrans de persoane numite administratori de date. Administrarea centralizata a datelor, nu conduce totdeauna la realizarea unor BD performante, capabile sa multumeasca categorii de utilizatori diferiti. Pentru a inlatura acest impediment, SGBD-urile actuale ofera instrumente adecvate care permit o descentralizare a descrierii datelor, asigurand in acelasi timp coerenta necesara intre diversele descrieri partiale. Eficacitatea accesului la date Fiecare utilizator doreste ca interogarile sale asupra BD sa furnizeze informatiile necesare acestuia intr-un timp cat mai scurt. Exista doi parametri care masoara performantele accesului la date: numarul de tranzactii pe secunda si timpul de raspuns. Dimensiunile celor parametri sunt dependente si de modul in care sistemul de operare al calculatorului, sub care functioneaza SGBD-ul, aloca si partajeaza resursele fizice (unitatea centrala, memoria interna, memoria externa). Un element foarte important care influenteaza acesti parametri il constituie operatiile de intrare/iesire pe disc. Pentru a optimiza aceste operatii, majoritatea SGBD-urilor actuale folosesc memorii cache, unde se depoziteaza datele cele mai frecvent utilizate pe parcursul executiei unei aplicatii. Partajarea datelor se realizeaza prin controlul accesului concurent la BD. Mai multi utilizatori vor sa acceseze simultan aceeasi inregistrare din BD. Fizic, acest lucru nu este posibil deoarece mecanismul de acces la disc si la memoria interna este unic. Prin urmare cererile de acces simultane, sunt inregistrate intr-un fir de asteptare si sunt deservite intr-o anumita ordine. Coerenta datelor consta in respectarea unor dependete care pot exista intre datele din BD. De exemplu data angajarii unui salariat trebuie sa fie mai mare decat data nasterii. Regulile explicite sau implicite pe care datele trebuie sa le respecte de-a lungul evolutiei lor in BD, se numesc restrictii de integritate. SGBD-ul trebuie sa fie capabil sa pastreze coerenta datelor prin verificarea acestor restrictii de integritate. Redundanta controlata consta in posibilitatea de a inregistra unele date, eliminand astfel situatiile de inregistrare multiple. Cu cat redundenta este mai mica cu atat performantele BD cresc. Securitatea datelor se refera la doua aspecte: accesul controlat al utilizatorilor la BD (confidentialitate); refacerea BD in urma unor avarii. Confidentialitatea datelor este asigurata prin proceduri de: identificare a utilizatorilor prin nume sau cod; autentificarea prin parole; autorizare a accesului diferentiat prin drepturi de creare, consultare, modificare sau stergere pentru anumite segmente de date. Baza de date trebuie sa fie protejata impotriva unor distrugeri logice (anomalie de actualizare) sau fizice. Pentru acestea SGBD-ul trebuie sa ofere instrumente pentru: crearea unor puncte de reluare; altfel spus, salvarea din timp in timp a unor copii curente ale BD; gestiuunea unui jurnal de tranzactii; lista operatiilor realizate asupra BD dupa ultimul punct de repriza. Daca apare o anomalie, care ar putea distruge BD, pe baza copiei de la ultima repriza si a jurnalului de tranzactii, se poate reface baza de date in forma initiala. Protectia impotriva unei distrugeri fizice se face prin realizarea unor copii a BD. FUNCTIILE UNUI SGBDPrincipalele functiuni ale unui SGBD sunt: descrierea datelor; actualizarea si interogarea BD; conversia datelor dintr-un format in altul; asigurarea controlului integritatii, concurentei si securitatii datelor. Versiunile noi de SGBD-uri sunt dotate cu functii avansate pentru gestiunea procedurilor si a evenimentelor. Arhitectura functionala a un SGBD am prezentat-o in cursul anterior Descrierea datelor SGBD-ul trebuie sa fie capabil sa defineasca datele (schemele: externa, conceptuala, interna si legaturile corespondente) prin intermediul unui limbaj specializat DDL (Description Data Language), intr-o forma unificata numita schema sursa si apoi sa compileze aceasta schema intr-o forma interna numita schema obiect. Intr-un SGBD care suporta cele niveluri de descriere a datelor (extern, conceptual intern) exista administratori de date: administratorul bazei de date, care are rolul de a defini schema interna si regulile de trecere de la schema conceptuala la cea interna; administratorul intreprinderii, care defineste schema conceptuala; adrninistratorul aplicatiei, care defineste schema externa si regulile de corespondenta cu schema conceptuala.
Cele 3 scheme si procedurile de trecere dintr-una in alta sunt inregistrate in dictionarul de date (Data Dictionary), care poate fi divizat in doua: dictionarul intreprinderii, care va contine schema conceptuala cu procedurile aferente acesteia si dictionarul bazei de date, care contine schemele interna si externa, cu procedurile de trecere aferente. In aceste dictionare, informatiile sunt memorate in format sursa si obiect (compilat). Un dictionar de date organizat sub forma de baze de date se numeste metabaza. Un SGBD furnizeaza comenzi pentru a defini schemele interna, conceptuala si externa. Interogarea bazei de date Obisnuim sa includem in functia de interogare atat cautarea si extragerea datelor cat si actualizarea bazei de date (adaugare, modificare, stergere). In SGBD-urile din prima generatie, interogarea BD se realiza prin limbaje procedurale, care permiteau localizarea datelor prin cautari succesive. SGBD-urile actuale implementeaza aceasta functie de interogare a BD prin intermediul unor limbaje declarative, care permit cautarea datelor dupa continut, fara a preciza procedurile de acces. Aceste limbaje trebuie sa fie complete, in sensul de a permite definirea oricarei cereri de interogare a BD, formulata de utilizator. Cel mai utilizat limbaj de interogare a BD este in momentul de fata limbajul SQL. O cerere de interogare se deruleaza in 4 etape: formulare - folosind limbajul de manipulare a datelor (DML: Data Manipulation Language, care este un subset al limbajului SQL); compilare; optimizare; executie. SGBD-urile trebuie sa posede un compilator (analizator) al cererilor de interogare, care sa permita analiza sintactica si evaluarea acestora. Pentru a valida cererile de interogare, compilatorul utilizeaza dictionarul de date si le descompune in operatori relationati, pe care-i structureaza sub forma unui arbore, in care nodurile reprezinta operatorii iar elementele de pe ultimul nivel reprezinta relatiile. O cerere de interogare compilata este transmisa in etapa urmatoare de optimizare, care cauta strategia cea mai rapida pentru executia acesteia. In urma optimizarii, cererile de interogare sunt transformate in tranzactii. O tranzactie este formata din una sau mai multe cereri de interogare, care se vor executa, din punct de vedere logic impreuna (ca entitate functionala). Executia unei tranzactii implica doua operatii principale: gestiunea tranzactiilor concurente; executia propriu-zisa. Conversia (tranformarea) datelor (Data Maping) Consta in posibilitatile pe care SGBD-ul le ofera pentru trecerea datelor intre cele niveluri: extern, conceptual si intern. Pentru aceasta SGBD-ul trebuie sa cunoasca corespondentele existente intre niveluri. Controlul integritatii datelor SGBD-ul trebuie sa asigure coerenta datelor. Toate regulile implicite sau explicite care trebuie sa asigure integritatea datelor sunt cunoscute sub numele de restrictii de integritate. Exemple: integritatea cheii primare, potrivit careia, valorile cheii primare nu trebuie sa fie nule; integritatea referirii, potrivit careia valorile cheii externe trebuie sa refere obligatoriu valorile cheii primare corespondente; integritatea de domeniu, prin care valorile unui atribut trebuie sa apartina domeniului definit de utilizator; etc. Gestiunea tranzactiilor Este important ca un SGBD sa asigure gestiunea tranzactiilor O tranzactie este o functie care face ca baza de date sa treaca dintr-o stare BD1 intr-o stare BD2. Totul este ca aceasta trecere sa lase baza de date intr-o stare coerenta. Se opereaza cu conceptele de: atomicitatea tranzactiilor (Transaction Atomicity) - o tranzactie este total executata sau nu este executata deloc; corectia tranzactiilor (Transaction Correctness) semnifica respectarea coerentei bazei de date dupa executarea tranzactiilor; izolarea tranzactiilor - modificarile produse de fiecare tranzactie sunt vizibile la sfarsitului tranzactiei. In fapt atomicitatea, corectia si izolarea sunt proprietati ale tranzactiilor si sunt asumate prin sigla ACID unde D semnifica faptul ca trebuie conservata durabil (Durability) actualizarea tranzactiilor. Securitatea datelor Un SGBD trebuie sa garanteze securitatea datelor. Acest deziderat se realizeaza prin intermediul unui mecanism de control al drepturilor de acces la date si de restaurare a BD in cazul unor pene de curent sau erori. Foarte multe SGBD-uri noi poseda o serie de functii noi ar fi posibilitatea de a declansa anumite procedeuri atunci cand sunt indeplinite anumite conditii asupra datelor din BD; introducerea unor reguli de inferente, care pennit deducerea unor date noi pe baza celor existente posibilitatea de a gestiona obiecte complexe (harti, grafice, filme), ceea ce a condus la baze de date multimedia.
|