|
SISTEME DE GESTIUNE A BAZELOR DE DATE RELATIONALE (SGBDR)
1. Definirea SGBDR
2. Caracterizarea SGBDR
3. Exemple de SGBDR
4. Avantajele si limitele sistemelor relationale
Teoria relationala, foarte bine pusa la punct intr-un domeniu de cercetare distinct, a dat o fundamentare solida realizarii de SGBD-uri performante. La sfarsitul anilor 80 si apoi in anii 90 au aparut, in special o data cu patrunderea in masa a microcalculatoarelor, numeroase SGBDR-uri. Aceasta a insemnat o evolutie de la SGBD-urile de generatia intai (arborescente si retea) spre cele de generatia a doua (relationale). Aceasta evolutie s-a materializat, in principal in: oferirea de limbaje de interogare neprocedurale, imbunatatirea integritatii si securitatii datelor, optimizarea si simplificarea acceselor.
1. Definirea SGBDR
SGBDR este un sistem software complet care implementeza modelul de date relational, precum si cel putin un limbaj relational.
FISIERE
TEORIA BD
TEORIA RELATIONALA
SGBDR
Fisier
Colectie de date
Relatie
Tabela
Inregistrare
Familie de caracteristici
Tuplu
Linie
Camp
Caracteristica
Atribut
Coloana
Valoare
Domeniu de valori
Domeniu
Domeniu
Regulile lui Codd
E.F. Codd (cercetator la IBM) a formulat 13 reguli care exprima cerintele maximale pentru ca un SGBD sa fie relational.
Regulile sunt utile pentru evoluarea performantelor unui SGBDR.
R0. Gestionarea datelor la nivel de relatie: limbajele utilizate trebuie sa opereze cu relatii (unitatea de informatie).
R1. Reprezentarea logica a datelor: toate informatiile din BD trebuie stocate si prelucrate ca tabele.
R2. Garantarea accesului la date: LMD trebuie sa permita accesul la fiecare valoare atomica din BD (tabela, coloana, cheie).
R3. Valoarea NULL: trebuie sa se permita declararea si prelucrarea valorii NULL ca date lipsa sau inaplicabile.
R4. Metadatele: informatiile despre descrierea BD se stocheaza in dictionar si trateaza ca tabele ,la fel ca datele propiu-zise.
R5. Limbajele utilizate: SGBD trebuie sa permita utilizarea mai multor limbaje, dintre care cel putin unul sa permita definirea tabelelor (de baza si virtuale), definirea restrictiilor de integritate, manipularea datelor, autorizarea accesului, tratarea tranzactiilor.
R6. Actualizarea tabelelor virtuale: trebuie sa se permita ca tabelele virtuale sa fie si efectiv actualizabile, nu numai teoretic actualizabile (exemplu atributul "valoare" dintr-o tabela virtuala nu poate fi actualizat).
R7. Actualizarile in baza de date: manipularea unei tabele trebuie sa se faca prin operatii de regasire dar si de actulizare.
R8. Independenta fizica a datelor: schimbarea stucturii fizice a datelor (modul de reprezentare (organizare) si modul de acces) nu afecteaza programele.
R Independenta logica a datelor: schimbarea structurii de date (logice) a tabelelor nu afecteaza programele.
R10. Restrictiile de integritate: acestea, trebuie sa fie definite prin LDD si stocate in dictionarul (catalogul) BD.
R11. Distribuirea geografica a datelor: LMD trebuie sa permita ca programele de aplicatie sa fie aceleasi atat pentru date distribuite cat si petru date centralizate (alocarea si localizarea datelor vor fi in sarcina SGBD-ului).
R12. Prelucrarea datelor la nivel de baza (scazut): daca SGBD poseda un limbaj de nivel scazut (prelucrarea datelor se face la nivel de inregistrare), acesta nu trebuie utilizat pentru a evita restrictiile de integritate.
Nota. Regulile lui Codd pot fi grupate, conform cerintelor exprimate in cinci categorii:
R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
1.Reguli de baza(fundamentale)
da
da
2.Reguli structurale
da
da
3.Reguli privind integritatea datelor
da
da
4.Reguli privind manipularea datelor
da
da
da
da
5.Reguli privind independenta datelor
da
da
da
Nota. Regulile lui Codd sunt "dure" si greu de acoperit in totalitate si complet de catre SGBDR-urile operationale. Pornind de la cele 13 reguli de mai sus, au fost formulate o serie de criterii (cerinte) pe care trebuie sa le indeplineasca un SGBD pentru a putea fi considerat relational intr-un anumit grad. S-a ajuns astfel, la mai multe grade de relational pentru SGBD: cu interfata relationala ( toate datele se reprezinta in tabele, exista operatorii de selectie, proiectie si jonctiune doar pentru interogare), pseudorelational (toate datele se reprezinta in tabele, exista operatorii de selectie, proiectie si jonctiune fara limitari), minimal relational (este pseudorelational si in plus, operatiile cu tabele nu fac apel la pointeri observabili de utilizatori), complet relational (este minimal relational si in plus, exista operatorii de reuniune, intersectie si diferenta, precum si restrictiile de integritate privind unicitatea cheii si restrictia referentiala).
2. Caracterizarea SGBDR
Sistemele relationale indeplinesc functiile unui SGBD cu o serie de aspecte specifice care rezulta din definirea unui SGBDR.
Caracterizarea SGBDR (FIG. 1) se poate face pe doua niveluri :
1) Global, unde sistemele relationale sunt privite ca o categorie distincta de SGBD.
2) Particular, unde fiecare SGBDR are aspecte individuale comparativ cu altele similare.
Global
Protectia
datelor Optimizarea regasirii Utilitare specializate
Fig. 1. Caracteristici SGBDR
1) Caracterizarea globala a SGBDR
Cateva dintre mecanismele si instrumentele care, dupa modul cum sunt implementate, ajuta la caracterizarea globala a SGBDR-urilor sunt:
a) Limbajele relationale
b) Protectia datelor
c) Optimizarea cererilor de regasire
d) Utilitarele specializate
a) Limbajele relationale
SGBDR ofera seturi de comenzi pentru descrierea si manipularea datelor. Acestea pot fi incluse intr-un singur limbaj relational (cazul cel mai intalnit) sau separate in LDD si LMD. In ambele situatii, comenzile pentru definirea datelor sunt distincte de cele pentru manipularea datelor.
Exemple de limbaje relationale: SQL (Structured Querry Language-standarde incepand cu 1985), QUEL, QBE, SQUARE, ALPHA, ISBL.
Nota. In cele ce urmeaza exemplificarea se va face in SQL*Plus. Pentru exemple, vezi fie cap.14 din aceasta carte, fie [VELU00
a1) Limbajele relationale de definire a datelor (LDD)
Aceste limbaje sunt simplificate, cu putine comenzi.
Descrierea datelor este memorata in BD, sub forma de tabele, in dictionarul (metabaza) bazei de date.
Facilitati de descriere sunt prezente in SGBDR prin comenzi, care definesc anumite operatii, la nivelurile: conceptual, logic, fizic.
Crearea unei BD: CREATE DATABASE
Unele sisteme suporta notiunea explicita de BD (Oracle, VFP, Ingres) altele nu (Foxpro 2.x).
Stergerea unei BD: DROP DATABASE
Crearea tabelelor de baza: CREATE TABLE
Stergerea tabelelor de baza: DROP TABLE
Crearea de sinonome: CREATE SYNONYM
Sinonimele sunt alternative (de obicei prescurtate) la numele unor tabele.
Stergerea sinonimeleor :DROP SYNONYM
Actualizarea structurii unei tabele :ALTER TABLE cu optiunile ADD,MODIFY (nu are optiuni de stergere)
Adaugarea restrictiilor de integritate :ASSERT ON
Restrictiile de integritate se declara la cererea tabelelor .Ele pot fi ulterior actualizate in sens de adaugare (comanda ASSERT) sau stergere (optiunea DROP din comanda ALTER TABLE).In Oracle restrictiile sunt:NULL, CHECK,pe cheie (PRIMARY , UNIQUE, REFERENTIAL -cheie externa).
Crearea tabelelor virtuale: CREATE VIEW
Tabelele virtuale (viziunile) reprezinta, la nivel logic, modul cum "vede" un utilizator, la un moment dat, o baza de date. O viziune este de fapt o comanda SELECT memorat in dictionarul BD si apelata apoi de utilizator.
Stergerea tabelelor virtuale: DROP VIEW.
Acordarea drepturilor de acces la BD:
GRANT CONNECT - conectarea la BD a unui utilizator.
GRANT drepturi - acordarea unor drepturi de acces (pentru regasire, actualizare etc).
Retragerea drepturilor de acces la BD:
REVOKE drepturi - retragerea unor drepturi
REVOKE CONNECT - deconectarea unui utilizator de la BD
La nivel fizic
Crearea indecsilor: CREATE INDEX
Indexarea se foloseste in BD pentru accesul la date ordonate si pentru accesul direct dupa cheie. In unele sisteme (exemplu Oracle), daca la creare s-a declarat cheie primara atunci sistemul creeaza automat index.
Stergerea indecsilor: DROP INDEX
Controlul alocarii spatiului fizic al BD:
CREATE PARTITION -crearea unei partitii
ALTER PARTITION -actualizare a unei partitii cu fisiere.
CREATE SPACE -creeaza un model de alocare a spatiului fizicpentru o BD (bun pentru optimizari)
ALTER SPACE -actualizarea modelului de alocare
DROP S PACE -sterge un model de alocare
Regruparea fizica a datelor dintr-o BD (clustere pentru acces rapid la date):
CREATE CLUSTER - creeaza un cluster dintr-o BD
ALTER CLUSTER- actualizeaza un cluster
a2 ) Limbajele relationale de manipulare a datelor (LMD)
Aspectele care pot caracteriza LMD sunt diverse si din acest motiv, le putem grupa in trei categorii:
generale
functionale
calitative
1. Modul de tratare a datelor. Toate LMD relationale realizeaza o tratare la nivel de ansamblu a datelor: unitatea de informative pentru lucru este tabela. Avantajele sunt date de :
posibilitateagestionarii automat a tuplurilor duplicate;
prelucrarea paralela a asamblurilor.
La comunicarea unui LMD relational cu un limbaj universal, avantajele se pierd deoarece comunicarea se poate face doar tuplu cu tuplu si nu la nivel de ansamblu. Deoarece limbajele universale ofera alte avantaje legate de proceduralitate, solutia este de a integra in acestea un limbaj relational.
Cursorul este solutia in SGBDR pentru a face trecerea de la tratarea la nivel de ansamblu la cea la nivel de inregistrare (tuplu).
CREATE CURSOR - se creaza un pointer spre tuplurile ansamblului (tabelei).
FETCH - transmite un tuplu indicat printr-un cursor, catre program si deplaseaza cursorul spre urmatorul tuplu.
2. Operatorii relationali implementati. SGBDR s-au dezvoltat, din punct de vedere relational, avand la baza:
calculul relational orientat pe tuplu (ALPHA, QUEL).
calculul relational orientat pe domeniu (QBE).
algebra relationala (ISBL)
transformarea (mapping) (SQL, SQUARE)
Nota. Limbajele bazate pe calculul relational sunt neprocedurale, cele bazate pe algebra relationala sunt procedurale, celelalte sunt combinatii.
3. Realizatorii limbajelor relationale s-au orientat pe domenii precise din teoria relationala. Astfel, au rezultat: limbaje relationale standardizate international (exemplu SQL - ANSI), limbaje cu standard de utilizare impus de constructor (exemplu QUEL), limbaje nestandardizate (celelalte limbaje relationale).
4. Utilizatorii limbajelor relationale sunt mult diversificati. SGBDR ofera atat elemente procedurale (pentru specialisti) cat si neprocedurale (pentru nespecialilsti).
1. Facilitati de interogare a datelor. Acestea sunt puternice si oferite prin comenzi pentru:
Interogarea tabelelor de baza (exemlu SELECT)
Interogarea tabelelor virtuale (exemplu SELECT)
2. Facilitati de actualizare a datelor.
Actualizarea tabelelor de baza
INSERT INTO - adauga randuri la sfarsitul unei tabele.
UPDATE - modifica randuri dintr-o tabela.
DELETE FROM - sterge randuri dintr-o tabela.
Actualizarea tabelelor virtuale (la fel ca mai sus).
Nota. Unele SGBDR nu permit actualizarea tabelelor virtuale (exemplu Foxpro 2.x), altelepermit acces lucru cu o serie de restrictii pentru ca operatia sa se propage spre tabelele de baza fara ambiguitati (exemplu DB2, Oracle).
3. Alte facilitati functionale La facilitatile relationale de mai sus, SGBDR-urile ofera si alte facilitati pe care le au toate limbajele de programare procedurale:
Calculul aritmetic prin operatorii specifici: +, -, *, /, **
Agregarea: prin functii standard (exemplu SUM), prin comenzi (exemplu COMPUTE OF expr ).
Comenzi de intrare/iesire standard: ACCEPT.PROMPT.
Caracterizarea calitativa a LMD
1. Puterea selectiva a LMD relationale este data de posibilitatea selectarii datelor dupa criterii (filtre) complexe (exemplu comanda SELECT).
2. Usurinta de invatare si utilizare este nuantata in functie de tipul LMD-ului relational
Cele bazate pe calculul relational sunt neprocedurale (descriptive), deci usor de invatat si utilizat (apropiat, ca stil, de limbajul natural) (exemplu QUEL).
Cele bazate pe algebra relationala sunt procedurale (algoritmice), deci mai greu de invatat si utilizat (exemplu ISBL).
Cele intermediare promoveaza stilul neprocedural dar accepta si elemente de control procedural (exemplu SQL).
Cele bazate pe grafica ofera primitive grafice pentru machetarea cererilor de regasire, deci usor de utilizat (exemplu QBE).
3. Eficacitatea utilizarii este determinata de posibilitatea optimizarii cererilor de regasire.
LMD bazate pe calculul relational lasa compilatorul sa aleaga ordinea de executie a operatiilor, deci rezulta o eficienta mare.
LMD bazate pe algebra relationala au o ordine impusa pentru executia operatiilor, deci rezulta o eficienta mica.
b) Protectia datelor
Aspectele privind protectie a datelor (vezi capitolul 2) sunt foarte importante pentru un sistem de baza de date si ele trebuie asigurate (implementate) de catre SGBD. Protectia bazei de date se refera la integritatea datelor (integritatea semantica, concurenta la date, salvarea/restaurarea) si securitatea datelor (autorizarea accesului, viziunile, procedurile speciale, criptarea). Dintre toate aceste aspecte, ne vom ocupa aici, pe scurt, doar de integritatea semantica si de concurenta la date.
Integritatea semantica
Definirea restrictiilor de integritate se face, conform cerintelor modelului relational, in LDD (exemplu CREATE TABLE, ALTER TABLE).
Utilizarea restrictiilor de integritate se face cu ajutorul unor mecanisme care controleaza validitatea regulilor pentru fiecare noua stare a BD. Aceste mecanisme sunt:
metode de detectare a inconsistentei datelor (se verifica restrcitiile de integritate) la sfarsitultranzactiilor, care se realizeaza automat de SGBDR;
puncte de verificare a integritatii fixate de utilizator, acolo unde doreste el in program.
Concurenta la date (coerenta)
Unitatea de lucru pentru asigurarea coerentei datelor este tranzactia. Aceasta este un ansamblu de comenzi tratate unitar. Tranzactia se executa in totalitate sau deloc.
Coerenta poate fi afectata la actualizarea concurenta sau la incidente.
Mecanismele utilizate de SGBDR pentru asigurarea coerentei datelor (controlul accesului concurent) sunt (vezi protectia BD in cap.2):
blocarea la diferite niveluri: baza de date, tabela, tuplu, atribut;
definirea unor puncte de salvare in interiorul tranzactiilor (exemplu comanda SAVEPOINT);
tranzactii explicite (exemplu, Begin si End Tranzaction ) si implicite (exemplu, comenzile de actualizare);
fisiere jurnal.
c) Optimizarea regasirii
Cererile de regasire se exprima in SGBDR in diferite limbaje relationale. Pentru a se obtine un rezultat optim, se utilizeaza interfete automate de rescriere a cererilor de regasire, prin parcurgerea a doi pasi:
Exprimarea cererilor de regasire sub forma unor expresii algebrice relationale, care are la baza echivalenta dintre calculul si algebra relationala .
Aplicarea unor transformari algebrice relationale asupra expresiilor construite in pasul anterior, pentru a se obtine expresii relationale echivalente si eficiente.
Transformarea se poate realiza prin doua strategii de optimizare: generale, specifice.
Generale, care sunt independente de modul de memorare a datelor. Ele se bazeaza pe propietatile operatiilor din algebra relationala (comutativitatea, asociativitatea, compunerea ). Astfel de strategii sunt:
v Selectia inaintea jonctiunii
v Proiectia inaintea jonctiunii
v Selectia inaintea proiectiei
v Combinarea selectiei multiple
Specifice, care tin cont de modul de memorare a datelor si ele sunt caracteristice unui SGBDR. Elementele care influenteaza executarea operatiilor ce intervin la o cerere de regasire sunt: accesul direct, reguli de ordonare a expresiilor algebrice specifice unui SGBDR.
e) Utilitarele specializate
Posibilitatile de utilizare ale unui SGBDR sunt influentate de utilitarele specializate pe care le are, pentru diferitele categorii de utilizatori (exemplu in Oracle: Developer pentru dezvoltatori, Designer pentru analisti, Administration Tools si Utilities pentru administrator etc.).
2) Caracterizarea particulara a SGBDR
Pentru a putea caracteriza un anumit SGBDR particular, vom lua in considerare o serie de criterii de comparatie. Aceste criterii se vor urmari, grupate pe anumite categorii, pentru cateva SGBDR-uri care ne interseaza. Dupa aceasta analiza vom avea un argument serios pentru a putea alege un SGBDR in scopul dezvoltarii unei aplicatii cu baze de date .
Gruparea caracteristicilor particulare de comparatie a SGBDR-urilor o vom face functie de:
Facilitatile de descriere a datelor ;
Facilitatile de manipulare a datelor ;
Facilitatile de utilizare si administrare a datelor.
Nota. Se obeserva ca gruparea caracteristicilor s-a facut dupa functiile oricarui SGBD
a) Caracteristici functie de facilitatile de descriere:
modul de implementare a modelului relational ;
conceptul de baza de date utilizat in schema;
definirea metadatelor;
definirea relatiilor virtuale;
actualizarea schemei relatiei;
restrictii de integritate ce pot fi declarate.
b) Caracteristici functie de facilitatile de manipulare:
LMD relational implementat ;
calcul aritmetic si functii agregate ;
moduri de acces la date;
programare orientata pe obiecte/vizuala;
tratarea valorii null;
optimizarea cererilor de regasire ;
actualizarea relatiilor de baza si virtuale.
c) Caracteristici functie de facilitatile de utilizare si administrare:
dezvoltatoare (generatoare) de diferite tipuri (ecrane, rapoarte, aplicatii etc.);
elemente de CASE (proiectare);
analize statistice;
acces de la distanta ;
utilitare de intretinere;
mecanisme pentru autorizarea accesului la date.
3 Exemple de SGBDR
ORACLE - realizat de firma Oracle Corporation USA. Produs complet relational, robust, bazat pe SQL standard extins, ajuns la versiunea 9I, extensie orientata obiect, arhitectura client/server, lucrul distribuit, BD Internet, optimizator de regasire.
DB2 - realizat de firma IBM, bazat pe SQL, optimizator de regasire, respecta teoria relationala, lucrul distribuit, robust.
INFORMIX - realizat de firma Informix, respecta teoria relationala, lucru distribuit, robust.
PROGRESS - realizat de firma Progress Software, are limbaj propiu (Progress 4GL), suporta SQL, ruleaza pe o gama larga de calculatoare sub diferite sisteme de operare.
SQLServer - realizat de firma Microsoft, bazat pe SQL, ruleaza in arhitectura client/server.
INGRES II - realizat de firma Computer Associates, este un SGBDR complet, implementeaza doua limbaje relationale (intai Quel si apoi SQL), este suportat de diferite sisteme de operare (Windows, VMS, UNIX), lucreaza distribuit in arhitectura client/server, extensie cu facilitati orientate obiect, permite aplicatii tip Internet, protectia ridicata a datelor, organizarea fizica a tabelelor se face prin sistemul de operare, are numeroase componente.
VISUAL FOXPRO - realizat de firma Microsoft, are un limbaj procedural propiu foarte puternic, extensie orientata obiect, programare vizuala, nucleu extins de SQL, raqpid.
ACCESS - realizat de firma Microsoft, bazat pe SQL, are limbajul procedural gazda (Basic Access), are generatoare puternice.
PARADOX - realizat de firma Borland, are limbaj procedural propiu (PAL) si suporta SQL.
4 Avantajele si limitele sistemelor relationale
1. Simplitatea conceptelor si a schemei .
2. Teoria relationala ofera un solid suport teoretic si o baza pentru cercetari ulterioare.
3. Un grad mare de independenta a datelor fata de programe.
4. Limbajele relationale declarative (de nivel inalt) cu o mare putere de regasire.
5. Ameliorarea semnificativa a protectiei datelor, sub toate aspectele.
6. Optimizarea semnificativa a accesului la date, precum si a alocarii datelor.
7. Manipularea de ansambluri de date prin operatorii din calculul sau algebra relationala, cu implicatii importante pentru regasirea datelor.
Limite
1. Prea marea simplitate a modelulu relational, care pentru tipurile noi de apllicatii (Internet, sisteme deschise etc.) conduce la:
Pierderea unor informatii semantice utile (prin multiplicarea tabelelor la normalizare );
Operatiile relationale, chiar optimizate, sunt costisitoare (noile aplicatii genereaza multe operatii relationale) din punct de vedere al resurselor de calcul.
2. LMD relationale sunt prea limitate, ceea ce genereaza disfunctionalitati :
Programatorul trebuie sa cunoasca doua tipuri de limbaje (declarativ -relational si procedural - universal). De aici rezulta necesitatea conversiilor, o fiabilitate scazuta, necesitatea comunicarii, productivitatea scazuta.
Mecanismele de optimizare privesc doar LMD relational, deci ceea ce este scris in limbaj procedural trebuie optimizat de catre programator.
Rezumat.
Definirea unui SGBDR se face pe de o parte printr-o definitie (relativa) si pe de alta parte prin regulile lui Codd(riguros).
SGBDR este un sistem software complet care implementeza modelul de date relational, precum si cel putin un limbaj relational.
Regulile lui Codd, in numar de 13, dau, in contextul teoriei relationale, conditiile pe care trebuie sa le indeplineasca un SGBD pentru a putea fi considerat in totalitate relational. Din acest set de reguli pot fi extrase subseturi, care indica in ce masura un SGBD este relational (minimal, pseudorelational, cu interfata relationala, complet).
Caracteristicile unui SGBDR pot fi grupate in doua categorii:
Globale: limbajele relationale (LDD, LMD), controlul integritatii semantice (tranzactii, puncte de integritate), mecanisme pentru coerenta datelor (blocarea, puncte de salvare, tranzactii, fisiere jurnal), mecanisme pentru optimizare (expresii relationale, transformari), utilitare specializate (mai pot fi si altele, care rezulta din obiectivele si functiile unui SGBD adaptate la teoria relationala).
Particulare: facilitati de descriere, facilitati de manipulare, facilitati de utilizare si administrare.
Sunt exemplificate, pe scurt, cateva dintre cele mai utilizate SGBDR: Oracle, DB2, Informix, Progress, SQLServer, IngresII, Visual Foxpro, Access, Paradox.
Sistemele relationale au o serie de avantaje, unele dintre ele neegalate de nici o alta tehnologie informatica (exemplu puterea de regasire), dar si o serie de dezavantaje, care au condus la evolutia spre o noua generatie de SBD (a treia - orientate obiect).
Note bibliografice.
Teoria relationala creata de E.F. Codd si echipa de cercetatori de la IBM, a definit conceptele aferente, inclusiv notiunea de SGBDR (prin definitii si prin cele 13 reguli). Alte carti (exemplu [VELU00]) au preluat aceste reguli si concepte si le-au explicat pe larg. Elemente din teoria relationala aferente SGBDR se regasesc si in [DATE94], [GERA99], [PAST99] etc.
Aspectele comparative si de exemplificare sunt rezultatul activitatii colectivului de autori.
Caracteristicile globale ale SGBDR sunt prezentate in [RAGE00], [VELU00], dar ele au rezultat, in mare parte, si din experienta autorilor. Acelasi lucru se poate spune si despre avantajele si limitele sistemelor relationale.
Cuvinte cheie.
teoria relationala sisteme relationale
SGBDR regulile lui Codd
limbajele relationale LDD
LMD integritatea semantica
coerenta optimizarea accesului
caracteristici SGBDR exemple SGBDR
avantaje sisteme relationale limite sisteme relationale