Baze de date
Arhitectura unui sistem de baze de date - notiuni despre SGBD1. INTRODUCEREDefinitii Datele reprezinta informatii fixate pe un anumit suport fizic in vederea utilizarii si prelucrarii intr-un anumit scop. Baza de date (data base) este o colectie de date organizate care serveste unui anumit scop (nu contine date care nu sunt relevante). Faptul ca sunt organizate inseamna ca sunt stocate, reprezentate si accesate intr-o maniera consistenta. Dezvoltarea bazelor de date s-a bazat pe 2 cerinte: persistenta datelor (datele trebuie sa fie valide pentru mai multe rulari), simplitatea stocarii si manipularii datelor. Arhitectura unui sistem de baze de date Sistemul bazelor de date are 4 nivele: Nivelul conceptual Este nivelul fundamental ce descrie intr-un mod natural si fara ambiguitati sistemul ce urmeaza a fi modelat. La acest nivel se realizeaza schema conceptuala care reprezinta design-ul general al sistemului. Nivelul extern La acest nivel se realizeaza schema externa care este astfel realizata incat grupuri diferite de utilizatori sa acceseze numai anumite subscheme ale schemei conceptuale globale (din motive de relevanta si securitate). Aceeasi informatie poate fi reprezentata in mod diferit (grafice, tabele) din motive de experienta sau interes ale utilizatorilor. Nivelul logic Pentru o anumita aplicatie data schema conceptuala se converteste intr-o structura de nivel inferior (schema logica) unde se alege un model logic adecvat de organizare a datelor (model relational, ierarhic, retea etc.). Schema logica este reprezentata cu ajutorul unor structuri abstracte specifice modelului respectiv (ex.: tabele). Nivelul intern Dupa ce a fost realizata schema logica aceasta se concretizeaza intr-o schema interna care este specifica sistemului de gestiune a bazelor de date ales (Oracle, Acces, DB2 etc.). Schema interna include toate detaliile despre stocarea fizica si structurile de acces in sistemul respectiv (ex.: indecsi, clustere etc.). Chiar si in cadrul aceluiasi sistem de gestiune a bazelor de date utilizatori diferiti pot construi scheme interne diferite. Sisteme de gestiune a bazelor de date (SGBD) Notiuni despre SGBD Un SGBD (Sistem de Gestiune a Bazelor de Date) sau DBMS (DataBase Management System) este un sistem software care gestioneaza toate procesele dintr-o baza de date si care permite utilizatorului sa interactioneze cu aceasta. Principalele functiuni ale unui SGBD sunt: stocarea datelor, definirea structurilor de date, manipularea datelor, interogarea (extragerea si prelucrarea) datelor, asigurarea securitatii datelor, asigurarea integritatii datelor, accesul concurent la date cu pastrarea consistentei acestora, asigurarea unui mecanism de recuperare a datelor, asigurarea unui mecanism de indexare care sa permita accesul rapid la date. Modele de date (moduri de organizare a datelor) Modelul de date reprezinta un tipar dupa care este organizata din punct de vedere logic baza de date. Dupa modelul folosit exista mai multe tipuri de SGBD. a) SGBD ierarhic Modelul ierarhic stocheaza datele in structuri de tip arbore. Se considera ca intre date exista o relatie de tip parinte-copil. Nivelul superior al arborelui (radacina) poate avea orice numar de descendenti care si ei, la randul lor, au alti descendenti etc. In prezent, modelul ierarhic este depasit si nu se mai foloseste aproape deloc. b) SGBD retea Datele sunt stocate sub forma de inregistrari cu legaturi multiple si complexe intre ele. Este o extindere a celui ierarhic. Aici un copil poate avea mai multi parinti sau chiar niciunul. Caracteristicile principale ale SGBD retea sunt: reprezentare date complexe extrem de putin flexibil design extrem de complicat In prezent este putin folosit. c) SGBD relational Reprezinta cea mai simpla structura pe care o poate avea o baza de date. Datele sunt organizate in tabele formate din inregistrari si campuri. In acest caz bazele de date relationale sunt foarte flexibile si usor de manuit. Cele mai populare baze de date relationale: Oracle, Acces, Informix si Sybase. Altele : SQL server si DB2.
d) SGBD orientat pe obiect Este tipul cel mai nou de SGBD fiind introdus conceptul de obiect. Integreaza principiile programarii orientate pe obiect (C++, Actor etc.) cu cele ale bazelor de date. Gestioneaza obiecte complexe (date neconventionale) (texte, grafice, harti imagini sunete); obiecte dinamice (programe, simulari). Tehnologia este la inceput. Comunicarea cu baza de date In ORACLE comunicarea cu baze de date se face prin intermediul limbajului SQL (Structured Query Language) care este in prezent cel mai raspandit limbaj de interogare a bazelor de date relationale. Prezinta componente (sublimbaje) de definire date, control date si manipulare date. a) Definirea structurilor de date Limbajul DDL (Data Definition Language) (Limbaj de definire a datelor) Permite definirea (crearea, modificarea si distrugerea) schemei bazei de date (structurilor de date folosite si legaturilor dintre ele). b) Manipularea datelor Limbajul DML (Data Manipulation Language) (Limbaj de manipulare a datelor) Permite inserarea de noi date, actualizarea sau stergerea celor existente. c) Interogarea datelor Limbajul DQL (Data Query Language) (Limbaj de interogare sau acces) Permite extragerea, vizualizarea si prelucrarea (filtrarea, sortarea) datelor existente. d) Controlul datelor Limbajul DCL (Data Control Language) (Limbaj de control al datelor) Asigura securitatea, confidentialitatea, salvarea, integritatea si consistenta datelor. Este foarte util in cazul manipularii concurente. Accesul concurent (simultan) la date In cazul existentei mai multor utilizatori, un SGBD trebuie sa gestioneze accesul curent al acestora la date, mentinand in acelasi timp integritatea bazei de date. a) Cand doua sau mai multe persoane vor sa vizualizeze aceleasi date fara a le modifica insa, totul este in ordine si nu trebuie luate masuri suplimentare. b) Cand cel putin o persoana doreste sa faca modificari asupra unor date care, in acelasi timp, sunt vizualizate de alte persoane, atunci SGBD trebuie sa realizeze si sa stocheze mai multe copii ale datelor si sa transfere toate modificarile copiilor intr-o singura versiune atunci cand intreaga operatiune este terminata. c) In cazul cand mai multe persoane incearca sa modifice aceleasi date in acelasi timp SGBD utilizeaza metoda blocarii (locking). Utilizatorul care a efectuat primul modificarea datelor le blocheaza, ceilalti utilizatori neputandu-le modifica pana ce operatia efectuata de acesta nu este incheiata. In Oracle blocarea se poate face la nivel de tabel sau la nivel de rand. Cu cat unitatea de date este mai mica cu atat concurenta este mai eficienta si utilizatorii asteapta mai putin. Oracle blocheaza in mod implicit orice rand asupra caruia se executa o operatie de modificare. Tranzactii Intregul mecanism care gestioneaza concurenta intr-o baza de date are la baza conceptul de tranzactie. Tranzactia este cea mai mica unitate de lucru. Nu poate exista o operatie mai mica decat o tranzactie. Toate tranzactiile trebuie sa fie atomice adica fiecare tranzactie, fie este complet executata, fie nu este executata deloc. Cand o tranzactie este incheiata se spune ca este permanentizata (commited); cand nu poate fi incheiata si trebuie anulata se spune ca este derulata inapoi (rolled back). Derularea inapoi poate fi facuta explicit, printr-o comanda a utilizatorului sau poate fi executata in mod automat, in cazul unei probleme in functionarea sistemului. In Oracle, o tranzactie poate cuprinde una sau mai multe operatii de interogare sau manipulare a datelor si doar cel mult o operatie de definire a datelor. Un SGBD dispune de un administrator de tranzactii (transaction manager). Baze de date distribuite Baza de date distribuita reprezinta o multime de date corelate logic, dar distribuite pe mai multe masini interconectate printr-o retea de comunicatie. Din punct de vedere al utilizatorului o baza de date distribuita reprezinta o singura baza de date. Acesta are acces la niste date fara sa cunoasca localizarea lor. Avantajele unei baze de date distribuite sunt: administrare distribuita, descentralizata a bazei de date, usurinta in administrare, eficienta in exploatare, localizarea mai rapida a defectiunilor. Tipuri de utilizatori ai bazei de date a) Administratorul BD (Data Base Administrator DBA) defineste BD, asigura buna functionare a BD. b) Programatorul (dezvoltatorul de aplicatii) creeaza programe pentru manipularea si interogarea datelor din BD, se ocupa de accesul concurent (integritatea si consistenta datelor), urmareste performanta, mentenanta si portabilitatea codului. c) Utilizatorul final interogheaza si manipuleaza datele fara sa tina cont de modul lor de organizare, de pastrarea integritatii si de accesul concurent. 1.4. Sisteme de Gestiune a Bazelor de Date Relationale (SGBDR) 1.4.1. Notiuni generale Un SGBDR este un SGBD care utilizeaza modelul relational ca si conceptie de organizare a datelor. In 1985 Codd a publicat un set de 13 reguli in raport cu care un SGBD poate fi considerat relational. In prezent niciun SGBD nu respecta intreg setul de reguli care are rolul de a stabili gradul in care unul sau altul dintre SGBD-uri este relational. 1.4.2. Regulile lui Codd Rg. 1: Regula reprezentarii logice a datelorIntr-o baza de date relationala toate datele sunt reprezentate la nivel logic intr-un singur mod, si anume sub forma de valori atomice in tabele. Valoarea stocata la intersectia dintre un rand si o coloana ale unui tabel trebuie sa fie atomica, adica sa nu se mai poata descompune din punct de vedere logic. De exemplu, codul numeric personal nu este o valoare atomica deoarece se poate descompune in sex, data nastere etc. La fel codul referitor la un automobil obtinut prin concatenarea mai multor coduri referitoare la marca, culoare, serie motor, an de fabricatie, fabricant. Valoarea de atomicitate depinde uneori de cerintele referitoare la informatiile continute in datele stocate. In unele cazuri, data nasterii, adresa pot fi considerate atomice, in altele, nu. Regula este de baza. Cand este incalcata creaza probleme de integritate a datelor, demonstreaza o proiectare deficienta a BD, iar SGBD-ul isi pierde calitatea de relational. Rg. 2: Regula accesului la date Toate datele individuale din tabele trebuie sa fie accesibile prin furnizarea numelui tabelului, numelui coloanei si valorii cheii primare. Modelul relational presupune inexistenta randurilor identice, iar fiecare rand poate fi identificat prin valoarea cheii primare. Rg. 3: Regula reprezentarii valorilor necunoscute Un sistem relational trebuie sa permita declararea si manipularea sistematica a valorilor Null cu semnificatia unor valori necunoscute sau inaplicabile. Un SGBDR trebuie sa faca diferenta intre valoarea numerica 0 si Null sau intre sirul de caractere spatiu si valoarea Null. Valoarea Null trebuie sa reprezinte absenta informatiei respective si are un rol important in implementarea restrictiilor de integritate structurala (integritatea entitatii si integritatea referirii). Rg. 4: Regula dictionarului de date Descrierea bazei de date (dictionarul de date) trebuie sa fie reprezentata la nivel logic tot sub forma de tabele, astfel incat asupra acesteia sa se poata aplica aceleasi operatii ca si asupra datelor propriu-zise. Dictionarul de date trebuie sa fie organizat la nivel logic si accesat la fel ca orice tabel din baza de date. Consta din tabele si tabele virtuale (vederi) care pot fi interogate la fel ca oricare alte tabele sau vederi, folosind comanda SELECT. Rg. 5: Regula limbajului de acces Intr-un sistem relational trebuie sa existe cel putin un limbaj de accesare a datelor, care sa asigure urmatoarele operatii: definirea tabelelor de baza si a tabelelor virtuale (vederilor), manipularea si interogarea datelor (atat interactiv cat si prin program), definirea restrictiilor de integritate, autorizarea accesului la date, delimitarea tranzactiilor. Limbajul SQL permite: definirea tabelelor (comenzile CREATE TABLE, ALTER TABLE, DROP TABLE); definirea vederilor (comenzile CREATE VIEW, ALTER VIEW, DROP VIEW); manipularea datelor (comenzile INSERT, UPDATE, DELETE); interogarea datelor (comanda SELECT); definirea restrictiilor de integritate (clauza CONSTRAINT folosita la definirea tabelelor) autorizarea accesului la date (printr-un set de privilegii de sistem si la nivel de obiect); delimitarea tranzactiilor (operatiile COMMIT si ROLLBACK). Rg. 6: Regula de actualizare a tabelelor virtuale (vederilor) Un SGBD trebuie sa poata determina daca o vedere poate fi actualizata sau nu. Ex.: Fie tabelul salariu: salariu (cod_salariat, salariu_brut, total_zile, zile_lucrate) Pe baza acestui tabel se poate defini vederea salariu_r: salariu_r (cod_salariat, salariu_brut, salariu_realizat) unde salariu_realizat = salariu_brut * zile_lucrate / total_zile Daca se doreste actualizarea coloanei salariu_brut din vedere, acest lucru este posibil, datorita faptului ca actualizarea se propaga inapoi la coloana salariu_brut din tabelul de baza, producandu-se si actualizarea acesteia. Pe de alta parte, nu este posibila actualizarea coloanei salariu_realizat, datorita faptului ca schimbarea valorii acesteia s-ar putea produce prin schimbarea valorilor mai multor coloane din tabelul de baza (salariu_brut, zile_lucrate, total_zile), SGBD nestiind care dintre aceste coloane sa fie modificata. Un SGBD trebuie sa dispuna de un set de reguli care sa determine daca o coloana a unei vederi poate sau nu sa fie actualizata. Rg. 7: Regula manipularii datelorUn sistem relational trebuie sa ofere posibilitatea procesarii tabelelor (de baza sau virtuale) nu numai in operatiile de interogare a datelor cat si in cele de inserare, actualizare si stergere. Operatiile de manipulare a datelor (inserare, actualizare si stergere) trebuie sa se poata efectua asupra oricarei multimi de randuri dintr-un tabel, pornind de la intregul tabel si terminand cu un rand sau nici unul. Un SGBD relational manipuleaza continutul BD la nivel de multime de randuri. Limbajul SQL asigura aceasta facilitate prin instructiunile: INSERT cu subinterogare, UPDATE si DELETE. Rg. 8: Regula independentei fizice a datelorProgramele de aplicatie nu trebuie sa depinda de modul de stocare si accesare fizica a datelor. Un SGBDR trebuie sa separe complet aspectele de ordin fizic ale datelor (modul de stocare si modul de acces la date) de cele de ordin logic. De ex., daca un fisier care contine un tabel de date este mutat pe o alta unitate de disc sau ii este schimbat numele, aceasta actiune nu trebuie sa aiba vreun efect asupra aplicatiilor care folosesc acel tabel. Rg. 9: Regula independentei logice a datelor Programele de aplicatie nu trebuie sa fie afectate de nici o restructurare logica a tabelelor bazei de date care conserva datele. Orice modificare efectuata asupra unui tabel care conserva datele din acesta (de ex., daca un tabel trebuie divizat in 2 parti din motive de crestere a performantei) nu trebuie sa afecteze functionarea programelor de aplicatie. Aceasta regula este respectata prin posibilitatea definirii vederilor: daca un tabel este divizat in 2 parti, atunci se poate crea o vedere care alatura cele 2 tabele, astfel incat aceasta impartire nu va avea niciun efect asupra aplicatiei. Rg. 10: Regula independentei datelor din punctul de vedere al integritatii Regulile de integritate a bazei de date trebuie sa fie definite in limbajul utilizat de sistem pentru definirea datelor si nu in cadrul aplicatiilor individuale: in plus, aceste reguli de integritate trebuie stocate in dictionarul de date. Aceasta regula se refera la faptul ca restrictiile de integritate trebuie impuse la definirea tabelelor bazei de date si nu in cadrul aplicatiilor care folosesc aceste tabele. De ex., Oracle respecta aceasta regula la definirea tabelelor (in cadrul comenzii CREATE TABLE) putandu-se defini atat restrictiile de integritate structurala (NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY) cat si unele restrictii de comportament (CHECK). Informatiile despre aceste restrictii sunt stocate in dictionarul de date. Rg. 11: Regula independentei datelor din punctul de vedere al distribuirii Programele de aplicatie nu trebuie sa fie afectate de distribuirea pe mai multe calculatoare a bazei de date. BD trebuie sa functioneze corect indiferent daca se gaseste pe un singur calculator sau este distribuita in mai multe noduri ale unei retele. Aceasta regula este o extensie a regulii 8, privind independenta programelor de aplicatie fata de modul de stocare fizica a datelor. Un avantaj il prezinta posibilitatea replicarii locale a tabelelor aflate in alte noduri ale retelei, evitandu-se astfel transmiterea in mod repetat a informatiilor prin retea. Rg. 12: Regula privind prelucrarea datelor de catre un limbaj de nivel inferior Orice limbaj nerelational folosit pentru accesarea datelor trebuie sa respecte aceleasi conditii de integritate ca si limbajul relational de acces. Daca sistemul poseda un limbaj procedural prin care se acceseaza datele la nivel de rand si nu, potrivit sistemului relational, la nivelul multimilor de randuri, in acest limbaj nu se pot evita restrictiile de integritate pe care trebuie sa le respecte un limbaj relational de acces la date. Rg. 0: Regula de baza Un SGBD Relational trebuie sa fie capabil sa gestioneze BD exclusiv pe baza caracteristicilor sale relationale. Aceasta regula are rolul de a rezuma concluziile desprinse din celelalte reguli. In esenta, acesta inseamna ca sistemul trebuie sa indeplineasca toate functiile prin manipulari in care unitatea de procesare sa fie tabelul (multimi de randuri), asupra caruia sa se efectueze operatiile specifice modelului relational. Regulile de mai sus sunt grupate in 5 categorii, si anume: I. Reguli de baza: Rg.0 si Rg.12; II. Reguli structurale: Rg.1 si Rg.6; III. Reguli privind integritatea datelor: Rg.3 si Rg.10; IV. Reguli privind manipularea datelor: Rg.2, Rg.4, Rg.5 si Rg.7; V. Reguli privind independenta datelor: Rg.8, Rg.9, si Rg.11; Obs.: Nici unul dintre SGBD-urile actuale nu satisface in totalitate toate cele 13 reguli ale lui Codd. De aceea, in practica, pentru a putea fi considerat relational, un SGBD trebuie sa indeplineasca un set minimal de cerinte. Un SGDB se numeste minimal relational daca satisface urmatoarele conditii: a) Toate datele din cadrul bazei de date sunt reprezentate prin valori in tabele. b) Nu exista pointeri observabili de catre utilizator intre tabele. c) Sistemul asigura operatorii relationali de proiectie, selectie si compunere naturala, fara limitari impuse de considerente interne. Un SGDB se numeste complet relational daca este minimal relational si satisface in plus urmatoarele conditii: d) Sistemul asigura toate operatiile de baza ale algebrei relationale, fara limitari impuse de considerente interne. e) Sistemul asigura restrictiile de integritate de baza ale modelului relational (integritatea entitatii si integritatea referentiala). Un SGDB definit prin regulile lui Codd este un SGDB relational ideal.
|