Sisteme de gestiune a bazelor de date relationale
1.3.1. Definitie. Caracteristici.
Īntr-o prima īncercare de definire, se poate considera un sistem de gestiune a bazelor de date relationale (SGBDR) ca reprezentand un SGBD care utilizeaza modelul relational drept conceptie de organizare a datelor. Altfel spus, SGBDR reprezinta un sistem care suporta modelul relational.
Definitia de mai sus este mult prea generala, pentru a putea fi operationala, deoarece modul de implementare a modelului relational difera, de regula atat īntre diferitele SGBDR, cat si īn raport de modelul "teoretic", cel definit īn cadrul teoriei relationale.
Diversitatea modelelor relationale "operationale" au determinat, īn mod natural existenta unei mari diversitati de SGBDR, pentru a caror prezentare a fost necesara nuantarea terminologiei. Au aparut o serie de sintagme, precum: sisteme cu interfata relationala, sisteme pseudorelationale, sisteme complet relationale.
Organizarea datelor īn fisiere |
SGBDR |
Teoria relationala |
Fisier |
Tabela |
Relatie |
Record (īnregistrare) |
Linie |
Tuplu |
Camp |
Coloana |
Atribut |
Figura 2.2.2. Conceptele specifice organizarii datelor īn fisiere, SGBDR si teoriei relationale īntre care se pot stabili analogii
Īn general, conceptele utilizate la prezentarea SGBDR si a modelelor relationale operationale difera de cele din cadrul teoriei relationale. Figura 2.2.2 prezinta, comparativ conceptele organizarii datelor īn fisiere, conceptele SGBDR si ale teoriei relationale.
Definirea unui SGBDR impune o detaliere a caracteristicilor pe care trebuie sa le prezinte un SGBD pentru a putea fi considerat relational. Īn acest sens, CODD E.a6s a formulat 13 reguli care exprima cerintele pe care trebuie sa le satisfaca un SGBDR.
R1: Regula privind gestionarea datelor la nivel de relatie.
Sistemul trebuie sa gestioneze baza de date numai prin mecanisme relationale. Acesta īnseamna ca sistemul trebuie sa-si īndeplineasca toate functiile prin manipulari īn care unitatea de informatie sa fie multimea (relatia), adica sa utilizeze limbaje, precum SQL care sa opereze la un moment dat pe o īntreaga relatie. Unele sisteme utilizeaza mecanisme relationale numai pentru o parte din functii, īn special pentru interogare. Aceste sisteme se numesc SGBD cu interfata relationala si nu SGBDR.
R2: Regula privind reprezentarea logica a datelor.
Toate datele din baza de date relationala trebuie sa fie reprezentate explicit la nivel logic īntr-un singur mod, si anume ca valori īn tabele de date. Acesta īnseamna ca toate datele trebuie sa fie memorate si prelucrate īn acelasi mod. Informatiile privind numele de tabele, coloane, domenii, definitiile tabelelor virtuale, restrictiile de integritate trebuie sa fie memorate tot īn tabele de date (catalog).
R3: Regula privind garantarea accesului la date.
Orice data din baza de date relationala trebuie sa poata fi accesata prin specificarea numelui de tabela, valorii cheii primare si a numelui de coloana. Aceasta regula exprima cerinta ca limbajul de interogare al SGBDR sa permita accesul la fiecare valoare atomica din baza de date.
R4: Regula privind valorile null.
Sistemele trebuie sa permita declararea si manipularea valorilor null, ce au semnificatia unor date lipsa sau inaplicabile.
R5: Regula privind metadatele.
Descrierea bazei de date trebuie sa se prezinte la nivel logic īn acelasi mod cu descrierea datelor propriu zise, astfel īncaāt utilizatorii autorizati sa poata aplica asupra descrierii bazei de date aceleasi operatii ca si asupra datelor obisnuite.
R6 Regula privind facilitatile limbajelor utilizate.
intr-un sistem relational trebuie sa existe cel putin un limbaj de nivel īnalt ale carui instructiuni sa poata exprima oricare din urmatoarele operatii: definirea relatiilor de baza si a celor virtuale, manipularea datelor, definirea restrictiilor de integritate, autorizarea accesului, precizarea limitelor tranzactiilor.
R7: Regula privind actualizarea tabelelor virtuale.
Toate tabelele virtuale care teoretic sunt posibil de actualizat trebuie sa poata fi efectiv actualizabile. Nu toate atributele din cadrul unei tabele virtuale, deci nu toate tabelele virtuale sunt teoretic actualizabile.
R8: Regula privind inserarile, modificarile si stergerile īn baza de date.
Sistemul trebuie sa ofere posibilitatea manipularii unei tabele (de baza sau virtuala) nu numai īn cadrul operatiilor de regasire, ci si īn actiunile de inserare, modificare si stergere a datelor. Aceasta regula exprima cerinta ca īn operatiile prin care se schimba continutul bazei de date sa se lucreze la un moment dat pe o īntreaga relatie.
R9: Regula privind independenta fizica a datelor.
Programele de aplicatie nu trebuie sa fie afectate de schimbarile efectuate īn modul de reprezentare a datelor sau īn metodele de acces. O schimbare a structurii fizice a datelor nu trebuie sa blocheze functionarea programelor de aplicatie.
R10: Regula privind independenta logica a datelor.
Programele de aplicatie nu trebuie sa fie afectate de schimbarile efectuate asupra relatiilor bazei de date, schimbari care conserva datele si teoretic, garanteaza valabilitatea programelor de aplicatie existente.
R11: Regula privind restrictiile de integritate.
Restrictiile de integritate trebuie sa poata fi definite īn limbajul utilizat de sistem pentru definirea datelor si sa fie memorate īn catalogul bazei de date si nu īn cadrul programelor de aplicatie.
R12: Regula privind distribuirea geografica a datelor.
Limbajul de manipulare a datelor utilizat de sistem trebuie sa permita ca, īn situatia īn care datele sunt distribuite, programele de aplicatie sa fie logic aceleasi cu cele utilizate īn cazul īn care datele sunt fizic centralizate.
Utilizatorul trebuie sa perceapa datele ca fiind centralizate. Sarcina de localizare a datelor, atunci cānd acestea sunt distribuite geografic precum si sarcina recompunerii datelor trebuie sa revina sistemului si nu utilizatorului.
R13: Regula versiunii procedurale a unui SGBD.
Orice componenta procedurala a unui SGBD trebuie sa respecte aceleasi restrictii de integritate ca si componenta relationala. De exemplu, daca in partea de manipulare a datelor a limbajului relational valoarea dintr-o coloana este de tipul not null, orice alta metoda procedurala de accesare a acestei coloane nu trebuie sa permita introducerea valorilor null.
Nici unul dintre SGBD disponibile astazi nu respecta toate cerintele exprimate de Codd, īn cadrul celor 13 reguli. De aceea, s-au formulat criterii minimale pe care trebuie sa le satisfaca un sistem de gestiune a bazelor de date pentru a putea fi considerat relational.
Un SGBD este minimal relational daca satisface urmatoarele conditii:
Toate datele din cadrul bazei de date sunt reprezentate prin valori īn tabele;
Nu exista pointeri observabili de catre utilizatori īntre tabele;
Sistemul suporta operatorii relationali de proiectie, selectie si join natural, fara limitari impuse din considerente interne (cum ar fi de exemplu, necesitatea indexarii atributelor). Unitatea de informatie cu care se lucreaza īn cadrul acestor operatii trebuie sa fie relatia.
Un SGBD este complet relational daca este minimal relational si satisface īn plus urmatoarele conditii:
Sistemul suporta toate operatiile de baza ale algebrei relationale, fara limitari impuse din considerente interne;
Sistemul suporta doua dintre restrictiile de integritate de baza ale modelului relational si anume unicitatea cheii unei relatii si restrictia referentiala.
Un SGBDR īndeplineste functiile unui SGBD, cu anumite particularitati care decurg din conceptia de organizare a datelor, respectiv din modelul relational. Astfel, ca si sistemele nerelationale, SGBDR īndeplinesc functia de descriere a datelor, dar īntr-un mod diferit. Modelul relational, spre deosebire de cel ierarhic sau retea asigura o reprezentare uniforma a entitatilor si a legaturilor dintre entitati, prin tabele de date. Aceasta caracteristica a modelului relational influenteaza modul īn care este realizata functia de descriere a datelor, care este mai simpla, mai flexibila, cu mai putine constructii sintactice ale limbajului de descriere a datelor decat īn cazul SGBD-urilor ierarhice si retea. Sistemele relationale, ca orice SGBD īndeplinesc functia de manipulare a datelor. Modelul relational ofera ca set de operatori calculul relational, pe langa algebra relationala. Existenta acestui set de operatori īn cadrul modelului relational face posibila utilizarea unor limbaje relationale neprocedurale de manipulare a datelor, caracteristica proprie SGBDR, care nu este prezenta la celelalte SGBD.
Dintre instrumentele si mecanismele de lucru de care dispune un SGBDR se pot mentiona:
Un limbaj relational pentru descrierea datelor la nivel fizic, logic si conceptual;
Un limbaj relational pentru manipularea datelor (interogare si actualizare);
Mecanisme pentru controlul integritatii semantice a datelor;
Mecanisme pentru optimizarea cererilor de date;
Utilitare pentru prezentarea rezultatelor, de tipul generatoarelor de rapoarte, utilitare pentru generarea de aplicatii, pentru generarea de statistici despre starea bazei de date etc.
Īn continuare, vor fi prezentate o serie de caracteristici ale acestor instrumente si mecanisme de lucru ale SGBDR.
Limbaje relationale de definire si manipulare a datelor
Un SGBDR trebuie sa puna la dispozitia utilizatorilor un set de comenzi prin care acestia sa realizeze definirea si manipularea datelor din baza de date.
Ca si īn cazul SGBD-urilor ierarhice si retea, aceste comenzi pot fi grupate īn:
A1. Comenzi pentru definirea datelor, care formeaza limbajul de definire al datelor;
A2. Comenzi pentru manipularea datelor, care formeaza limbajul de manipulare a datelor.
Īn cazul SGBDR aceste categorii de comenzi pot fi interpretate drept componente ale unui singur limbaj relational, limbaj cu facilitati atat de descriere, cat si de manipulare a datelor. O asemenea abordare unificata a comenzilor īsi gaseste explicatia īn faptul ca modelul relational, prin reprezentarea uniforma a entitatilor lumii reale si a legaturilor dintre acestea, a simplificat sarcina de definire a datelor. Se ajunge astfel la conceptul de limbaj relational de definire si manipulare a datelor, chiar daca sintaxa constructiilor destinate definirii datelor difera de cea a constructiilor pentru manipularea datelor. Se pot da numeroase exemple de astfel de limbaje: SQLPLUS (limbajul de descriere si manipulare a datelor utilizate de SGBD ORACLE), QUEL(limbajul utilizat de SGBD INGRES) etc. Unele SGBDR mentin distinctia dintre limbajele de definire si cele de manipulare a datelor. Din aceasta cauza, īn continuare, prezentarea caracteristicilor limbajelor relationale se va face separat, pentru limbajele de definire a datelor si pentru cele de manipulare a datelor.
Limbajele relationale, difera īntre ele īn principal prin facilitatile oferite utilizatorilor. Vor fi analizate, īn continuare aceste facilitati.
A1. Limbajele relationale de definire a datelor
Functia de descriere a datelor este deosebit de importanta la orice SGBD, deoarece trebuie sa faciliteze reprezentarea lumii reale īn interiorul sistemului. Spre deosebire de modelul ierarhic si de cel retea, modelul relational ofera posibilitatea reprezentarii uniforme a acestor elemente, prin intermediul tabelelor de date.
Descrierea datelor este memorata īn baza de date sub forma de relatii, ca si datele propriu-zise, aceste relatii constituind metabaza de date (metadatele). Relatiile ce contin descrierea datelor nu reclama un tratament special, fiind prelucrate prin intermediul acelorasi comenzi ale limbajului relational, ca si relatiile care contin datele propriu-zise.
Limbajele relationale de definire a datelor ofera urmatoarele facilitati utilizatorilor:
1. Facilitati de descriere a datelor la nivel conceptual. Īn vederea descrierii datelor la nivel conceptual, limbajele relationale contin o serie de comenzi, si anume:
- comenzi pentru crearea unei baze de date. Nu toate SGBDR suporta notiunea explicita de baza de date. Sisteme precum DB2 nu poseda notiunea explicita de baza de date, asa cum este cazul sistemelor INGRES si dBASE.
De exemplu, crearea unei baze de date BAZ se poate realiza prin comanda QUEL:
- comenzi pentru suprimarea unei baze de date
De exemplu, comanda QUEL pentru distrugerea bazei de date BAZ este:
DESTROYDB BAZ
- comenzi pentru crearea relatiilor de baza (relatii implementate fizic). Īn cadrul acestor comenzi se precizeaza numele relatiei, numele si tipul atributelor.
De exemplu, comanda SQL pentru crearea unei relatii ORASE, cu atributele: COD, DEN si NRLOC este:
CREATE TABLE ORASE
(COD NUMBER NOT NULL, DEN CHAR(20), NRLOC NUMBER);
- comenzi pentru suprimarea unei relatii de baza,
Comanda SQL pentru suprimarea relatiei definite anterior este:
DROP TABLE ORASE;
- comenzi pentru modificarea numelui unei relatii,
Comanda SQL pentru schimbarea numelui relatiei ORASE īn LOCALITAT este:
RENAME ORASE TO LOCALIT;
- comenzi pentru crearea de sinonime pentru relatiile din baza de date
Unele SGBDR utilizeaza sinonimele, ca alternative ale specificatorilor prea lungi, īn vederea simplificarii lucrului pe relatii.
De exemplu, comanda SQL pentru crearea unui sinonim pentru LOCALIT este:
CREATE SYNONYM LOC FOR LOCALIT;
- comenzi pentru suprimarea sinonimelor,
Comanda SQL pentru suprimarea sinonimului LOC este:
DROP SYNONYM LOC;
- comenzi pentru modificarea descrierii unei relatii, adica adaugarea de noi atribute, suprimarea unor atribute, modificarea numelui si/sau tipului unui atribut din cadrul relatiei.
De exemplu, comanda SQL pentru adaugarea unui atribut JUDET la tabela ORASE este:
ALTER TABLE ORASE ADD
(JUDET CHAR (2));
- comenzi pentru declararea restrictiilor de integritate. Restrictiile de integritate sunt memorate īn baza de date numai daca la momentul declararii lor, datele din cadrul bazei da date respecta aceste restrictii. Ulterior, restrictiile memorate vor fi verificate īn cadrul fiecarii operatii de actualizare.
Pentru declararea restrictiilor de integritate limbajul SQL dispune de comanda ASSERT, cu ajutorul careia putem defini urmatoarea restrictie de integritate temporala:
ASSERT ON UPDATE TO ORASE:
NEW NRLOC >=OLD NRLOC
unde NEW si OLD sunt cuvinte cheie utilizate īn formularea oricarei restrictii de integritate temporale.
2. Facilitati de descriere a datelor la nivel logic
Pentru descrierea datelor la nivel logic, limbajele relationale dispun de o serie de comenzi, precum:
- comenzi pentru definirea relatiilor virtuale (relatii care nu sunt fizic implementate īn baza de date)
Relatiile virtuale se construiesc dintr-una sau mai multe relatii de baza, prin combinarea unor atribute din relatiile de baza, excluderea unor atribute, redenumirea unor atribute, schimbarea domeniului asociat anumitor atribute, alte prelucrari asupra atributelor din relatiile de baza.
Un anumit utilizator va primi, de obicei drepturi de acces la relatiile virtuale si nu la relatiile de baza.
Se poate considera deci ca notiunea de relatie virtuala este esentiala la fundamentarea nivelului logic de organizare a datelor īn cadrul BDR. O schema externa a BDR este constituita din relatiile (virtuale si de baza) pentru care un utilizator detine drepturi de acces.
Considerānd drept relatie de baza ORA}E, putem defini cu ajutorul ei o relatie virtuala MUNICIPII prin intermediul comenzii SQL:
DEFINE VIEW MUNICIPII AS
SELECT*
FROM ORASE
WHERE NRLOC>
Relatia virtuala poseda aceeasi schema ca si relatia de baza, īnsa prin intermediul selectiei care este implicata īn definirea relatiei virtuale (clauza WHERE) se ascund utilizatorului o parte din tuplurile relatiei ORASE.
- comenzi pentru suprimarea relatiilor virtuale ;
De exemplu, suprimarea relatiei MUNICIPII se poate realiza cu ajutorul comenzii SQL:
DROP VIEW MUNICIPII;
- comenzi pentru acordarea drepturilor de acces la baza de date. Accesul unor persoane la baza de date se poate realiza doar īn conditiile detinerii unor drepturi de acces la date.
Proiectantul unei relatii (de baza sau virtuala) primeste īn mod automat toate privilegiile de operare asupra acestei relatii, putand realiza: cautari de date īn relatie, actualizari ale datelor din relatie, actualizari ale schemei relatiei, atasarea unor restrictii de integritate, suprimarea relatiei.
La randul sau, proiectantul poate acorda sau nu privilegii asupra acestor relatii si altor utilizatori, dupa cum mecanismul de autorizare a accesului utilizat de catre SGBDR este descentralizat sau centralizat.
Comanda SQL:
GRANT CONNECT TO RIZA IDENTIFIED BZ BDR
confera utilizatorului cu numele RIZA si parola BDR dreptul de conectare la baza de date.
- comenzi pentru retragerea drepturilor de acces la baza de date. Comanda SQL prin care se retrage utilizatorului RIZA dreptul de a actualiza tabela ORA}E este:
REVOKE UPDATE ON ORASE FROM RIZA;
3. Facilitati de descriere a datelor la nivel fizic
Pentru definirea unor caracteristici legate de organizarea la nivel fizic a datelor din baza de date, limbajele relationale dispun de o serie de comenzi, si anume:
- comenzi pentru definirea de indecsi pe atributele relatiilor. Pentru majoritatea SGBDR, indexul constituie principala cale de acces la date. De regula, accesul la tuplurile unei relatii se face prin doua metode: acces secvential si acces pe baza de cheie.
Accesul secvential presupune parcurgerea relatiei, respectiv a tuplurilor īn ordinea de īncarcare. Accesul secvential se poate utiliza pentru relatii mici (cu putine tupluri) sau relatii cu rezultate intermediare.
Accesul pe baza de chei poate avea mai multe forme. De exemplu, īn cazul sistemului DB2, principala cale de acces la date o reprezinta indecsii sortati, care permit realizarea urmatoarelor tipuri de acces pe baza de cheie:
Accesul direct la unul sau mai multe tupluri, conform valorii de cheie;
Accesul secvential sortat la un subansamblu de tupluri din cadrul unei relatii, de la o valoare a cheii pana la o alta valoare a cheii;
Accesul secvential sortat pe o īntreaga relatie.
Se poate considera urmatorul exemplu de comanda SQL pentru crearea unui index pentru tabela ORASE:
CREATE INDEX INCOD ON ORASE(COD);
Utilizarea indecsilor pentru accesul la date determina cresterea vitezei de acces, constituind o cale de acces mai rapida decat accesul secvential, dar īn acelasi timp īngreuneaza operatiile de actualizare a datelor (inserari, modificari, stergeri). Orice actualizare care afecteaza atributul dupa care s-a indexarea trebuie urmata de o actualizare a indexului.
- comenzi pentru suprimarea indecsilor;
Comanda SQL pentru stergerea indexului INCOD este:
DROP INDEX INCOD;
- comenzi pentru controlul alocarii spatiului fizic al bazei de date.
in limbajul SQLPLUS, putem considera ca exista: comenzi pentru crearea unei partitii a bazei de date, comenzi pentru modificarea partitiilor existente, comenzi pentru gestionarea modelului de alocare a spatiului pentru aceste partitii (crearea, modificarea si stergerea acestui model de alocare).
De exemplu, crearea unei partitii cu numele PART pentru baza de date se poate realiza prin intermediul comenzii SQLPLUS:
CREATE PARTITION PART
Adaugarea unor fisiere la partitia PART se poate realiza prin comanda:
ALTER PARTITION PART ADD FILE ORASE. DBS
|