Documente Academic
Documente Profesional
Documente Cultură
- 2007 -
1
CUPRINS
2
Capitolul 1
3
crearea (initializarea) si exploatarea (consulatarea si actualizarea)
bazei de date
controlul integritatii bazei de date
confidentialitatea informatiilor continute in baza
accesul simultan al mai multor utilizatori la informatii
securitatea in functionare
furnizarea unui set de comenzi si insructiuni necesare atit utilizatorilor pentru
consultarea bazei de date, prin limbajul de manipulare, cat si programatorilor
revizia si restructurarea bazei de date
monitorizarea performantelor
Un SGBD se caracterizeaza prin:
neredundanta datelor (administrarea coerenta a datelor trebuie sa asigure neduplicarea
fizica a datelor);
partajarea datelor (aplicatiile sa partajeze simultan datele din baza de date);
securitatea si confidentialitatea datelor (datele trebuie protejate de accesul neautorizat
sau rau intentionat).
Tipuri de SGBD-uri
1. Modelele retea si ierarhice caracteristice perioadei 1960-1970
foloseau o organizare a datelor la nivel de articol prin legaturi ierarhice(arbore) sau de tip
graf.
IMS (Information Management System), conceput de IBM, a fost primul SGBD
ierarhic, conceput initial pentru procesarea datelor in industria aerospatiala (1968).
Versiunea curenta a acestuia, IMS/VS (Information Management System/Virtual
Storage), este implementata pe calculatoare IBM si foloseste limbajul DL/1 (Data
Language One). Sistemul IMS nu poate reprezenta relatia de tipul n:m („multi la multi”).
Independenta fizica redusa a SGBD-urilor ierarhice complica administrarea si
manipularea datelor. Limbajul de manipulare a datelor impunea programatorului sa
specifice drumurile de acces la date.
IDMS (Integrated Database Management System) este un SGBD retea produs de
firma Cullinet Software Inc. si functioneaza pe calculatoarele IBM, sub sistemul de
operare DOS. Modelele retea prezinta o serie de dezavantaje, precum optimizarea
manuala a sistemului: nu utilizeaza baze de date statistice si nu permit sortarea dinamica.
Totusi, SGBD-urile retea continua sa fie folosite datorita performantelor obtinute in
prelucrarea la nivel de inregistrari.
Referitor la modul de manipulare a datelor, modelele ierarhic si retea erau
orientate pe fisiere. Pentru a inlatura aceste limitari, a fost introdus modelul relational,
care este orientat pe multimi.
2. Modelul relational a aparut dupa 1970 si a revolutionat lumea
bazelor de date prin buna sa fundamentare teoretica si usurinta cu care se poate
reprezenta un volum mare de date, devenind foarte popular. A fost conceput si dezvoltat
de E.F. Codd, fiind bazat pe teoria matematica a relatiilor. Foloseste structuri de date
simple, intuitive, caracterizan-du-se prin inexistenta pointerilor vizibili pentru utilizator,
constrangeri de integritate, o multime de operatori aplicabili relatiilor, care permit
definirea, cautarea si reactualizarea datelor. Modelului relational ii este asociata teoria
normalizarii.
4
In 1976, proiectul System/R dezvoltat in California a constituit punctul de plecare
pentru realizarea unuia dintre cele mai cunoscute SGBD-uri, DB2. In 1979 a fost lansat
cu succes primul SGBD relational comercial, Oracle, care ocupa un segment de piata
foarte mare. Astfel, Oracle Corporation a devenit liderul produselor software dedicate
mediilor de lucru cu bazele de date.
Odata cu marirea vitezei de acces si utilizarea limbajelor de generatia a IV-a
(SeQuel, SQL), SGBD-urile relationale s-au impus pe piata bazelor de date.
Sistemele de gestiune a bazelor de date relationale (SGBDR) de „categorie grea”
precum Oracle, DB2, Informix, Microsoft SQL Server, asigura accesul simultan a mii de
utilizatori la aceeasi baza de date. Piata acestui segment este rezervata sistemelor de
operare Unix, Windows NT, Windows 2000 si Novell Netware.
Fata de modelele ierarhice si retea, modelul relational prezinta cateva avantaje,
precum:
independenta logica si fizica
pune la dispozitia utilizatorilor limbaje ne-procedurale
optimizeaza accesul la date
imbunatateste integritatea si confidentialitatea datelor, etc.
Un SGBD relational suporta intr-o forma limitata cunostinte (asertiuni generale si
abstracte asupra faptelor), prin constrangerile de integritate, iar restul trebuie integrate in
programele de aplicatie, ceea ce genereaza probleme datorita imposibilitatii partajarii
cunostintelor intre utilizatori.
S-a observat ca modelul relational de baze de date nu poate reprezenta aspecte
complexe ale realitatii (documente incluzand date compuse, obiecte dinamice, imagini,
sunete, grafuri, liste). Astfel, cercetarile s-au indreptat asupra modelului relational
orientat pe obiecte.
3. SGBD-urile relationale orientate pe obiecte folosesc obiecte
pentru reprezentarea informatiei. Obiectul este un tip de data si nu informatia efectiva
(instanta). Tipurile de date atomice permit stocarea datelor fara utilizarea unui spatiu pe
disc suplimentar. Insa crearea unui tip de date compus conduce automat la asocierea unui
OID (Object IDentifier - identificatorul obiectului) fiecarei instante de acest tip care
necesita spatiu de stocare pe disc.
Un sistem de gestiune relational orientat obiect foloseste indecsi asupra
elementelor unei multimi, utili atat in interogari simple, cat si in operatii JOIN pentru
doua sau mai multe tabele intre care exista o relatie many-to-many (multi-la-multi).
Dintre SGBD-urile relationale orientate obiect se remarca Oracle versiunile
Oracle 8 si Oracle 9i, PostgreSQL, care folosesc ca limbaj de interogare SQL.
Standard-ul SQL-3, aparut in 1999 ofera posibilitati pentru mosteniri multiple,
polimorfism, incapsulare, suport pentru sisteme bazate pe gestiunea cunostintelor,
permite declararea campurilor de tip LOB (Large OBject), care pot satisface nevoile
multimedia tot mai accentuate. Insa LOB nu reprezinta un tip de date, deoarece nu poate
fi folosit in clauza WHERE a unei interogari si nu sunt permise operatii cu variabile sau
campuri declarate LOB.
Oracle Server este cel mai utilizat sistem de gestiune de baze de date relationale
orientate pe obiecte. Versiunile Oracle 8 si Oracle 9i furnizeaza facilitati precum:
Tipuri de date definite de utilizator (obiect si colectie), tip de date predefinit
REF (referinta de obiect)
Tipuri predefinite pentru obiecte de dimensiuni mari (LOB-large objects,
BLOB, CLOB, NCLOB, Bfile)
5
Vederi obiect. O vedere obiect constituie o colectie de tabele normalizate,
permitand manipularea datelor ca pe niste obiecte.
Precompilatorii Oracle (Pro*C/C++) permit folosirea tipurilor de date definite de
utilizator in programe C si C++. Oracle Call Interface (OCI) furnizeaza facilitati pentru
accesarea si manipularea obiectelor din Oracle 8. Object Type Translator (OTT)
genereaza automat declaratii in C pentru tipuri de date obiect definite in Oracle 8.
Postgres95 conceput in 1985 la Universitatea Berkeley din California,
dezvoltat in 1996 si redenumit PostgreSQL, este definit ca fiind relational, extensibil, cu
orientare obiectuala. Acesta include elemente de limbaj compatibile ISO SQL, ANSI
SQL/89, SQL/92 si ANSI SQL/98. PostgreSQL este construit conform unui model
client/server; in fiecare sesiune sunt implicate trei procese Unix cooperante: postmaster
(proces supervizor), backend (proces server de baze de date) si frontend (proces cerand
conexiune la backend).
Include interfete de programare pentru C, C++, Perl5, PHP (limbaj de
script pentru scrierea de pagini Web generate dinamic), driver JDBC pentru
programatorii Java
Ofera interfete grafice
Sunt suportate baze de date de mari dimensiuni (peste 200Gbytes), dar
performantele scad vizibil la baze mai mari de 5 Gbytes pe masini cu procesor pe 32 biti.
4. Sistemele de gestiune a bazelor de date inteligente, din anii
`80, utilizau concepte ale inteligentei artificiale. A aparut astfel necesitatea utilizarii si
gestionarii unor volume mari de cunostinte.
SGBD-urile deductive prelucreaza baze de date inteligente si gestioneaza
cunostinte relativ la baze de date, care sunt, in general, relationale. Utilizand programarea
logica, acestea permit deducerea de noi informatii, plecand de la informatiile stocate in
baza de date. Exista pachete software care permit interfatarea bazelor de date relationale
cu sisteme expert. De exemplu, NEXPERT OBJECT Interfaces reprezinta un ansamblu
de interfete ale sistemelor expert de tip NEXPERT OBJECT cu SGBD-urile Oracle si
Ingres. Pentru eliminarea neajunsurilor centralizarii datelor, s-au dezvoltat prototipuri de
sisteme de date distribuite.
5. SGBD-urile distribuite utilizeaza calculatoare diferite
interconectate printr-o retea de comunicatie si ofera flexibilitate in descompunerea
tranzactiilor in componente ce pot fi realizate local sau transportate altor noduri.
SDD-1 a fost primul SGBD distribuit si implementat in 1979 pe calculatoare
DEC-20. Statiile sunt conectate prin reteaua ARPANET si utilizeaza ca SGBD local
Datacomputer. SDD-1 suporta modelul relational.
Ingres distribuit este realizat la Universitatea din California. Se mai pot cita ca
SGBD-uri distribuite existente: R*, DDM, Porel, Sirius-Delta, Multibase, DDTS
(Distributed Testbed System), etc.
Principalul avantaj al SGBD-urilor distribuite il constituie cresterea
performantelor sistemului prin partajarea si replicarea datelor dar si existenta mai multor
procesoare. Bazele de date distribuite prezinta si o serie de dezavantaje legate de
complexitatea proceselor, dificultatea realizarii controlului concurentei si al tranzactiilor.
6. Modelele semantice si functionale au permis cresterea
continutului semantic al datelor din baze de date. Valorile atributelor asociate entitatilor
se pot obtine direct (in modelul semantic) sau prin intermediul unor functii aplicabile
entitatilor (in modelul functional).
6
7. Bazele de date multimedia imbina caracteristicile orientate pe
obiecte cu regulile deductive specifice inteligentei artificiale aplicate informatiilor de tip
multimedia (texte, obiecte grafice, imagini statice, video digitizat, secvente audio).
8. Sistemele de gestiune a bazelor de date orientate obiect
(SGBDOO), aparute dupa 1990, permit integrarea descrierii structurale si
comportamentale. Acestea furnizeaza posibilitati superioare de deductie prin folosirea
ierarhiilor de clase si a mostenirii. Schema unei baze de date orientate obiect include
definitiile structurale (atribute si tipuri) si comportamentale (metode) ale obiectelor.
Un sistem de gestiune a bazelor de date orientate obiect realizeaza o modelare
superioara a informatiei, permite folosirea obiectelor dinamice si asigura imbunatatirea
interfetei cu utilizatorul. Prin posibilitatea integrarii multimediei, SGBDOO permit
crearea de tipuri spaţiale de date pentru sisteme informatice geografice. Exista posibilitati
de reprezentare a hartilor si a locatiilor acestora care interactioneaza cu utilizatorul sau
posibilitati de analiza a imaginilor, a sunetelor.
Existenta unor categorii de probleme pentru care solutia obiectuala este singura
acceptabila a determinat crearea de SGBD-uri orientate obiect „pure”, cum ar fi:
GemStone, ObjectStore, Ontos, Raima, Versant, etc.
ObjectStore este disponibil pentru platformele Windows si UNIX. Dintre
facilitatile sale se pot aminti:
- Asigura controlul concurentei si a integritatii referentiale
- Interfata Java: permite crearea de aplicatii Java care sa stocheze si sa manevreze
obiectele intr-un SGBD multi-user de performanta si accesibilitate deosebite. Aplicatiile
Java pot accesa obiecte native C++ existente in baza de date.
Sybase Build Monumentum ofera utilizatorilor de calculatoare Macintosh si celor
bazate pe sistemul Windows facilitati de lucru cu baze de date orientate pe obiect.
Multiprocesarea in retele distribuite este realizata numai din punct de vedere "client".
Build Monumentum detine un administrator care gestioneaza procese in multithreading.
Situat in gama SGBDR-urilor, Build Monumentum este considerat de specialisti ca fiind
un produs mai reusit decat produsele din aceeasi gama ale companiilor Oracle sau
Informix. In cadrul sistemului Sybase System 10, Server-ul Sybase SQL a fost primul
care a utilizat cod compilat/partajat atat pentru gestionarea bazelor de date locale cat si
pentru trimiterea de apeluri de proceduri RPC la alte servere aflate la distanta.
Marii producatori de sisteme relationale au constientizat avantajele bazelor de
date orientate obiect si au dezvoltat noi versiuni de SGBD-uri relationale orientate obiect,
precum Oracle 8, Oracle 9i, Ingres, Sybase.
Unele SGBD-uri orientate pe obiecte ofera suport pentru tehnologii deschise, cum
ar fi: COM, CORBA, XML, DAO, OLEDB sau ADO. Suportul oferit nu este universal
pentru toate bazele de date obiect.
Domeniile in care sunt folosite cu succes BDOO sunt gestiunea retelelor sau a
informatiilor, tranzactiile financiare, sistemele geografice, cartografie digitala,
determinand o dezvoltare rapida a modelului orientat obiect.
SGBD-urile orientate obiect existente ofera functionalitati si performante
superioare in administrarea datelor complexe si voluminoase. Limbajele de interogare si
de manipulare (extensii ale SQL) ofera acestora un plus de rigoare. Totusi, tehnicile de
acces la obiecte sunt inca perfectibile deoarece timpii de rãspuns sunt adesea
nesatisfacatori.
7
Capitolul 2
Prezentare generala
Modelul relational a fost conceput si dezvoltat de E. F. Codd, fiind un model
formal de organizare conceptuala a datelor, destinat reprezentarii datelor si legaturilor
dintre date, bazat pe teoria matematica a relatiilor.
Datele se prezinta sub forma unor tabele (relatii) in care liniile constituie
inregistrari, iar coloanele sunt atribute ce caracterizeaza aceste inregistrari. Orice
interogare (sau consultare, extragere de date) este tot o relatie.
Din punctul de vedere al manipularii datelor, modelul relational este orientat spre
multimi. Modelul relational nu este orientat spre sistemul de calcul, deci nu include
regulile, structurile si operatiile referitoare la implementarea fizica a unui sistem de baze
de date.
Modelul relational a permis introducerea unui limbaj de interogare, neprocedural
de manipulare a datelor.
Un model relational se caracterizeaza prin trei elemente:
Structura relationala a datelor
Operatorii modelului relational
Regulile de integritate care guverneaza folosirea cheilor in model.
Aceste trei elemente corespund celor trei componente ale ingineriei software:
informatie, proces si integritate.
Organizarea datelor
Structura datelor impune definirea notiunilor: relatie, schema relationala, valoare
nll, tabel vizualizare (view), care pot fi exprimate formal, uzual sau fizic (tabelul 1):
Tabelul 1.
Formal Uzual Fizic
relatie tabel fisier
tuplu linie inregistrare
atribut coloana camp
domeniu tip de data tip de data
8
Fie D1, D2, …, Dn domenii finite, nu neaparat disjuncte. Atunci produsul cartezian
D1 X D2 X …X Dn este definit de multimea tuplurilor (v1, v2, …, vn), unde v1 є D1, v2 є D2,
…, vn є Dn, unde n este aritatea tuplului:
D1 X D2 X …X Dn = {(v1, v2, …, vn) / vi є Di, i =1, …, n}
O relatie R pe multimile D1, D2, …, Dn este o submultime a produsului cartezian
D1 X D2 X …X Dn, deci este o multime de tupluri.
O relatie poate fi considerata o multime finita de functii.
Atribut: Asociem fiecarui domeniu Di un atribut Ai si definim relatia R = { f1, f2,
…, fn }unde fi : { A1, A2, …, An} D1 X D2 X …X Dn si fi (Aj) є Dj, i,j.
Schema relationala: Multimea numelor atributelor corespunzatoare unei relatii R
defineste schema relationala a relatiei respective si se noteaza R(A1, A2, …, An).
Se poate reprezenta o relatie printr-un tabel bidimensional in care fiecare linie
corespunde unui tuplu si fiecare coloana corespunde unui domeniu din produsul
cartezian. O coloana ii corespunde unui atribut. Numarul atributelor defineste gradul
relatiei, iar numarul de tupluri din relatie defineste cardinalitatea relatiei.
O valoare null este un atribut necunoscut sau care nu poate fi definit.
Un tabel vizualizare ( view, filtru, relatie virtuala, vedere) este un filtru asupra
tabelului initial care contine numai informatia necesara unei anumite abordari sau
aplicatii. O vedere este virtuala deoarece datele continute nu sunt in realitate memorate
intr-o baza de date. Exista limitari in folosirea acestor tabele: de exemplu, nu se
recomanda inserarea, reactualizarea si stergerea.
Reguli de integritate
Regulile de integritate sunt asertiuni pe care datele din baza de date trebuie sa le
satisfaca. Exista trei tipuri de constrangeri structurale:
de cheie
de referinta
de entitate
care constituie multimea minimala de reguli de integritate pe care trebuie sa le respecte
un sistem de gestiune a bazelor de date relationale.
Restrictiile de integritate minimale sunt definite in raport cu notiunea de cheie a
unei relatii.
O cheie a unei relatii R este o multime k de atribute astfel incat:
1. pentru orice doua tupluri t1, t2 ale lui R, sa avem t1(k) # t2(k)
2. nu exista nici o submultime proprie a lui k avand proprietatea 1.
Fiecare relatie are cel putin o cheie. Daca exista mai multe chei, exista o cheie
primara.
Cheie externa (straina): Fie schemele relationale R1(P1, S1) si R2(S1, S2), unde P1
este cheie primara in R1 si S1 - cheie secundara in R1, S1 – cheie primara in R2. Atunci S1
este cheie externa pentru R1.
Reguli de integritate structurata: Modelul relational respecta 3 reguli de
integritate structurata:
Regula 1: unicitatea cheii – Cheia primara trebuie sa fie unica si minimala.
Regula 2: integritatea entitatii – Atributele cheii primare trebuie sa fie diferite de
valoarea null.
Regula 3: integritatea referirii – O cheie externa trebuie sa fie ori null in intregime,
ori sa corespunda unei valori a cheii primare asociate.
9
Proiectarea modelului relational
Diagrama E/R (entitate-relatie) este un model neformalizat pentru reprezentarea
grafica a structurii relationale.
Modelul E/R imparte elementele unui sistem real in doua categorii:
entitati si
relatii (legaturi, asocieri) intre aceste enti tati.
O entitate poate fi o persoana, un loc, concept, activitate, eveniment care este
semnificativ pentru modelare.
O relatie (asociere) este o comunicare intre doua sau mai multe entitati, un raport
intre entitati.
Pentru obtinerea schemei conceptuale a bazei de date relationale, se pleaca de la
modelele conceptuale ale datelor (diagrama E/R).
Exemplu: Fie o institutie ce contine mai multe departamente, in care lucreaza
salariati. Salariatii sunt atasati unor proiecte, executand in cadrul acestora diferite sarcini.
Structura generala a modelului analizat este prezentata in figura 1.:
10
Se pot defini relatii recursive. Exemplu:
SALARIAT_supervizeaza_SALARIAT.
Diagrama E/R este prezentata in figura 2.:
11
Atributele multiple devin tabele dependente ce contin cheia primara a entitatii
si atributul multiplu.
Exemplu: un SALARIAT are mai multe numere de telefon nr._telefon este
atribut multiplu care genereaza tabelul dependent TELEFON.
Concluzie: din diagrama E/R se obtine diagrama conceptuala (figura 3.) pentru
proiectarea modelului relational prin:
adaugarea tabelelor asociative
marcarea cheilor externe.
12
O relatie de tip 3 este o legatura intre 3 entitati:
SALARIAT_asociat_la_PROIECT_in_FUNCTIA
Algebra relationala
A fost introdusa de E. F. Codd ca o multime de operatii formale actionand asupra
unor relatii si avand ca rezultat alte relatii.
Baza teoretica fundamentala pentru limbajele de interogare relationale o
constituie cei opt operatori introdusi de Codd pentru manipularea relatiilor.
13
In 1985, Codd a publicat un set de 13 reguli in raport cu care un SGBD poate fi
apreciat ca relational:
Regula 1 – regula gestionarii datelor – Un SGBD relational trebuie sa fie capabil
sa gestioneze o baza de date prin posibilitatile sale relationale.
Regula 2 – regula reprezentarii informatiei – Intr-o baza de date relationala,
informatia este reprezentata la nivel logic sub forma unor tabele (relatii).
Regula 3 – regula accesului garantat la date – Fiecare valoare dintr-o baza de
date relationala trebuie sa poata fi adresata in mod logic printr-o combinatie formata din
numele relatiei, valoarea cheii primare si numele atributului.
Regula 4 – regula reprezentarii informatiei necunoscute – Un sistem relational
trebuie sa permita utilizatorului definirea unui tip de date numit null pentru reprezentarea
informatiei necunoscute la momentul respectiv.
Regula 5 – regula dictionarelor de date – Asupra descrierii bazei de date
(informatii relative la relatii, vizualizari, indecsi) trebuie sa se poata aplica aceleasi
operatii ca si asupra datelor din baza de date.
Regula 6 – regula limbajului de interogare – Trebuie sa existe cel putin un limbaj
pentru manipularea bazei de date (limbajul SQL).
Regula 7 – regula de actualizare a vizualizarii – Un SGBD trebuie sa poata
determina daca o vizualizare poate fi actualizata si sa stocheze rezultatul interogarii intr-
un dictionar de tipul unui catalog de sistem.
Regula 8 – regula limbajului de nivel inalt – Regulile de manipulkare asupra unei
relatii luata ca intreg sunt valabile atat pentru operatiile de regasire a datelor, cat si asupra
operatiilor de inserare, actualizare si stergere a datelor.
Regula 9 – regula independentei fizice a datelor – Programele de aplicatie nu
depind de modul de stocare a datelor sau de modul de acces la date.
Regula 10 – regula independentei logice a datelor – Programele de aplicatie
trebuie sa fie transparente la modificarile de orice tip efectuate asupra datelor.
Regula 11 – regula independentei datelor din punct de vedere al integritatii –
Regulile de integritate trebuie sa fie definite intr-un sublimbaj relational, nu in programul
de aplicatie.
Regula 12 – regula independentei datelor din punct de vedere al distribuirii
datelor – Distribuirea datelor pe mai multe calculatoare dintr-o retea de comunicatii de
date, nu trebuie sa afecteze programele de aplicatie.
Regula 13 – regula versiunii procedurale a unui SGBD – Orice componenta
procedurala a unui SGBD trebuie sa respecte aceleasi restrictii de integritate ca si
componenta relationala.
Deoarece regulile lui Codd sunt prea restrictive pentru a fi respectate de un SGBD
relational, s-au formulat criterii minimale de definire a unui sistem de gestiune relational.
Un SGBD este minimal relational daca:
toate datele bazei sunt reprezentate prin valori in tabele;
nu exista pointeri observabili de catre utilizator;
sistemul suporta operatorii relationali de proiectie, selectie si compunere
naturala, fara limitari impuse din considerente interne.
Un SGBD este complet relational daca este minimal relational si satisface in plus
conditiile:
sistemul suporta restrictiile de integritate de baza (unicitatea cheii primare,
constrangerile referentiale, integritatea entitatii)
sistemul suporta toate operatiile de baza ale algebrei relationale.
14
Mecanismele de lucru de care dispune un SGBD relational sunt:
un limbaj relational pentru descrierea datelor la nivel fizic, logic si conceptual
un limbaj relational pentru manipularea datelor
mecanisme pentru controlul integritatii semantice a datelor
mecanisme pentru optimizarea cererilor de date
mecanisme pentru asigurarea coerentei datelor
utilitare pentru generarea de rapoarte, aplicatii sau statistici referitoare la starea si
activitatea bazei de date.
Normalizarea relatiilor
Normalizarea relatiilor conceptuale permite obtinerea de relatii „moleculare”, fara
a pierde nimic din informatie, pentru a elimina redundanta si anomaliile reactualizarii
informatiilor. Este un proces de ameliorare progresiva a unei scheme conceptuale initiale
a bazei de date relationale. Dupa fiecare etapa de ameliorare, relatiile din baza de date
ating un anumit grad de perfectiune, deci se afla intr-a anumita forma normala.
Trecerea unei relatii dintr-o forma normala in alta, presupune eliminarea unui
anumit tip de dependente nedorite, care sunt transformate in dependente care nu provoaca
anomalii (admisibile).
Procesul de ameliorare trebuie sa satisfaca cerintele:
sa garanteze conservarea datelor
sa garanteze conservarea dependentelor dintre date
sa reprezinte o descompunere minimala a relatiilor initiale.
Necesitatea normalizarii deriva din problemele generate de anomalii. Anomaliile
care apar in lucrul cu baze de date se produc datorita dependentelor care exista intre
datele bazei de date. Exista anomalii:
la inserare de date
la modificare / stergere
redundanta in date (aparitii repetate)
probleme de reconexiune.
Normalizarea permite:
suprimarea redundantei logice
evitarea anomaliilor la reactualizare
rezolvarea problemei reconexiunii.
Exista o teorie matematica a normalizarii, al carei autor este E. F. Codd, conform
careia, se construiesc tabele standard (forme normale).
Orice forma normala se obtine aplicand o schema de descompunere. Exista 2
tipuri de descompuneri:
- descompuneri ce conserva dependentele ( descompunerea unei relatii R in proiectii
k
Regula Casey-Delobel
Fie R(A) o schema relationala si α, β, γ o partitie a lui A. Presupunem ca α
determina functional pe β. Atunci:
15
R ( A) JOIN ( R, R ) ,
unde αUβ este multime atributelor care
intervin in dependentele functionale si αUγ este reuniunea determinantului cu restul
atributelor lui A.
Formele normale ale relatiilor dintr-o baza de date relationala sunt definite in
raport cu anomaliile care pot aparea in lucrul cu aceste relatii.
1. Prima forma normala (FN 1)
O relatie este in FN 1 daca fiecarui atribut care o descompune ii corespunde o valoare
indivizibila (atomica). Un tuplu nu trebuie sa contina atribute sau grupuri de atribute
repetitive.
Algoritmul AFN-1 care aduce o relatie in FN 1 elimina atributele compuse si cele
repetitive.
2. Forma normala 2 (FN 2)
O relatie este in FN 2 daca si numai daca:
o Relatia R este in FN 1
o Fiecare atribut care nu este cheie (nu participa la cheia primara) este dependent de
intreaga cheie primara.
Pentru a obtine o relatie in FN 2 se poate aplica regula Casey-Delobel: fie relatia
R(k1, k2, x, y), k1, k2 definesc cheia primara, x si y sunt multimi de atribute astfel incat k 1
x ( rezulta ca R nu este in FN 2). Solutia este inlocuirea lui R cu doua proiectii R 1(k1,
k2, y) si R2(k1, x).
Algoritmul AFN-2 de aducere a unei relatii in FN 2 elimina dependentele functionale
partiale din cadrul unor relatii aflate in FN 1.
3. Forma normala 3 (FN 3)
O relatie R este in FN 3 daca si numai daca:
o Relatia R este in FN 2
o Fiecare atribut care nu este cheie (nu participa la o cheie) depinde direct de cheia
primara.
Din punct de vedere formal, o relatie R este in FN 3 daca si numai daca:
o Relatia R este in FN 2
o Fiecare atribut care nu este cheie (nu participa la o cheie) nu este dependent tranzitiv
de nici o cheie a lui R.
Definitie: (A este dependent tranzitiv de X)
Fie R o relatie, X o submultime de atribute ale lui R si A un atribut al relatiei R. A
este dependent tranzitiv de X daca: () y astfel incat x y si y A (A y si y nu
determina pe X).
Pentru a obtine o relatie FN 3 se poate aplica regula de descompunere Casey-Delobel.
Algoritmul AFN-3 pentru aducerea unei relatii FN 2 in FN 3 elimina dependentele
functionale tranzitive.
Forma normala Boyce_Codd(BCNF)
O relatie R este in forma normala Boyce-Codd daca si numai daca fiecare
determinant este o cheie candidat (sau pentru orice dependenta functionala totala X A,
X este o cheie a lui R).
Algoritmul ABCNF pentru aducerea unei relatii in BCNF elimina dependentele
functionale ai caror determinanti nu sunt chei candidat.
16
4. Forma normala 4 (FN 4)
O relatie BCNF este in FN 4 daca pentru orice multidependenta elementara de forma
X Y, X este o supercheie a lui R.
Aducerea relatiilor in FN 4 presupune eliminarea dependentelor multivaloare atunci
cand sunt mai mult de una in cadrul unei relatii.
5. Forma normala 5 (FN 5)
Relatia R este in FN 5 daca si numai daca:
o Relatia R este in FN 4
o Nu contine dependente ciclice.
Algoritmul AFN-5 pentru aducerea unei relatii FN 4 in FN 5 elimina join-
dependentele.
Exemplu:
17
Capitolul 3
Prezentare generala
Limbajul SEQUEL (Structured English as Query Language) a fost prezentat
pentru prima data ca un limbaj de interogare in anul 1974, de catre Chamberlin si Boyce.
In 1980, Chamberlin a schimbat denumirea SEQUEL in SQL (Structured Query
Language – limbaj structurat de interogare).
ANSI (Institutul National American pentru Standarde) a publicat in 1986
standardul SQL ANSI 1986, care definea comenzile de baza ale limbajului SQL, inclusiv
pentru crearea de tabele si vederi (create table si create view). Limbajul SQL – 86 nu
continea optiuni de modificare a structurii sau stergere a obiectelor bazei (alter, drop) si
comenzi pentru acordare si revocare de drepturi utilizatorilor (grant si revoke).
Astfel, au fost necesare revizuirea si extinderea limbajului. In 1989 apare limbajul
SQL – 89 recunoscut ca fundament al multor SGBD-uri comerciale. Totusi, variantele
comerciale ale diferitilor producatori erau incompatibile la nivel de detaliu.
In 1992, apare versiunea SQL – 92 cu multe facilitati incluse, precum:
Jonctiunea externa (outer join)
Modificarea schemei bazei de date (alter, drop, grant, revoke)
Modificari si stergeri referentiale in cascada
Amanarea verificarii restrictiilor
Niveluri de consistenta a tranzactiilor.
In 1999 a fost publicat un standard SQL – 3 care iese din sfera relationalului si a
normalizarii relatiilor, asa cum au fost formulate de Codd. Principalele orientari ale
limbajului SQL – 3 vizeaza transformarea acestuia intr-un limbaj complet, in vederea
definirii si gestionarii obiectelor complexe si persistente. Astfel, au fost introduse:
Mosteniri multiple, polimorfismul, incapsularea, caracteristici preluate din
limbajele orientate pe obiecte
Tipuri de date definite de utilizator
Suport pentru sisteme bazate pe gestiunea cunostintelor
Interogari recursive
Instrumente de administrare a datelor.
18
Tipurile de date definite in standardul SQL – 92 sunt urmatoarele:
- SMALLINT pentru numere intregi scurte; ocupa 4 pozitii reprezentate pe 16 biti
- INTEGER sau INT pentru numere intregi (9 pozitii reprezentate pe 32 biti)
- NUMERIC (p, s) sau DECIMAL (p, s) sau DEC (p, s) pentru memorarea datelor
reale, cu un total de p pozitii, dintre care s la partea fractionara
- FLOAT pentru date reale reprezentate in virgula mobila (20 pozitii pentru mantisa)
- REAL pentru date reale exprimate in virgula mobila, cu precizie mai mica decat
FLOAT, dar la nivelul de intrare fiind identice)
- DOUBLE PRECISION pentru date reale exprimate in virgula mobila, in dubla
precizie (30 pozitii pentru mantisa)
- CHAR(n) sau CHARACTER(n) pentru date de tip sir de caractere de lungime n
(maxim 240)
- VARCHAR(n) sau CHAR VARYING(n) sau CHARACTER VARYING(n) pentru
date de tip sir de caractere de lungime variabila, maxim 254 caractere
- DATE pentru data calendaristica
- TIME pentru ora
- TIMESTAMP pentru an, luna, zi, ora, minut, secunda, fractiuni de secunda.
19
Proiectarea bazei de date
Baza de date FIRMA care gestionează informaţii despre angajaţii departamentelor
unei firme conţine următoarele tabele:
DEPART (departamente), cu detalii despre departamente;
ANG (angajaţi), cu toţi angajaţii firmei;
SALGRD (grade salarii), cu detalii despre gradele de salarizare.
Proiectarea bazei de date permite obţinerea schemelor relaţionale următoare:
DEPART(nrdepart#, numedepart, loc)
ANG(codang#, nume, functie, manager, datan, salariu, comision, nrdepart)
SALGRD(grad#, salmin, salmax).
Tabelul DEPART conţine următoarele câmpuri:
nrdepart – număr departament, de tip number(2), cheie primară;
numedepart – nume departament, de tip char(14);
loc – localitatea unde se află departamentul, de tip char(13).
Tabelul ANG conţine următoarele câmpuri:
codang – codul angajatului, de tip number(4), cheie primară;
nume – numele angajatului, de tip char(12);
functie – funcţia angajatului, de tip char(16);
manager – codul managerului angajatului, de tip number(4);
datan – data naşterii, de tip date;
salariu – salariul angajatului, de tip number(12,2);
comision – comisionul angajatului, de tip number(8);
nrdepart – numărul departamentului în care lucrează angajatul, de
tip number(2).
Tabelul SALGRD conţine următoarele câmpuri:
grad – categoria de salarizare, de tip number(1);
salmin – salariul minim din categoria respectivă de salarizare, de
tip number(12,2);
salmax – salariul maxim din categoria respectivă, de tip
number(12,2).
Schema simplificată a bazei de date FIRMA ce conţine tabelele şi relaţiile dintre
ele este prezentată în figura 1:
Tabelul DEPART are cheie primară - coloana nrdepart, tabelul ANG are cheie
primară - coloana codang şi cheie externă – coloana nrdepart, iar tabelul SALGRD are
cheie primară – coloana grad.
20
Crearea tabelelor
Programul care creează tabelele, fără a stabili relaţiile dintre ele şi restricţiile, este
următorul:
clear
close databases
open database firma.dbc
create table depart( nrdepart n(2) , numedepart c(14), loc c(13))
create table ang( codang n(4), nume c(12), functie c(16),;
manager n(4), datan d, salariu n(12,2),;
comision n(8), nrdepart n(2) )
create table salgrd( grad n(1), salmin n(12,2), salmax n(12,2))
modify database
close all
Dupa execuţia programului de mai sus, este afişată baza de date în fereastra
Database Designer (figura 2):
Adăugarea restricţiilor
În limbajul SQL se pot declara toate tipurile de restricţii pentru o bază de date relaţională:
- cheie primară – atributul PRIMARY KEY;
- unicitate – clauza UNIQUE;
- valori obligatorii (nenule) – opţiunea NOT NULL; în Visual FoxPro trebuie
declarate atributele care pot avea valori NULL;
- restricţii utilizator – implementate sub forma regulilor de validare la nivel de
câmp, înregistrare sau pot fi incluse în declanşatoare;
- restricţii referenţiale – apar datorită existenţei cheilor străine (clauza FOREIGN
KEY). Restricţiile referenţiale păstrează integritatea bazei de date la execuţia
anumitor operaţii, precum: la inserarea unei linii într-o tabelă copil sau modificarea
unei chei străine (se verifică dacă noile valori se regăsesc în liniile tabelului părinte);
la ştergerea unei linii dintr-o tabelă părinte (fie se şterg în cascadă toate înregistrările
corespondente din tabelul copil, fie se interzice ştergerea).
21
Exemple:
Adăugarea restricţiei cheie primară pentru coloana nrdepart (tabelul depart):
alter table depart add primary key nrdepart tag nrdepart
Vizualizarea (modificarea) structurii (inclusiv cheia primară) se face folosind comanda
modify structure Table Designer eticheta Indexes (figura 3):
Adăugarea restricţiei ca loc să facă parte din lista: Bucureşti, Ploieşti, Braşov,
Câmpina, Arad, Iaşi
ALTER TABLE depart ALTER COLUMN loc char(13) ;
CHECK(inlist(loc,'Bucuresti','Ploiesti', 'Brasov', 'Campina', 'Arad',; 'Iasi'))
ERROR 'Bucuresti, Ploiesti, Brasov, Campina, Arad, Iasi'
Modificarea regulii de validare se poate realiza în fereastra Table Designer, Fields,
selectare câmp, Rule, Expression Builder (figura 5):
22
Adăugarea restricţiei de cheie primară pentru coloana codang (tabelul ang),
folosind Table Designer: eticheta Indexes numele indexului – codang, tipul indexului
– primary, ca etichetă – expresia codang (figura 6):
Adăugarea regulii de validare la nivel de câmp: nume să aibă prima literă mare,
iar celelalte litere mici şi funcţie să aibă numai litere mari – în mod vizual (fereastra
Table Designer / Fields / Field validation / Expression Builder), figura 7:
23
Adăugarea restricţiei NULL pentru coloanele manager şi comision:
ALTER TABLE ang ALTER COLUMN manager null
ALTER TABLE ang ALTER COLUMN comision null
Adăugarea cheii externe pentru tabelul ang, coloana nrdepart – coloana comună
cu coloana nrdepart (tabelul părinte depart):
ALTER TABLE ang ADD FOREIGN KEY nrdepart;
TAG nrdepart REFERENCES depart
Comanda MODIFY DATABASE permite vizualizarea relaţiei dintre tabelul părinte
‚depart’ şi tabelul copil ‚ang’ (figura 8) – coloana nrdepart este cheie primară în tabelul
părinte şi cheie externă în tabelul copil:
24
- se activează eticheta Rules for Updating, apoi se alege opţiunea Cascade Updates all
related records in the child table with the new key value
25
Dacă un obiect nu este valid şi nu este refăcut automat, el trebuie şters şi
reconstruit, apoi se refac restricţiile referenţiale.
Observaţii:
Baza de date FIRMA conţine tabelele: DEPART şi ANG în relaţie părinte – copil şi
SALGRD;
tabelul DEPART are cheie primară – nrdepart, ANG are cheie primară – codang,
cheie externă – nrdepart şi tabelul SALGRD are cheie primară – grad;
pentru afişarea, ştergerea sau modificarea unui tabel, se efectuează click dreapta pe
tabelul respectiv pentru alegerea opţiunii respective: Browse, Delete, Modify.
27