Академический Документы
Профессиональный Документы
Культура Документы
Mihaela Georgescu
BAZE DE DATE
1
CUPRINS
2
1. Date, informaţii, cunoştinţe
3
Valorificarea resursei de date se realizează prin prelucrările efectuate cu
ajutorul programelor şi cu sprijinul factorului uman şi al componentei hardware.
Este recunoscut că celelalte trei resurse ale sistemului informatic nu au valoare
efectivă, în lipsa resursei de date.
Prelucrarea electronică a datelor nu trebuie să constituie un scop în sine.
Înlocuirea sau, uneori, dublarea activităţii de înregistrare manuală a datelor prin
înregistrarea lor folosind tehnologia informatică este inutilă dacă, în urma
prelucrării electronice a datelor, nu se obţin efecte suplimentare, cum ar fi:
- înlăturarea unor operaţii manuale de prelucrare;
- realizarea de prelucrări complexe în timp mai scurt sau pentru volume
de date atât de mari încât nu pot fi prelucrate manual;
- creşterea gradului de accesibilitate şi de acurateţe;
- reducerea volumului suporţilor de arhivare a datelor şi creşterea
siguranţei în stocarea şi prelucrarea lor, etc.
Introducerea prelucrării automate a datelor adaugă timpi noi necesari
operaţiilor specifice de prelucrare: proiectarea şi întreţinerea sistemului informatic,
preluarea datelor, validarea şi corectarea erorilor apărute la preluare, prelucrări
suplimentare pentru întreţinerea şi asigurarea datelor.
Un sistem informatic este eficient atunci când asigură, în aceste condiţii:
- diminuarea timpilor necesari operării asupra datelor;
- diminuarea semnificativă a operaţiilor manuale, slab productive;
- un nivel de prelucrare a datelor performat;
- înlăturarea barierelor generate de distanţele fizice, în cadrul sistemului;
- reducerea costurilor implicate de gestionarea datelor;
- o mai bună valorificare a datelor, în sprijinul activităţii întregii
organizaţii.
1
Georgescu C. - "Analiza şi proiectarea sistemelor informatice", Editura Radical, Galaţi,
1999
4
Obiectivul general al dezvoltării sistemului informaţional şi al perfecţionării
acestuia cu ajutorul unui sistem informatic este ridicarea eficienţei activităţii de
bază. Realizarea unui sistem informatic poate determina reorganizarea sistemului
informaţional care-l conţine, putând avea ca efecte:
- integrarea firească, naturală, a sistemului informatic în sistemul
informaţional;
- perfecţionarea sistemului informaţional, prin ameliorarea naturii şi
conţinutului informaţiei vehiculate în sistemul informaţional,
îmbunătăţirea fluxurilor de informaţii, perfecţionarea prelucrărilor
efectuate asupra informaţiei, prin modificarea naturii, locului sau a
periodicităţii acestora, înlăturarea prelucrărilor repetate sau paralele
asupra informaţiilor, etc.
Efectele perfecţionării sistemului informaţional pot fi:
- reducerea caracterului birocratic al sistemul informaţional;
- o mai bună alimentare cu informaţii la toate nivelurile organizatorice,
inclusiv la nivelul conducerii;
- optimizarea prelucrărilor prin înlăturarea redundanţelor operaţionale
sau informaţionale;
- evitarea situaţiilor de alterare, pierdere sau chiar distrugere a
informaţiei, etc.
Obiectivul specific este asigurarea la timp a informaţiilor de calitate necesare
pentru activitatea de bază.
Dacă datele sunt informaţii codificate pentru a fi memorate sau prelucrate într-
un sistem de calcul, informaţia este rezultatul prelucrării datelor în sistemul de
calcul şi exprimării lor într-o formă inteligibilă pentru receptorul uman. Se poate
spune că sistemul informaţional lucrează cu informaţii în timp ce sistemul
informatic lucrează cu date.
Mai general, informaţia poate fi definită ca ansamblul de date care constituie
suportul unui comportament, este comprehensibilă şi este utilizabilă pentru
îndeplinirea unei activităţi, inclusiv un proces decizional1.
Informaţiile sunt destinate nivelurilor şi punctelor de informare sau de decizie,
pentru sistemul dat şi, în cazul sistemelor ierarhizate, pentru nivelurile ierarhic
superioare (ca suport pentru decizie) şi pentru cele inferioare (în cazul
descentralizării procesului informaţional-decizional). Pentru nivelurile superioare
ale ierarhiei, informaţia trebuie supusă unui proces de rafinare, prin concentrare şi
sistematizare, pentru a fi furnizată într-o formă cât mai concisă şi cât mai
expresivă. Circulaţia informaţiei către nivelurile inferioare ale ierarhiei este
practicată în organizaţiile care au în vedere accesul liber la informaţie pentru
membrii lor. În acest caz trebuie folosite metode cât mai eficiente de diseminare a
informaţiei, pentru a se evita alterarea informaţiei transmise, prin învechire,
trunchiere, modificare, etc. O bună soluţie este utilizarea reţelei de calculatoare, ca
suport fizic al sistemului informatic, şi folosirea unui intranet de întreprindere, ca
mediu de comunicare şi gestionare a informaţiei în timp real în cadrul organizaţiei.
1
Fotache M. - "Baze de date relaţionale", Editura Junimea, Iaşi, 1997
5
Informaţia furnizată de un sistem informatic este utilizată în cadrul activităţii
unei organizaţii în scopul cunoaşterii, ca suport pentru decizie. Din acest punct de
vedere, informaţia poate fi definită ca volumul de date necesar pentru a reduce
incertitudinea, în vederea luării unei decizii.
În societatea contemporană, informaţia a devenit una dintre principalele resurse
ale organizaţiilor economice, sociale, culturale, politice, etc. De exemplu în
economie, conform afirmaţiei lui Peter Drucker, "resursa economică de bază nu
mai este capitalul şi nici resursele naturale, nici munca. Ea este şi va fi
cunoaşterea.[…] Valoarea este creată acum de productivitate şi inovaţie, amândouă
fiind aplicări ale cunoaşterii în cadrul muncii."1
Dar cunoştinţele nu sunt altceva decât informaţii dobândite prin experienţă sau
însuşite prin educaţie. La rândul lor, informaţiile sunt reflectări ale lumii reale în
conştiinţa colectivă, în urma unui proces de acumulare şi prelucrare a unor date
elementare.
Alvin Toffler demonstrează importanţa cunoaşterii în cadrul proceselor
economice, concluzionând: "întrucât reduce nevoia de materii prime, muncă, timp,
spaţiu şi capital, cunoaşterea devine resursa centrală a economiei avansate."2
Cunoaşterea se bazează pe informaţii. Corelat cu dezvoltarea explozivă a
tehnologiei informatice din ultimele decenii, este de neconceput, astăzi, gestionarea
informaţiilor fără a utiliza metodele şi instrumentele oferite de aceasta. Pentru a fi
utilizate eficient, volumele mari de informaţii vehiculate în economie, societate,
etc. trebuie gestionate corespunzător, păstrate atâta timp cât sunt necesare,
prelucrate şi furnizate la locul unde sunt necesare şi în momentul când sunt
solicitate.
1
Peter Drucker - "Societatea postcapitalistă" , Editura Image, 1999
2
Alvin Toffler - "Powershift - puterea în mişcare", Editura Antet, 1995
3
Velicanu M.,Bodea C.,Lungu I.,Ioniţă C.,Bădescu G. - "Sisteme de gestiune a bazelor de
date", Editura Petrion, Bucureşti, 2000
6
Un model de date tratează datele în ansamblu, având în vedere modul de
organizare a lor şi modul în care vor fi utilizate în cadrul sistemului informatic.
Obiectivul unui model de date este să reflecte cât mai bine lumea reală, într-o
manieră adecvată reprezentării şi prelucrării datelor folosind tehnologia
informatică, astfel încât să permită sistemului informatic să furnizeze informaţiile
dorite. În consecinţă, pentru a proiecta un bun sistem informatic trebuie să se
pornească de la un bun model de date iar modelele de date nu au valoare în lipsa
unor modele de prelucrări corecte.
Organizarea datelor poate fi abordată sub două aspecte: organizarea fizică a
datelor şi organizarea logică a datelor.
Organizarea fizică a datelor defineşte modul de utilizare a memoriei externe
pentru memorarea datelor şi modalitatea de realizare a accesului la date, în
memoria externă; organizarea fizică a datelor se referă la modul de organizare
fizică a fişierelor în care se memorează datele.
Organizarea logică a datelor defineşte modul de agregare a datelor, în funcţie
de conţinutul lor informaţional şi de legăturile logice dintre ele, precum şi în
funcţie de necesităţile de prelucrare a lor. Organizarea logică a datelor vizează
criteriile de grupare a datelor şi legăturile logice dintre date.
Modul de organizare a datelor în cadrul sistemelor informatice diferă, în
funcţie de complexitatea acestor sisteme şi este influenţat de diferiţi factori:
- volumul şi dinamica datelor gestionate în sistemul informatic;
- tipul de date gestionate de sistem: date statice (numerice, de tip text,
elemente grafice), date multimedia (imagini, imagini animate,
elemente sonore), date interconectate (hipertext sau hipermedia), etc.
- complexitatea prelucrărilor efectuate asupra datelor în sistem;
- gradul de împrăştiere teritorială a componentelor sistemului
informatic: sursele de date, resursele de prelucrare, utilizatorii
informaţiilor furnizate de sistem;
- timpul de răspuns al sistemului informatic, siguranţa în funcţionare,
gradul de accesibilitate al sistemului, ca indicatori ai calităţii şi
eficienţei sale, etc.
În timp, s-a înregistrat o evoluţie a metodelor de organizare şi a tehnicilor de
prelucrare a datelor datorată dezvoltării şi diversificării mijloacelor tehnice ce pot
fi utilizate într-un sistem informatic, cum ar fi dispozitivele de stocare a datelor
(prin creşterea capacităţii de stocare şi a vitezei de transfer, ca şi prin diversificarea
dispozitivelor de stocare direct adresabile) şi echipamentele de preluare şi de
generare a datelor în diverse moduri de reprezentare (date multimedia). Un
exemplu în acest sens îl constituie creşterea capacităţii şi vitezei de prelucrare a
sistemului de calcul şi creşterea capacităţii memoriei interne (operative) şi a
memoriei externe (de arhivare) a sistemului de calcul.
Alte influenţe au apărut prin dezvoltarea componentelor software de bază
(dezvoltarea componentei SGF a sistemelor de operare, sisteme de operare în timp
real, sisteme de operare pentru reţele de calculatoare, etc.), dezvoltarea
componentelor software dedicate gestionării automate a datelor (sistemele de
gestiune a bazelor de date, aplicaţiile pentru gestionarea foilor de calcul
7
electronice, etc.) şi dezvoltarea şi perfecţionarea metodelor de realizare a unui
sistem informatic prin utilizarea unor instrumente performante de proiectare (medii
integrate de proiectare şi dezvoltare, utilizarea unor noi metode de proiectare:
proiectarea obiectuală, proiectarea vizuală, proiectarea distribuită).
Evoluţia modurilor de organizare a datelor în sistemele informatice poate fi
analizată în funcţie de principalii factori care au determinat-o.
1. Dezvoltarea dispozitivelor de memorie externă.
Prin trecerea de la dispozitive care nu permit adresarea directă la dispozitive direct
adresabile a fost posibilă diversificarea modurilor de organizare fizică a fişierelor,
prin trecerea de la organizarea secvenţială la organizarea aleatorie, cu diferitele ei
variante.
2. Evoluţia componentelor software care realizează gestionarea datelor în
fişiere.
Într-o primă etapă, organizarea datelor în fişiere era gestionată, în mare
măsură, în cadrul programului de aplicaţie; pentru definirea şi utilizarea unui fişier,
era necesară atât descrierea structurii logice de organizare a datelor în fişier cât şi a
structurii fizice de memorare a datelor pe suport; în aceste condiţii, modificarea
structurii datelor sau a suporţilor de memorare impunea modificări în program şi
recompilarea acestuia.
Prin dezvoltarea componentei SGF a sistemului de operare, gestionarea la
nivelul fizic, al suportului de memorie externă, a datelor din fişier se realizează, în
mare măsură, de către aceasta, în mod transparent pentru utilizator. Comenzile care
se adresează SGF-ului pentru realizarea operaţiilor cu fişierele sunt generate în
cadrul programului executabil de către compilatorul limbajului de programare
utilizat pentru definirea aplicaţiei utilizator. În aceste condiţii, în programul de
aplicaţie nu mai este necesară descrierea modului de organizare fizică a datelor pe
suportul de memorie externă, ci este definită numai structura logică a datelor din
fişier.
Prin scoaterea descrierii nivelului fizic de organizare a fişierelor în afara
codului aplicaţiilor se realizează o independenţă a programelor faţă de
caracteristicile fizice ale organizării datelor în fişiere (unitatea de memorie externă
folosită pentru memorare, modul de realizare a alocării suportului, modul de
realizare efectivă a accesului la date, etc.); această independenţă este numită
independenţa fizică a datelor şi permite ca modificări ale configuraţiei hardware de
memorare a datelor să nu influenţeze asupra programelor de aplicaţie ce lucrează
cu datele respective.
3. Evoluţia cerinţelor de utilizare a aplicaţiilor informatice.
Dacă aplicaţiile informatice nu fac decât să transpună procedurile manuale de
prelucrare a datelor în proceduri automate, executate cu ajutorul tehnicii de calcul,
modul de organizare a datelor copie, practic, metodele de organizare a informaţiei
caracteristice sistemelor de prelucrare manuală şi mecanografică a datelor,
adaptându-le, fără prea multe modificări conceptuale, la noul specific al prelucrării
datelor cu ajutorul calculatorului electronic. Principalul element de organizare a
datelor folosit, în acest caz, este fişierul. Modelul corespunzător prelucrării
manuale a informaţiei este cel al fişelor cu înregistrări de aceeaşi natură, grupate în
8
dosare sau dulapuri cu documente de acelaşi tip sau al registrului de evidenţă cu
acelaşi tip de informaţii, ordonate după un anumit criteriu.
Odată cu creşterea complexităţii aplicaţiilor şi a volumelor de date prelucrate,
apare ca o necesitate abordarea unitară a datelor de către mai multe aplicaţii din
cadrul unui sistem informatic. Chiar dacă aplicaţiile sunt proiectate independent,
este preferabil ca mai mulţi utilizatori, prin intermediul unor aplicaţii diferite, să
poată folosi în comun aceeaşi colecţie de date. Pentru aceasta, datele trebuie
organizate astfel încât să poată satisface cerinţele de prelucrare ale fiecărui
utilizator, respectiv ale fiecărei aplicaţii, fără să apară o redundanţă a informaţiei.
Acest deziderat se poate realiza prin înlocuirea grupurilor de fişiere destinate unor
aplicaţii particulare cu un sistem complex de elemente de date a căror organizare
este determinată de legăturile logice intrinseci existente între acestea şi mai puţin
de modul de prelucrare din cadrul fiecărei aplicaţii1.
Cerinţa de control şi minimizare a redundanţei în reprezentarea datelor, este
numită cerinţă de integrare a fişierelor de date care se poate rezolva prin definirea
unor legături între înregistrările fişierelor ale căror date sunt corelate logic între ele.
Dacă aceste legături dintre date sunt definite în interiorul fişierelor, rezultă fişiere
cu înregistrări înlănţuite, numite fişiere înlănţuite sau integrate. Fişierele integrate
permit realizarea mai multor fişiere logice pe baza aceloraşi date fizice2.
Acest mod de organizare a datelor permite obţinerea unor imagini diferite ale
datelor memorate în fişierele integrate şi reducerea riscului privind inconsistenţa
datelor, ca urmare a reducerii redundanţei lor. Se poate realiza astfel o primă formă
de abordare unitară a datelor în cadrul unui sistem informatic.
Pentru conceperea unui model unitar al datelor, pentru întregul sistem
informatic, model care să permită satisfacerea nevoilor informaţionale ale tuturor
aplicaţiilor din sistem, este însă necesară abordarea globală a proiectării sistemului
informatic, începând cu proiectarea structurilor de date şi construind, în jurul
acestor structuri, aplicaţiile particulare. Pentru a fi posibilă o astfel de abordare
trebuie îndeplinite o serie de cerinţe.
Organizarea logică a datelor trebuie definită pornind de la conţinutul logic al
datelor şi de la raporturile obiective care se stabilesc între aceste date, în cadrul
sistemului informaţional, şi nu pornind de la necesităţile de prelucrare a datelor,
care pot fi limitate la un anumit obiectiv, un anumit orizont de timp, sau un anumit
grup de utilizatori.
În realizarea sistermelor informatice nu mai este posibilă proiectarea empirică
a aplicaţiilor, ci este necesară utilizarea unor metode de proiectare, care să
furnizeze instrumente de lucru care să permită abordarea globală a proiectării
sistemului informatic. În acest scop au fost dezvoltate metode de proiectare a
sistemelor informatice care folosesc ca instrument de lucru modele pentru
descrierea realităţii de la care se porneşte şi a rezultatelor dorite (modele ale
1
Dollinger R. - "Baze de date şi gestiunea tranzacţiilor", Editura Albastră, Cluj-Napoca,
1998
2
Dollinger R. – op. cit.
9
fluxurilor informaţionale şi ale prelucrărilor din cadrul sistemului informaţional sau
modele ale organizării datelor în cadrul sistemului informatic).
Pentru obţinerea unor performanţe reale este necesară realizarea unei
dependenţe minime a aplicaţiilor faţă de modul de organizare logică a datelor,
astfel încât o modificare în structura datelor să nu necesite modificarea tuturor
aplicaţiilor construite în jurul acestor structuri de date. În acest scop a fost scoasă în
afara programelor de aplicaţie şi descrierea organizării logice a datelor din fişiere,
aceasta fiind memorată solidar cu datele la care se referă, într-o structură de date
numită bază de date.
10
2. Organizarea datelor în fişiere
11
- fişiere cu format fix: acele fişiere care au toate articolele de aceeaşi
lungime;
- fişiere cu format variabil, care au articole de lungimi diferite; pentru a
putea fi prelucrate articolele acestor fişiere de către SGF, trebuie
cunoscută lungimea fiecărui articol; aceste informaţii se memorează în
antetul articolului;
- fişiere cu format nedeterminat, pentru care lungimea articolelor nu este
precizată, articolele fiind separate între ele prin caractere speciale,
numite delimitatori de articol.
12
3. Organizarea datelor în baze de date
O bază de date este un ansamblu unitar de date, structurate, corelate logic între
ele şi memorate împreună cu descrierea formală a structurii lor şi a legăturilor
logice dintre ele, a cărui gestionare este realizată de un sistem software unitar şi
specializat, numit sistem de gestiune a bazei de date.
Termenul de bază de date a apărut în anii ’60, dar momentul consacrării
termenului se consideră a fi în 1969, când se publică în raportul CODASYL
(Conference On Data System Language) prezentarea conceptului de bază de date.
O bază de date poate fi privită ca o colecţie de date memorate în fişiere
intercorelate şi definite logic sub formă de tabele, alcătuite din linii ce corespund
înregistrărilor din fişiere şi din coloane ce corespund câmpurilor din înregistrări.
Într-o bază de date, datele sunt structurate, neredundante, corelate logic,
consistente, independente de orice program de aplicaţie, şi pot fi direct accesibile
după mai multe criterii.
Într-o bază de date se memorează atât datele propriu-zise, cât şi informaţii ce
conţin descrierea modului de memorare a acestor date: formatele de descriere a
datelor, modul de organizare a lor, legăturile dintre date, etc. Datele despre datele
unei baze de date se numesc metadate iar descrierea formală referitoare la structura
datelor şi la legăturile dintre date se memorează în dicţionarul de date organizat tot
sub formă de fişier. Pe baza informaţiilor memorate în dicţionarul de date se
realizează independenţa logică a datelor, care înseamnă limitarea influenţei pe care
modificarea organizării logice a datelor o poate avea asupra aplicaţiilor care
utilizează aceste date.
Importanţa dicţionarului de date este dată de conţinutul şi rolul său în
exploatarea datelor din baza de date. El cuprinde informaţii despre structura
datelor, restricţiile la care se supun datele şi raporturile logice dintre date. Lucrul
cu fişierele de date se derulează exclusiv prin consultarea acestui dicţionar de date.
O altă cerinţă la care răspunde o bază de date se referă la necesitatea de a putea
gestiona datele astfel organizate independent de orice program de aplicaţie şi în
mod unitar pentru întreaga bază de date. În acest scop s-au dezvoltat aplicaţii
specializate în gestionarea bazelor de date numite Sisteme de Gestiune a Bazelor de
Date (SGBD). Un SGBD este o componentă software complexă care, pe lângă
serviciile de definire, generare şi exploatare a unei baze de date, prin consultare sau
prin prelucrări asupra datelor, asigură gestionarea automată a accesului unitar la
datele din baza de date, precum şi protecţia acestora faţă de accese nepermise sau
faţă de alterări accidentale.
13
Student-Nume
Student 4 26 Marca Struct. Student Ion A.
Ionescu P.
Materie 3 24 Cod Marca N 3
Matei V.
Nume C 20 Student
Oprea N.
Student - 2 67 Cod -s Varsta N 2
Popescu C. 205 Ionescu P. 20 B
Marca Sex C 1
Vasilache I. 170 Vasilache I. 22 B
Student - 2 24 Nume -s Struct. Materie Student-Marca
223 Popescu C. 19 F
Nume Cod C 2 103
291 Matei V. 21 F
Materie - 2 6 Cod -m Den C 20 111
Cod Ore N 2 170 111 Oprea N. 22 B
Conţinutul unei baze de date poate fi împărţit în patru categorii de date (figura 4-1).
1. Datele utilizatorilor sunt memorate fizic în fişiere şi descrise logic sub
formă de tabele, cu câmpurile pe coloane şi înregistrările pe linii.
Pentru fiecare tabelă de date se defineşte structura tabelei, care
reprezintă o descriere completă a tuturor câmpurilor din tabelă, şi a
proprietăţilor fiecărui câmp. Generarea unei noi tabele în baza de date
se face întotdeauna prin definirea, mai întâi, a structurii tabelei, după
care pot fi memorate datele propriu-zise din tabelă. Pentru fiecare
tabelă de date se poate defini o tabelă de index, care permite accesul
direct la înregistrările tabelei de date sau parcurgerea tabelei de date
într-o anumită ordine. În acest caz, accesul la o înregistrare se face pe
baza valorii unei combinaţii de câmpuri din tabela de date, numită
cheie de indexare. Majoritatea SGBD-urilor permit definirea mai
multor chei de indexare pentru o singură tabelă de date.
2. Metadatele bazei de date (dicţionarul de date) conţin descrierea
structurii tabelelor de date ale bazei de date şi a legăturilor logice
dintre date. Această descriere este memorată în tabele, numite tabele
sistem. Exemple de metadate ale bazei de date, incluse în tabelele
bazei de date sunt:
14
- tabelul tabelelor bazei de date care conţine, pentru fiecare
tabelă de date a bazei de date, câte o linie cu câmpurile: nume
tabelă, număr câmpuri din tabelă, lungimea totală a unei
înregistrări din tabelă, numele cheii primare de indexare din
tabelă, etc.;
- descrierea structurii unei tabele de date a bazei de date care
conţine, pentru fiecare câmp al tabelei, câte o înregistrare cu:
numele câmpului, tipul datei memorate în câmp, lungimea
câmpului, valoarea implicită, etc.
3. Tabelele de index sunt definite cu rolul de a mări accesibilitatea datelor
şi pentru a îmbunătăţi performanţele de exploatare ale bazei de date.
Sunt structuri de date specializate, folosite pentru accelerarea accesului
la date şi pentru a permite parcurgerea şi prelucrarea bazei de date într-
o ordine dorită a înregistrărilor. Tabelele de index asociate unei tabele
de date se memorează în fişiere numite fişiere de index, conform
modului de organizare indexată a fişierelor. În funcţie de SGBD, pot fi
definite:
- fişiere de index simplu, în care se memorează o singură tabelă
de index asociată fişierului de date
- fişiere de index multiplu, în care se memorează mai multe
tabele de index asociate aceluiaşi fişier de date. O tabelă de
index conţine, pentru fiecare înregistrare a tabelei de date la
care se referă, valoarea cheii de indexare şi adresa înregistrării
(determinată de valoarea cheii primare, locaţia fizică pe suport,
etc).
Tabelele de index sunt gestionate de SGBD (de exemplu, SGBD
asigură actualizarea automată a tuturor tabelelor de index deschise
odată cu tabelele de date, în cazul actualizării tabelelor de date).
4. Metadatele aplicaţiilor sunt descrieri structurate ale unor prelucrări
asupra datelor din baza de date care se memorează solidar cu datele, în
baza de date. Astfel de prelucrări pot avea în vedere controlul asupra
datelor memorate în baza de date prin: calcularea automată a valorii
unor câmpuri din baza de date, validarea datelor memorate în baza de
date, verificarea şi asigurarea corectitudinii corelaţiilor logice dintre
datele memorate în baza de date, etc. O altă categorie de prelucrări
descrise prin metadatele aplicaţiilor memorate în baza de date au ca
scop obţinerea unor imagini particulare a datelor din baza de date,
imagini numite vederi ale bazei de date. Vederile definesc viziuni
parţiale asupra bazei de date, conforme cu necesităţi particulare de
prelucrare, prin intermediul unei cereri de interogare a bazei de date
care realizează o descriere specifică a rezultatului dorit. Accesul la
metadatele aplicaţiilor se face numai prin intermediul SGBD.
15
Figura 3-2. Componenţa unei baze de date
16
baza de date. Corespunzător celor trei niveluri de abstractizare, sunt definite cele
trei modele ale bazei de date numite scheme: schema conceptuală (globală),
schema externă (utilizator) şi schema internă (fizică). Aceste trei modele realizează
descrierea bazei de date din trei puncte de vedere diferite, conform celor trei
niveluri de abstractizare a datelor din baza de date.
Nivelul conceptual sau nivelul global de abstractizare a datelor reflectă
imaginea globală a datelor din baza de date, prin prisma organizării logice a acestor
date. Schema conceptuală rezultată trebuie să asigure satisfacerea tuturor cerinţelor
informaţionale asupra bazei de date. Ea defineşte modul de organizare a datelor în
baza de date din punct de vedere logic (organizarea datelor în entităţi logice,
caracterizate de anumite proprietăţi şi corelări logice) şi realizează modelarea
realităţii considerate, asigurând independenţa descrierii datelor faţă de
echipamentul şi tehnologia de memorare folosite. Baza de date este descrisă prin
intermediul unor structuri care alcătuiesc schema conceptuală. În definirea schemei
conceptuale se porneşte de la baza de cunoştinţe a sistemului informaţional, care
cuprinde: datele ce pot fi colectate din sistem şi restricţiile ce se aplică acestor date,
cerinţele de integrare a datelor (corelaţiile logice dintre date), regulile de gestiune a
datelor (metode şi algoritmi de prelucrare a datelor). Schema conceptuală
integrează viziunile tuturor utilizatorilor asupra bazei de date, pentru a face posibilă
utilizarea în comun a bazei de date de către aceştia. Odată definită, schema
conceptuală trebuie confruntată cu universul real pentru sesizarea şi rezolvarea
eventualelor lipsuri şi neconcordanţe. Datorită caracterului său global şi unitar,
schema conceptuală trebuie gestionată de o singură persoană.
Nivelul extern (nivelul utilizator) de abstractizare a datelor defineşte logic
segmente ale bazei de date, care reprezintă viziuni parţiale asupra ei, caracteristice
unor anumiţi utilizatori, respectiv unor anumite aplicaţii care exploatează baza de
date. Nivelul extern evidenţiază necesităţile informaţionale ale unui utilizator sau
grup de utilizatori referitoare la un segment din baza de date prin intermediul unei
sub-scheme sau scheme externe a bazei de date. Prin intermediul schemei externe,
utilizatorul are o viziune (vedere) parţială asupra bazei de date (o viziune de
ansamblu asupra întregii baze de date se asigură numai la nivelul schemei
conceptuale). Schemele externe trebuie corelate cu schema conceptuală iar
cerinţele informaţionale ale nivelului extern care nu sunt satisfăcute de schema
conceptuală trebuie să determine o reconsiderare a schemei conceptuale.
Informaţiile din schemele externe pot fi preluate ca atare din schema conceptuală
sau pot fi obţinute din aceste informaţii, prin prelucrări specifice (calcule,
combinări, ordonări, selecţii) generând imagini virtuale ale bazei de date, numite
vederi. Vederile reprezintă unităţi logice virtuale ale bazei de date care au rolul de
a oferi utilizatorilor, selectiv, anumite date ale bazei de date şi de a ascunde restul
datelor din baza de date, pentru aceşti utilizatori.
Nivelul intern de abstractizare a datelor (nivelul fizic) reflectă modul de
organizare a datelor pe suportul de memorie externă. Nivelul intern priveşte baza
de date ca pe o colecţie de fişiere memorate pe diferite medii de memorie externă şi
defineşte modalitatea prin care datele din baza de date sunt organizate în fişiere ale
bazei de date. Structura bazei de date este definită, la acest nivel, prin schema
17
internă a bazei de date, care descrie fişierele utilizate şi modul lor de operare. Ea
este gestionată de SGBD, prin motorul său. Definirea schemei interne a bazei de
date se face automat, de componentele SGBD, în momentul generării bazei de date.
Pentru definirea schemei interne, se precizează fişierele bazei de date, fişierele de
index, tipurile de înregistrări utilizate, modul de acces la fişiere, unităţile de
memorie externă folosite, etc. Interacţiunea utilizatorului cu nivelul intern se face
prin intermediul SGBD, prin componenta sa (gestionarul BD) care colaborează cu
sistemul de operare (SGF) pentru a asigura gestionarea fişierelor bazei de date.
Administrator
de
intreprindrere
Elaborarea
Administrator Administrator
schemei
baza de date de aplicatie
conceptuale
Elaborarea Elaborarea
schemei schemei
interne externe
Program de Program de
aplicatie la aplicatie la
nivel intern nivel extern
Programator Programator
de sistem de aplicatie
18
definite pentru a deservi toţi utilizatorii şi pentru a satisface toate aplicaţiile
existente.
2. Administratorii de aplicaţie sunt responsabili cu dezvoltarea schemelor
externe pentru diverse aplicaţii care lucrează cu baza de date şi pentru a
oferi grupurilor de utilizatori diferite vederi asupra bazei de date.
3. Administratorul bazei de date este cel care defineşte schema internă a bazei
de date, care implementează şi întreţine baza de date din punctul de vedere
al organizării ei pe nivelul fizic.
Metodologia de concepere a unei baze de date porneşte de la necesitatea
realizării, mai întâi, a schemei conceptuale, care se confruntă cu schemele externe
şi din care, în final, derivă schema internă.
Un alt model al arhitecturii funcţionale a unui SGBD este modelul CODASYL,
elaborat cu ocazia Conferinţei de normalizare a limbajelor pentru baze de date
(Conference on Data Systems Language) din 1971.
NIVELUL
COMPONENTA FUNCŢIA SCHEMA GESTIONARUL
FUNCŢIONAL
SGBD SGBD DE DATE SCHEMEI
AL SGBD
asigură nivelul
NIVEL administratorul
subsistemul de de descriere a schema
aplicaţiei
EXTERN programare aplicaţiilor şi a externă
bazei de date
implementează
NIVEL subsistemul nivelul logic schema administratorul
CONCEPTUAL run-time de descriere a conceptuală întreprinderii
datelor
implementează
NIVEL nivelul fizic de schema administratorul
motorul SGBD
INTERN descriere a internă datelor din BD
datelor
Figura 3-4. Modelul CODASYL
Acest model descrie funcţionarea unui SGBD printr-o schemă care pune în
evidenţă cele trei niveluri de abstractizare a datelor în baza de date, cele trei
scheme care modelează baza de date precum şi cele trei componente funcţionale
ale SGBD care operează asupra bazei de date, utilizând cele trei categorii de
informaţii codificate în baza de date: datele, metadatele şi programele, cu care
operează pe rând, ca de exemplu în următorul model de prelucrări pentru
consultarea bazei de date:
1. Utilizatorul formulează cererea de acces la datele din baza de date cu
ajutorul instrumentelor oferite de subsistemul de programare, pornind de la
o schemă externă proprie.
19
2. Subsistemul run-time consultă dicţionarul de date pentru a identifica datele
cerute, conform schemei conceptuale, determină coordonatele logice ale
datelor: tabelul, linia şi coloanele dorite, după care transmite comanda de
acces la date către gestionarul bazei de date inclus în motorul SGBD.
3. Gestionarul bazei de date analizează comanda, consultă structura fizică a
bazei de date şi generează comanda adresată gestionarului fişierelor, pentru
accesul fizic la date; accesul la date se face conform regulilor de integritate
a bazei de date memorate în dicţionarul de date şi a drepturilor de acces ale
utilizatorului la date, verificate de această componentă a motorului SGBD.
4. Schimbul de date între memoria externă şi memoria internă se face sub
controlul sistemului de operare, la nivel de bloc, în memoria tampon
(buffer) a bazei de date.
5. Gestionarul bazei de date selectează din buffer numai datele solicitate
(operaţia de deblocare) şi face transformările definite prin corespondenţa
dintre schema conceptuală şi schema externă, furnizând utilizatorului
numai rezultatele solicitate, prin intermediul subsistemului run_time.
6. În orice fază a execuţiei, SGBD avertizează utilizatorul în cazul derulării
anormale a operaţiilor.
20
asupra datelor, numite restricţii de integritate şi memorate în baza de date.
Siguranţa unei baze de date se referă la toleranţa acesteia faţă de defecte şi la
capacitatea de recuperare după apariţia unui defect1.
Se numeşte tranzacţie unitatea logică de prelucrare asupra unei baze de date
care include setul complet de operaţii elementare care trebuie executat în vederea
realizării unei tranziţii, pentru asigurarea consistenţei şi siguranţei bazei de date.
Derularea unei tranzacţii se poate realiza cu succes sau cu incident. În cazul în care
tranzacţia se derulează cu succes, de la prima la ultima operaţie, atunci ea se
încheie printr-o operaţie de validare a tranzacţiei (commit). Validarea tranzacţiei
are un dublu efect: indică SGBD faptul că rezultatele tranzacţiei sunt corecte, deci
pot fi reflectate în baza de date, devenind vizibile altor tranzacţii şi indică faptul că
efectele tranzacţiei sunt ireversibile în baza de date (ele nu mai pot fi anulate prin
operaţia de rollback). În cazul apariţiei unor incidente în timpul tranzacţiei (de
exemplu nu poate fi accesată o tabelă a bazei de date), efectul tranzacţiei poate fi
anulat printr-o operaţie de abandonare a tranzacţiei. La abandonare, execuţia
tranzacţiei este oprită şi se reface imaginea iniţială a bazei de date (rollback).
Pentru a asigura consistenţa şi siguranţa bazei de date, o tranzacţie trebuie să
satisfacă cele patru condiţii definite prin acronimul ACID (Atomicitate,
Consistenţă, Izolare, Durabilitate)2.
Atomicitatea unei tranzacţii se referă la caracterul unitar al operaţiilor cu baza
de date pe care le presupune tranzacţia; condiţia de atomicitate impune ca o
tranzacţie să fie validată numai după executarea completă a operaţiilor pe care le
presupune. O tranzacţie întreruptă prematur trebuie tratată de SGBD pentru a fi
încheiată, fie prin continuare, dacă este posibil, fie prin abandonare, cu anularea
efectelor execuţiei sale.
Consistenţa unei tranzacţii se referă la necesitatea ca modificările efectuate în
baza de date să fie făcute cu respectarea regulilor de integritate a bazei de date,
pentru a garanta consistenţa bazei de date. Asigurarea consistenţei unei tranzacţii
prin verificarea respectării regulilor de integritate nu poate fi realizată integral, în
mod automat, numai de către SGBD. O parte dintre verificări trebuie să fie
proiectate în mod explicit în aplicaţia care a generat tranzacţia.
Izolarea unei tranzacţii se referă la principiul de execuţie a tranzacţiei prin care
rezultatele unei tranzacţii devin accesibile în baza de date pentru alte tranzacţii
numai după validarea tranzacţiei respective. În caz contrar, dacă o altă tranzacţie ar
putea utiliza rezultatele modificărilor parţiale realizate de tranzacţie şi dacă această
tranzacţie ar fi abandonată, cu refacerea imaginii iniţiale a bazei de date, atunci şi
tranzacţia care a folosit rezultatele parţiale ar trebui abandonată. Un astfel de
proces ar putea genera un lanţ de abandonuri (efectul domino), de o lungime
nedeterminată, greu de controlat şi care ar putea conduce la pierderea consistenţei
bazei de date.
Durabilitatea tranzacţiei este proprietatea prin care se garantează că o tranzacţie
validată este ireversibilă. După validarea tranzacţiei, SGBD permite reflectarea
1
Dollinger R. - op. cit.
2
idem.
21
rezultatelor tranzacţiei în baza de date, pentru a deveni accesibile şi altor tranzacţii.
Dacă după validarea tranzacţiei apare un incident care să împiedice consemnarea în
baza de date a rezultatelor tranzacţiei validate, SGBD dispune de mijloace pentru a
relua procesul de scriere în baza de date a rezultatelor tranzacţiei, după înlăturarea
incidentului. De obicei, SGBD foloseşte, în acest scop, metoda jurnalizării tuturor
operaţiilor efectuate în timpul unei tranzacţii; jurnalul este folosit de procedurile
SGBD de refacere a imaginii bazei de date, în caz de incident.
Respectarea proprietăţilor de atomicitate şi de consistenţă asigură caracteristica
definitorie a tranzacţiei, faptul că generează o realizare consistentă a bazei de date.
Respectarea proprietăţilor de izolare şi de durabilitate ale tranzacţiilor garantează
imposibilitatea apariţiei efectului domino în cazul desfăşurării unor tranzacţii
concurente asupra bazei de date.
Siguranţa bazei de date este realizată prin operaţia de rollback, dacă defectul în
baza de date apare în timpul desfăşurării unei tranzacţii. Pentru a contracara
incidentele care pot altera baza de date între două tranzacţii succesive se foloseşte
metoda jurnalizării tranzacţiilor efectuate asupra bazei de date; în acest fel se poate
restabili în orice moment imaginea bazei de date anterioară producerii defectului,
pornind de la o imagine de siguranţă a bazei de date şi refăcând asupra acestei
imagini toate tranzacţiile efectuate până în momentul apariţiei incidentului care a
alterat baza de date.
Consistenţa bazei de date este asigurată de respectarea restricţiilor de
integritate. Restricţiile de integritate ale unei baze de date sunt definite prin
intermediul unor reguli de integritate a bazei de date. Regulile de integritate pot fi:
implicite (restricţiile privind valorile admisibile ale datelor sunt determinate
implicit de tipul de dată care le este asociat) sau explicite (liste de valori sau
intervale în care poate lua valori un câmp din baza de date). Regulile explicite pot
fi definite şi prin intermediul unor secvenţe de cod care pot fi generate de
proiectantul aplicaţiei (de exemplu rutinele de validare, definite pentru un câmp
din baza de date sau pentru o întreagă linie dintr-o tabelă a bazei de date) sau de
componenta de proiectare a SGBD, în mod automat (de exemplu regulile de
integritate referenţială implicit generate de SGBD la definirea unei baze de date
relaţionale, în funcţie de opţiunile proiectantului bazei de date).
Un exemplu de rutine de validare generate automat de SGBD pentru
implementarea unor restricţii de integritate sunt cele care asigură respectarea
regulii de integritate referenţială pentru o bază de date relaţională. Într-o bază de
date relaţională se stabilesc legături logice între perechi de înregistrări din tabele
diferite care au în comun seturi de câmpuri ce formează perechi de forma (cheie
primară, cheie străină). Tabela care conţine cheia străină se numeşte tabelă fiu, iar
tabela în care cheia respectivă este cheie primară se numeşte tabelă părinte. Regula
de integritate referenţială impune condiţia ca fiecare valoare a cheii străine să se
regăsească printre valorile cheii primare. Pentru asigurarea respectării regulii de
integritate referenţială, SGBD oferă următoarele variante de validare automată a
actualizării unei înregistrări în una din cele două tabele:
22
- în cazul adăugării unei noi înregistrări în tabela fiu, adăugarea poate fi
interzisă (restrict) dacă în tabela părinte nu există o înregistrare a cărei
cheie primară să aibă valoarea cheii străine din înregistrarea care se
adaugă;
- în cazul ştergerii unei înregistrări din tabela părinte, dacă există înregistrări
în tabela fiu a căror cheie străină are aceeaşi valoare cu cheia primară a
înregistrării care se şterge, ştergerea este interzisă (restrict) sau se
realizează ştergerea în cascadă (cascade), adică se şterge înregistrarea din
tabela părinte şi toate înregistrările corespunzătoare din tabela fiu;
- în cazul modificării cheii primare a unei înregistrări din tabela părinte, dacă
există înregistrări în tabela fiu a căror cheie străină are aceeaşi valoare cu
cheia primară care se modifică, modificarea este interzisă (restrict) sau se
realizează modificarea în cascadă (cascade), adică se modifică înregistrarea
din tabela părinte şi toate înregistrările corespunzătoare din tabela fiu.
Unul dintre avantajele gestionării datelor prin intermediul unui SGBD este
faptul că se poate asigura un anumit nivel de libertate în realizarea modificărilor
asupra modului de organizare a datelor care să nu afecteze modul de utilizare a lor.
Acest lucru este posibil datorită modelului de organizare a SGBD pe trei niveluri
de abstractizare a datelor. Posibilitatea modificării descrierii datelor pe un nivel de
abstractizare, fără a afecta descrierile de pe celelalte niveluri defineşte gradul de
autonomie a datelor din baza de date. Se delimitează două niveluri de autonomie a
datelor în baza de date:
1. Autonomia fizică asigură faptul că se poate modifica schema internă fără a
afecta celelalte niveluri (nivelurile logice de descriere a bazei de date).
Autonomia fizică are următoarele caracteristici:
- se foloseşte pentru ameliorarea performanţelor de lucru cu baza de date
(dimensiunea fişierelor, viteza de acces la date) prin modificarea suportului
de memorie externă folosit, a organizării fizice a datelor pe suport, a
platformei de calcul utilizate, etc.;
- este necesară pentru a asigura portabilitatea1 bazei de date de la o
platformă la alta;
- este asigurată prin interacţiunea SGBD cu sistemul de operare, în primul
rând cu sistemul de gestiune a fişierelor;
2. Autonomia logică permite modificarea schemei conceptuale sau a schemei
externe a bazei de date fără a fi necesară rescrierea programelor de aplicaţie
care lucrează cu baza de date. Autonomia logică are următoarele trăsături:
- este necesară când se extinde sfera informaţională acoperită de sistemul
informatic, se dezvoltă o nouă aplicaţie sau apar noi informaţii ce trebuie
prelucrate în aplicaţiile existente;
- deşi în general noi categorii de date presupun şi noi prelucrări, nu este
obligatorie modificarea aplicaţiilor existente pentru implementarea noilor
1
Portabilitatea unei componente software reprezintă posibilitatea de a utiliza acea
componentă pe sisteme de calcul diferite sau sub sisteme de operare diferite
23
categorii de date pentru că prelucrări noi referitoare la aceste date pot fi
memorate şi în baza de date, în componenta de metadate ale aplicaţiilor;
- este asigurată prin intermediul dicţionarului de date care este
consultat de SGBD în vederea accesării bazei de date.
24
8. Pentru actualizarea bazei de date şi pentru definirea aplicaţiilor cu baza de date,
SGBD oferă utilizatorilor profesionişti instrumente de proiectare (limbaje de
manevrare a datelor din baza de date - LMD), generatoare automate de cod sau
chiar medii de proiectare a sistemului informatic ce utilizează baza de date.
9. SGBD poate asigura confidenţialitatea datelor din baza de date prin atribuirea
de drepturi de acces utilizatorilor şi identificarea acestora prin intermediul unui
sistem de parole, prin implementarea unor mecanisme de criptare a datelor din
baza de date şi prin intermediul vederilor asupra bazei de date, care oferă
utilizatorilor imagini parţiale ale bazei de date, conform schemelor externe
definite de aceşti utilizatori.
10. SGBD asigură integritatea bazei de date, prin gestionarea unor proceduri
automate sau definite de proiectantul bazei de date care să permită refacerea
imaginii bazei de date în cazul alterării conţinutului ei în urma unor incidente.
În acest scop, SGBD realizează automat copii de siguranţă care permit
executarea procedurilor de refacere (rollback) sau se poate defini explicit o
procedură completă de asigurare a bazei de date. Spre exemplu, se realizează
salvarea periodică a bazei de date pe un suport sigur de memorie externă, se
realizează jurnalizarea actualizărilor bazei de date, prin memorarea pe un
suport sigur de memorie externă a tuturor tranzacţiilor efectuate de la ultima
salvare a bazei de date şi în caz de incident se restaurează ultima realizare a
bazei de date salvată, după care se refac tranzacţiile efectuate ulterior acestei
salvări, prin consultarea jurnalului.
11. SGBD asigură autonomia fizică a datelor faţă de programele de aplicaţie. Ca
urmare, este posibilă reorganizarea fizică a bazei de date atunci când este
necesar fără a afecta aplicaţiile cu baza de date. De exemplu se realizează
ştergerea fizică a înregistrărilor marcate logic pentru ştergere, se poate
modifica modul de memorare a bazei de date în memoria externă, se poate
modifica sistemul de operare sau configuraţia hardware care suportă baza de
date.
12. SGBD permite monitorizarea activităţii cu baza de date, pentru ameliorarea
performanţelor de exploatare a bazei de date, în scopul minimizării timpului de
răspuns, utilizării optime a memoriei, asigurării unei bune adaptabilităţi a bazei
de date faţă de solicitările utilizatorilor şi a unei bune protecţii a datelor.
Principalele componente ale unui SGBD sunt: motorul SGBD, subsistemul
instrumentelor de proiectare şi subsistemul de execuţie (subsistemul run-time).
Motorul SGBD este un intermediar între subsistemul de proiectare şi
subsistemul run-time al bazei de date, pe de o parte, şi datele din baza de date, pe
de altă parte, pentru realizarea accesului fizic la datele din baza de date. Motorul
SGBD este implicat în gestionarea tranzacţiilor la nivelul unei baze de date,
regăsirea datelor pe baza informaţiilor de adresare din fişierele de index, salvarea şi
restaurarea datelor, blocarea şi deblocarea datelor în cazul operaţiilor fizice la
nivelul memoriei externe. Acţiunile motorului SGBD, în cadrul bazei de date, sunt
realizate unitar, respectând restricţiile impuse de legăturile dintre date şi de regulile
de integritate ale bazei de date, definite în dicţionarul de date. Motorul SGBD
asigură şi interfaţa funcţională pentru operarea modificărilor în structura bazei de
25
date, formulate prin comenzi ale limbajului de descriere a datelor. El gestionează
unitar operaţiile la nivel fizic asupra bazei de date, prin funcţiile îndeplinite de
componentele sale: gestionarul bazei de date şi gestionarul fişierelor:
26
Subsistemul instrumentelor de proiectare al unui SGBD dispune de un set de
instrumente software specializate pentru proiectarea şi generarea bazei de date,
respectiv a aplicaţiilor care descriu modul de utilizare a bazei de date. Această
componentă a SGBD permite definirea structurii tabelelor din baza de date, a
machetelor de interfaţă cu utilizatorul, a formatului rapoartelor şi cererilor de
interogare a bazei de date. Ea poate include:
- limbajul de descriere a datelor (LDD);
- limbaje de manevrare a datelor (LMD);
- limbaje de interogare a bazei de date (LI);
- editoare pentru codul aplicaţiilor;
- generatoare automate de cod, pentru definirea interfeţelor
utilizator, a rapoartelor, a meniurilor aplicaţiilor, etc.;
- sistem de asistenţă on-line pentru autodocumentarea utilizatorului
(componentă de tip Help) etc.
27
- definirea regulilor sintactice de reprezentare a datelor, prin tipul
datelor şi prin formatele de reprezentare;
- definirea restricţiilor semantice la care se supun datele şi care asigură
corectitudinea datelor bazei de date (plaja de valori, formule de calcul
pentru datele derivate din date de bază, rutine de validare a datelor,
etc);
- specificarea legăturilor logice dintre datele bazei de date;
- definirea cheilor de indexare asociate tabelelor bazei de date;
- definirea procedurilor de criptare, dacă este cazul;
- definirea cheilor de confidenţialitate (parole de acces la date).
Limbajele de manevrare a datelor permit descrierea operaţiilor asupra datelor
din baza de date, din punctul de vedere al utilizatorilor. Manevrarea datelor este
termenul generic pentru desemnarea operaţiilor executate asupra datelor din baza
de date care constă, în detaliu, din:
- adăugarea, prin scrierea de noi date în tabelele de date;
- modificarea, prin schimbarea valorii datelor existente;
- ştergerea datelor din tabele ale bazei de date;
- prelucrarea datelor, prin operaţii specifice de tipul ordonării,
interclasării, filtrării sau combinării datelor, în aceeaşi tabelă sau între
tabele ale bazei de date;
- consultarea, adică extragerea unor date din tabele ale bazei de date, în
scopul vizualizării sau prelucrării lor.
Un limbaj de manevrare a datelor permite operarea asupra datelor atât la nivel
logic, prin comenzile utilizatorului, preluate de componenta run-time, folosind
descrierea datelor conform schemei şi sub-schemelor bazei de date cât şi la nivel
fizic, prin descrierea şi implementarea unor algoritmi performanţi de acces la datele
din memoria externă.
După modalitatea de formulare a cererii de identificare a datelor în baza de
date, limbajele de manevrare a datelor se clasifică în două categorii: limbaje
procedurale şi neprocedurale. Limbaje procedurale sunt acele limbaje pentru care
utilizatorul trebuie să precizeze datele pe care doreşte să le acceseze şi modul în
care se obţin aceste date din baza de date. Utilizatorul furnizează o secvenţă de
operaţii executabile într-o succesiune bine precizată şi care se constituie într-o
procedură. Limbaje neprocedurale sunt limbajele în care succesiunea
instrucţiunilor din program nu influnţează decât în mică măsură succesiunea
executării lor. Utilizatorul precizează ce date doreşte doar prin descrierea acestor
date, fără a preciza şi metoda de identificare a lor în baza de date. Limbajele
neprocedurale nu necesită descrierea modului de realizare a accesului la date
pentru că folosesc proceduri standard de acces la date. Modul de formulare a
cererilor într-un limbaj neprocedural este mai apropiat limbajului uman, motiv
pentru care limbajele neprocedurale sunt mai accesibile. Limbajele procedurale
sunt limbaje imperative, în timp ce limbajele neprocedurale sunt limbaje
declarative.
În cadrul limbajelor de manevrare a datelor se includ şi limbajele de interogare
a bazei de date (LI) care permit căutarea şi identificarea datelor în baza de date.
28
Limbajele de interogare se adresează utilizatorului curent al bazei de date, de
obicei neinformatician, motiv pentru care sunt concepute ca limbaje evoluate,
apropiate de limbajul uman, şi sunt definite ca limbaje neprocedurale.
Un limbaj de manevrarea datelor poate să utilizeze un limbaj propriu, autonom
sau un limbaj de programare standard. Conform acestui criteriu, un SGBD poate fi:
autonom sau cu limbaj gazdă. SGBD este autonom atunci când limbajul de
manevrare a datelor are un limbaj de programare propriu şi cu limbaj gazdă, când
limbajul de manevrare a datelor nu are un limbaj propriu iar comenzile sale sunt
implementate prin instrucţiuni scrise în limbajul gazdă al SGBD.
În funcţie de tipul de SGBD, generarea codului executabil pentru comenzile
limbajului de manevrare a datelor se realizează diferit. Pentru SGBD autonome
sunt următoarele variante de transformare a comenzilor limbajului de manevrare a
datelor în cod executabil:
- la execuţia comenzilor, prin interpretarea fiecărei instrucţiuni în
limbajul de manevrare a datelor şi executarea ei imediată (limbajul de
manevrare a datelor este unul de tip interpretativ);
- prin compilarea comenzilor în limbajul de manevrare a datelor şi
generarea unui cod executabil ce va fi executat de motorul SGBD
(limbajul de manevrare este de tip compilativ);
- când SGBD posedă interfaţă pentru un alt limbaj de programare, se
poate realiza traducerea comenzilor formulate în acel limbaj în
secvenţe de cod scrise în limbajul de manevrare a datelor şi
translatarea acestora cu compilatorul propriu, pentru generarea unui
cod executabil.
Pentru SGBD cu limbaj gazdă transformarea comenzilor limbajului de manevrare a
datelor în cod executabil se poate face:
- prin îmbogăţirea compilatorului limbajului gazdă cu comenzile
limbajului de manevrare a datelor, acesta generând cod adresat
motorului SGBD, care va realiza accesul la date;
- prin intermediul unui program pre-compilator, care transformă
programele sursă care includ instrucţiuni ale limbajului de manevrare a
datelor în programe sursă în limbajul gazdă, care sunt apoi compilate
cu compilatorul limbajului gazdă;
- prin intermediul unor subprograme în care comenzile limbajului de
manevrare a datelor sunt apeluri la subprograme scrise în limbajul
gazdă, subprograme aduse apoi în format executabil.
29
descrieri la schema internă a bazei de date. Această operaţie este realizată de
componenta de excuţie a SGBD. De asemenea, pentru a opera cu o vedere a bazei
de date, componenta run-time consultă interfaţa dintre schema externă a bazei de
date şi schema conceptuală, interfaţă care cuprinde regulile de derivare care
definesc vederea. Comenzile, formulate într-un limbaj de manevrare a datelor sau
într-un limbaj de interogare a bazei de date, sunt traduse de modulul translator
specializat, fiind transformate apoi, prin intermediul procesorului de consultare a
bazei de date, în instrucţiuni elementare de lucru cu baza de date care alcătuiesc
tranzacţii şi care sunt adresate gestionarului bazei de date, parte a motorului SGBD.
În plus, la nivelul componentei run-time, se realizează şi o optimizare a modului de
execuţie a comenzilor de consultare a bazei de date, pentru a mări viteza de acces
la baza de date. În cadrul componentei run-time unele SGBD dispun de interfeţe
pentru alte medii de prelucrare a datelor, care permit ca prin comenzi scrise într-un
limbaj exterior, nespecific SGBD, să se poată realiza accesul la datele bazei de
date.
Un obiectiv principal al unui SGBD este de a crea un mediu favorabil
utilizatorilor pentru a lucra cu datele din baza de date. Alături de componentele
software, funcţionarea unei baze de date este de neconceput în absenţa factorului
uman care, după modul de interacţiune cu baza de date, se poate grupa în două
categorii: administratorii (administratorul de întreprindere, administratorii de
aplicaţie, administratorul bazei de date) şi utilizatorii.
30
- definirea arhitecturii bazei de date conform schemei conceptuale, fie prin
utilizarea interactivă a limbajului de descriere a datelor, fie prin executarea
unor proceduri automate de configurare a bazei de date;
- definirea modului de implementare a bazei de date în memoria externă
(organizarea bazei de date în memoria externă) şi a modurilor de acces la
date, prin intermediul limbajului de descriere a datelor;
- gestionarea modificărilor apărute în descrierea bazei de date, la nivelul
schemei conceptuale, sau în implementarea în memoria externă a bazei de
date (modificări privind suportul de memorare sau modul de organizare a
datelor pe suport);
- implementarea restricţiilor privind integritatea bazei de date (acestea se fac
la nivelul schemei conceptuale şi nu la nivelul schemei externe, pentru că
se referă la întreaga bază de date şi nu la părţi ale bazei de date, ce
corespund schemelor externe);
- definirea procedurilor de eroare, în cazul nerespectării regulilor de
integritate a datelor;
- autorizarea accesului la date, prin acordarea de chei de acces şi priorităţi de
acces la utilizatori sau grupuri de utilizatori;
- definirea procedurilor privind asigurarea drepturilor de acces la baza de
date;
- asigurarea legăturii cu utilizatorii, în scopul transferului reciproc de
informaţii privind modul de lucru cu baza de date; de asemenea îi avizează
pe utilizatori cu privire la modificările apărute în modul de lucru cu baza
de date;
- definirea strategiei de asigurare a bazei de date, prin operaţii periodice de
salvare a bazei de date şi prin jurnalizarea tranzacţiilor; în acest scop,
administratorul bazei de date stabileşte calendarul de salvări ale bazei de
date precum şi procedurile de salvare/restaurare corespunzătoare;
- monitorizarea performanţelor bazei de date, pentru îmbunătăţirea
parametrilor de exploatare, mai ales a timpului de răspuns la cereri de
acces la date şi a vitezei de prelucrare a datelor din baza de date.
După natura interacţiunilor cu baza de date şi gradul lor de specializare în
domeniu, utilizatorii bazei de date pot aparţine uneia dintre următoarele categorii:
- utilizatori profesionişti (informaticieni), de exemplu: administratorul bazei
de date, administratorul de intreprindere, administratorii de aplicaţii,
precum şi proiectanţii de aplicaţii;
- utilizatori neinformaticieni, care pot fi: utilizatorii curenţi (intensivi) ai
bazei de date, adică cei care efectuează operaţii de rutină asupra bazei de
date folosind de obicei aplicaţii dedicate, de exemplu pentru actualizarea
bazei de date sau pentru consultări sistematice ale bazei de date şi
utilizatorii ocazionali, care interacţionează cu baza de date prin intermediul
limbajului de interogare a bazei de date pentru a obţine informaţii, ca
răspuns la întrebări ocazionale, de obicei neanticipate.
31
3.3. Baze de date relaţionale
Un pas înainte în tehnica organizării datelor în baze de date a fost făcut atunci
când accesul la date a putut fi descris într-o manieră neprocedurală iar operarea
efectivă asupra datelor s-a putut realiza prin secvenţe de cod scoase în afara
codului de aplicaţie. În acest caz, accesul la date este standardizat şi funcţiile de
acces la date sunt incluse în funcţiile SGBD. Modelul care stă la baza unei astfel de
organizări a datelor este modelul relaţional.
În anii '80 s-a înregistrat o perfecţionare a modului de proiectare şi a condiţiilor
care permit utilizarea optimă a SGBDR1, astfel încât anii '90 marchează o
dezvoltare a activităţii de proiectare de SGBDR. Multe dintre aceste SGBD-uri nu
reuşesc să atingă performanţele solicitate unui SGBDR. Aşa cum calitatea
determinată de organizarea datelor în baze de date nu poate fi asigurată decât sub
controlul unui SGBD, calitatea unui SGBDR nu poate fi asigurată decât în
condiţiile în care acesta respectă specificaţiile modelului relaţional de organizare a
bazei de date.
Pentru a limpezi puţin lucrurile şi pentru a reglementa activitatea de proiectare
şi dezvoltare de SGBDR, Edgar Codd, cercetător la laboratoarele IBM din San Jose
(California), a încercat să sistematizeze şi să prezinte sub o formă unitară sistemul
minimal de reguli pe care trebuie să le respecte un SGBD pentru a putea gestiona o
bază de date relaţională. Modelul relaţional a fost formulat şi publicat pentru prima
oară în 1969 de către Edgar Codd. Acesta a publicat începând din 1970 lucrările
sale de referinţă privitoare la modelul relaţional pentru organizarea datelor în baze
de date. Pornind de la un număr de 13 reguli, în 1986, Codd a ajuns să publice până
la 100 de reguli, în 1990. Pentru a constitui, totuşi, un instrument funcţional, se
consideră că cele 13 reguli definite iniţial sunt suficiente pentru a aprecia dacă, şi
măsura în care, un SGBD este relaţional. Cele 13 reguli ale lui Codd sunt enunţate
în continuare.
Regula 0. Regula de bază - afirmă că pentru a fi relaţional un SGBD trebuie să
gestioneze datele din baza de date exclusiv prin utilizarea mecanismelor relaţionale
care sunt prezentate în următoarele 12 reguli. SGBD gestionează datele din baza de
date prin intermediul componentelor sale:
- LDD pentru definirea schemei relaţionale a bazei de date;
- LMD pentru definirea cererilor de manevrare a datelor din baza de
date;
- componenta run-time pentru interpretarea cererilor de manevrare a
datelor;
- gestionarul bazei de date pentru asigurarea integrităţii şi consistenţei
bazei de date;
1
Sistem de Gestiune a Bazelor de Date Relaţionale
32
- motorul, pentru a interfaţa cererile de acces la date cu implementarea
fizică a bazei de date.
Observaţie: se constată că, practic, nici o implementare de SGBDR nu respectă
această regulă, deoarece toate SGBD-urile care se consideră relaţionale conţin şi
caracteristici nerelaţionale.
Regula 1. Regula reprezentării logice a datelor - afirmă că într-o bază de date
relaţională toate datele trebuie să fie organizate logic într-un singur fel, sub formă
de relaţii memorate în tabele; acest lucru permite ca toate datele din baza de date să
fie prelucrate la fel, chiar dacă sunt date sau metadate.
Observaţie: în opinia lui Codd, un SGBD care nu respectă regula 1 nu este
relaţional.
Regula 2. Regula garantării accesului la date - afirmă că într-o bază de date
relaţională orice dată trebuie să poată fi identificată prin tripleta formată din:
numele tabelei, valoarea cheii primare, numele coloanei din tabelă. Pentru a
respecta această regulă, în orice tabelă a bazei de date trebuie să se respecte ca
reguli de integritate regula unicităţii cheii şi regula entităţii1.
Regula 3. Regula reprezentării valorilor necunoscute sau neacceptate - afirmă
că într-o bază de date relaţională trebuie să se poată utiliza o valoare, notată
convenţional cu null, pentru a face distincţia explicită între datele cărora nu li se
atribuie valoare (pentru că nu este cunoscută sau pentru că nu este acceptabilă) şi
cele care au primit o valoare, fie ea şi 0 sau şirul vid. Această condiţie este necesară
pentru implementarea regulii entităţii şi a regulii integrităţii referenţiale2.
Regula 4. Regula dicţionarului de date - afirmă că descrierea bazei de date
relaţionale trebuie să fie organizată logic la fel cu baza de date astfel încât asupra
metadatelor să se poată opera ca şi asupra datelor din baza de date. În acest scop,
metadatele sunt organizate şi ele în tabele, fapt care permite accesarea metadatelor
prin intermediul aceloraşi mecanisme folosite pentru accesarea datelor. De
exemplu, în acest fel vor putea fi generate noi tabele sau va putea fi modificată
structura unei tabele în mod programatic, în etapa de execuţie a aplicaţiilor (etapa
run-time). În plus, acest mod unitar de organizare logică a întregului conţinut al
bazei de date face ca manevrarea bazei de date să nu depindă de conţinutul ei, deci
să poată fi realizată standardizarea accesului la conţinutul bazei de date; consecinţa
acestei standardizări este scoaterea metodelor de acces la baza de date în afara
aplicaţiilor şi gestionarea lor unitară de către componentele SGBD.
Regula 5. Regula limbajului de cereri - afirmă că un SGBD relaţional trebuie
să ofere cel puţin un limbaj de manevrare a datelor de nivel înalt, care să permită
efectuarea următoarelor operaţii: definirea tabelelor de date şi a tabelelor virtuale
din baza de date, manevrarea datelor, definirea restricţiilor de integritate,
autorizarea accesului la baza de date, definirea tranzacţiilor. Un astfel de limbaj de
cereri pentru baze de date relaţionale este limbajul SQL (Structured Query
Language).
1
vezi mai departe în capitolul curent
2
idem
33
Regula 6. Regula de actualizare a tabelelor virtuale - afirmă că într-o bază de
date relaţională tabelele virtuale (vederile) trebuie să poată fi actualizate. O tabelă
virtuală reflectă automat modificările efectuate asupra datelor pe care le prezintă,
având în vedere faptul că în baza de date nu se memorează conţinutul efectiv al
vederii, în momentul generării ei, ci este memorată numai descrierea modului în
care se poate obţine vederea. Prin intermediul acestei interfeţe între baza de date şi
vedere se pot realiza şi transferurile de valori în sens invers, de la tabela virtuală
către tabela fizică, dar numai în cazul în care destinaţia datelor în baza de date nu
este ambiguă.
Regula 7. Regula limbajului de nivel înalt - afirmă că pentru a fi relaţional un
SGBD trebuie să posede un limbaj de nivel înalt care să permită realizarea
operaţiilor de actualizare a bazei de date la nivelul unei relaţii, aşa cum un limbaj
de interogare permite operaţia de consultare a bazei de date.
Regula 8. Regula independenţei fizice a datelor - afirmă că aplicaţiile care
utilizează o bază de date relaţională nu trebuie să fie influenţate de modificarea
modului de memorare a datelor în memoria externă sau de modul de acces fizic la
date. Această proprietate este garantată de respectarea autonomiei fizice a datelor
din baza de date.
Regula 9. Regula independenţei logice a datelor - afirmă că aplicaţiile care
utilizează o bază de date relaţională nu trebuie să fie afectate de modificarea
schemei relaţionale a bazei de date. Modificarea organizării logice a datelor fără
afectarea programelor de aplicaţie este posibilă datorită autonomiei logice a datelor
din baza de date relaţională.
Regula 10. Regula independenţei mecanismului pentru integritatea datelor -
afirmă că un SGBD relaţional trebuie să asigure independenţa mecanismului de
integritate a bazei de date prin memorarea restricţiilor de integritate în afara
codului de aplicaţie, solidar cu datele din baza de date. În acest fel SGBDR asigură
verificarea automată a respectării regulilor de integritate la actualizarea bazei de
date independent de modul de proiectare a aplicaţiilor utilizator.
Regula 11. Regula independenţei datelor faţă de distribuirea geografică a lor -
afirmă că în cazul utilizării unei baze de date relaţionale în care datele sunt
distribuite SGBD trebuie să asigure gestionarea datelor distribuite într-o manieră
transparentă pentru utilizator şi fără să afecteze cumva programele de aplicaţie. Nu
trbuie să fie necesară modificarea codului de aplicaţie atunci când datele sunt
stocate pe staţii diferite dintr-o reţea de calculatoare.
Regula 12. Regula limbajului procedural (de nivel scăzut) - afirmă că dacă un
SGBDR acceptă un limbaj procedural, de obicei de nivel scăzut, care să permită
prelucrarea tabelelor din baza de date la nivel de tuplu şi nu de relaţie, acest limbaj
nu trebuie utilizat în vederea ocolirii funcţiilor SGBDR de asigurare a integrităţii şi
consistenţei bazei de date. El trebuie să respecte aceleaşi reguli şi restricţii de lucru
cu baza de date relaţională pe care le implementează SGBD prin componentele
sale.
Regulile lui Codd oferă criterii de analiză şi de clasificare a diferitelor SGBDR,
în funcţie de modul în care acestea le respectă. Indiferent de măsura în care
respectă regulile lui Codd, cerinţele considerate minimale pentru un SGBDR sunt:
34
- organizarea în relaţii a datelor din baza de date;
- între tabelele bazei de date să nu existe pointeri gestionaţi în mod
explicit de utilizatori;
- dintre operatorii relaţionali să fie implementaţi operatorul de selecţie,
de proiecţie şi de uniune naturală1.
Un SGBD este considerat complet relaţional dacă este un SGBDR minimal şi,
în plus:
- asigură toate operaţiile de bază ale algebrei relaţionale;
- asigură regula entităţii, regula unicităţii cheii precum şi restricţia
referenţială.
Toate aceste caracteristici care definesc un SGBDR vor fi prezentate în continuare.
Modelul relaţional a pornit de la un concept matematic: noţiunea de relaţie din
teoria mulţimilor şi de la un model teoretic fundamentat matematic: modelul
algebrei relaţionale. Avantajele utilizării acestui model matematic pentru
dezvoltarea unui model de organizare a datelor într-o bază de date sunt
următoarele:
- oferă un instrument de studiu teoretic al proprietăţilor logice ale bazelor de
date relaţionale, care are avantajul că permite proiectantului bazelor de date
să ia o decizie privind cea mai bună cale de proiectare a unei baze de date
relaţionale precum şi calea optimă de utilizare a ei, pornind de la
proprietăţile teoretice ale modelului de organizare a datelor folosit; pe
aceste proprietăţi teoretice se bazează şi metodele de proiectare a
sistemelor informatice ce utilizează baze de date relaţionale;
- deşi iniţial el a fost considerat doar un instrument teoretic pentru studiul
proprietăţilor bazelor de date, pe măsura dezvoltării accelerate a
performanţelor echipamentelor de calcul electronic s-a constatat că
modelul relaţional poate fi implementat ca o soluţie viabilă de organizare a
datelor şi de proiectare a unui SGBD corespunzător; acest model oferă o
manieră simplă de formalizare a structurii bazei de date şi un sistem de
reguli clare privind modul de organizare a datelor în baza de date;
- operarea asupra datelor din baza de date se realizează prin intermediul
operaţiilor interne mulţimii relaţiilor; acest lucru face posibilă formalizarea
matematică a acestor operaţii, implementarea lor în funcţiile SGBD şi
gestionarea lor automată, sub controlul componentelor specializate ale
SGBD (motorul SGBD); în felul acesta este posibilă standardizarea şi
optimizarea operaţiilor de acces la datele din baza de date relaţională,
modelul relaţional al bazei de date asigurând în totalitate independenţa
fizică a datelor din baza de date;
- dezvoltarea unor limbaje de manevrare a datelor neprocedurale, care
implementează setul de operaţii interne ale modelului matematic prin
intermediul unor cereri ce pot fi formulate descriptiv şi nu procedural, a
permis deschiderea SGBD relaţionale către categoria utilizatorilor
1
vezi subcapitolul următor
35
neinformaticieni, fapt pentru care majoritatea SGBD-urilor comerciale
dezvoltate în ultimii ani se bazează pe modelul de date relaţional;
- analiza teoretică a modului de organizare şi a proprietăţilor bazei de date
relaţionale, pornind de la un model fundamentat matematic, garantează
calitatea algoritmilor implementaţi în definirea modelului de organizare a
datelor în bazele de date relaţionale şi în generarea componentelor de
gestiune a datelor din SGBD-ul relaţional;
- SGBD-ul relaţional a putut să fie dezvoltat unitar, ca un sistem
independent de platforma de calcul pe care funcţionează, pornind de la
conceptele şi modelele matematice folosite; acest lucru a permis
dezvoltarea de variante de SGBD-uri portabile precum şi a tehnicilor de
conectare prin date a bazelor de date relaţionale gestionate de SGBD-uri
diferite (interconectivitatea aplicaţiilor dezvoltate pe baze de date
relaţionale).
Deşi criticat pentru unele imperfecţiuni ale sale şi preluat cu destulă dificultate la
început, modelul relaţional s-a impus în faţa celor anterioare (ierarhic şi reţea) fiind
adoptat în anii '80 de majoritatea cercetătorilor şi programatorilor din domeniu, ca
cel mai bun model disponibil la acea vreme pentru baze de date. Această utilizare
pe scară largă a modelului relaţional se menţine încă şi se datorează, în primul
rând, proprietăţilor sale principale:
- simplitatea definirii sale, dublată de o mare rigurozitate din punct de
vedere matematic;
- independenţa faţă de sistemul de calcul, fapt care a permis o mare
răspândire şi o rapidă dezvoltare a variantelor sale;
- deschiderea accentuată către utilizatorii neinformaticieni, inclusiv prin
mijloacele mult îmbunătăţite de asigurare a consistenţei, integrităţii şi
siguranţei bazei de date.
Simplitatea modelului constă în faptul că este uşor de înţeles atât de specialişti
cât şi de utilizatori. Datele şi legăturile dintre date sunt reprezentate explicit
utilizând o structură logică ce poartă numele de relaţie.
Independenţa faţă de sistemul de calcul constă tocmai în definirea sistemului
relaţional pornind de la abstractizarea matematică ce a făcut ca acest sistem să fie
mai întâi fundamentat teoretic, independent de implementările particulare
ulterioare.
Accesibilitatea în faţa utilizatorilor neinformaticieni este asigurată, în primul
rând, de folosirea limbajelor de interogare, care sunt limbaje neprocedurale,
descriptive, apropiate de modalitatea naturală de formulare a unei cereri.
În modelul relaţional datele din baza de date sunt organizate în relaţii. Noţiunea
de relaţie se defineşte matematic drept o submulţime a produsului cartezian a unei
liste finite de mulţimi, numite domenii. Un element al relaţiei, numit tuplu, este
definit, conform definiţiei produsului cartezian de mulţimi, ca un set ordonat de
elemente aparţinând domeniilor. Numărul domeniilor, care nu trebuie să fie
neapărat distincte, defineşte aritatea sau gradul relaţiei. În cadrul unei relaţii, un
domeniu se identifică printr-un nume (numit atribut şi notat cu A) şi se
particularizează prin setul de valori ale acestui atribut (a1, a2, a3, …).
36
Mulţimea tuturor atributelor unei relaţii R defineşte schema relaţiei care se
notează cu R(A1,A2,…,An). Cu un exces de notaţie se poate simboliza la fel atât
relaţia cât şi schema acestei relaţii, ceea ce pune în evidenţă numele relaţiei,
aritatea ei (n în exemplul dat) şi mulţimea atributelor sale.
Prin urmare, o relaţie de aritate n este o mulţime de tupluri de câte n elemente
fiecare, în care fiecare element al unui tuplu aparţine, respectiv, câte unuia dintre
cele n domenii şi reprezintă o valoare a atributului care desemnează acel domeniu.
Cum tuplurile sunt elemente ale unei mulţimi, din proprietăţile unei mulţimi rezultă
următoarele proprietăţi ale tuplurilor unei relaţii:
- nu contează ordinea de apariţie a tuplurilor în relaţie; bazat pe această
proprietate, ordinea tuplurilor în relaţie poate fi modificată pentru a obţine
o reprezentare convenabilă a relaţiei;
- două tupluri diferite ale relaţiei trebuie să difere între ele; în consecinţă, un
tuplu al unei relaţii se poate identifica prin conţinutul său (valorile pe care
le înregistrează, pentru toate atributele relaţiei); această proprietate se află
la originea conceptului de cheie a unei relaţii.
O relaţie mai poate fi definită şi cu ajutorul funcţiilor. Se numeşte relaţie
mulţimea funcţiilor diferite, definite fiecare pe mulţimea atributelor şi cu valori în
mulţimea determinată de reuniunea domeniilor, astfel încât pentru fiecare funcţie
valoarea funcţiei pentru un atribut să aparţină domeniului definit de atributul
respectiv. Din definiţia cu funcţii a relaţiei rezultă că nu contează ordinea în care
apar atributele relaţiei ci contează numai ca această ordine să fie aceeaşi pentru
toate funcţiile care definesc relaţia. Pentru a realiza o corespondenţă între cele două
definiţii ale relaţiei, unui tuplu al relaţiei din definiţia cu mulţimi îi corespunde
mulţimea valorilor unei funcţii din definiţia cu funcţii a relaţiei, cu condiţia ca
ordinea atributelor să fie aceeaşi în relaţiile descrise de ambele definiţii.
Se numeşte cheie a unei relaţii atributul sau mulţimea de atribute ale relaţiei ale
căror valori la nivelul unui tuplu identifică unic acel tuplu în cadrul relaţiei şi care
nu include o submulţime proprie (inclusă strict) de atribute cu aceeaşi proprietate.
Din definiţia cheii unei relaţii rezultă că prin înlăturarea oricărui atribut din cheie
setul de atribute rămas nu mai are proprietatea de identificare unică a tuplului
relaţiei; în consecinţă, este necesar ca fiecare atribut al cheii să aibă atribuită o
valoare în orice tuplu, pentru ca valoarea cheii să permită identificarea unică a
fiecărui tuplu. În legătură cu cheia unei relaţii se fac următoarele observaţii:
- orice relaţie are cel puţin o cheie; la limită, cheia este formată din toate
atributele relaţiei;
- în general, pentru o relaţie se identifică mai multe chei ale relaţiei; acestea
se numesc chei candidat;
- dintre toate cheile unei relaţii se alege una singură, de obicei cea care
conţine numărul minim de atribute, şi se desemnează drept cheie primară a
relaţiei; celelalte chei candidat se numesc chei alternante;
- cheia primară este folosită pentru identificarea, în mod unic, a fiecărui
tuplu al relaţiei;
- cheia unei relaţii are un caracter atomic, adică ea trebuie abordată integral:
sau se atribuie valori tuturor atributelor cheii şi atunci ea poate identifica
37
un tuplu din relaţie, sau toate atributele au valoare nedeterminată şi cheia
nu poate referi nici un tuplu.
Modelul relaţional defineşte o structură de date organizate în relaţii, unde o
relaţie corespunde unui grup de entităţi omogene (obiecte ale lumii înconjurătoare
având aceleaşi proprietăţi) sau unui set unitar de legături între entităţi. Mulţimea
relaţiilor formează baza de date relaţională iar mulţimea schemelor relaţiilor
defineşte schema bazei de date relaţionale.
De exemplu, datele referitoare la exemplarele consultate de cititorii unei
biblioteci, în toate sălile de lectură, pot fi memorate în relaţiile definite de
următoarele scheme de relaţie:
Cititor(Nr-leg, CNP, nume, prenume, adresă, telefon)
Exemplar(Cod_ex, Cota, preţ)
Carte(Cota, ISBN, titlu, autori)
Sala( Număr_sală, tip, capacitate)
Consultă(Nr-leg, Cod_ex, Cota, Număr_sală, data, ora, stare)
1
Velicanu M.,Bodea C.,Lungu I.,Ioniţă C.,Bădescu G. - "Sisteme de gestiune a bazelor de
date", Editura Petrion, Bucureşti, 2000
38
- cheia primară este folosită pentru identificarea, în mod unic, a fiecărui
tuplu al relaţiei; în acest scop, asupra cheii primare trebuie impuse ca
restricţii regula unicităţii cheii şi regula entităţii; restricţia privind
unicitatea valorii cheii primare la nivelul relaţiei semnifică faptul că nu
este permis ca într-o relaţie să existe două tupluri având aceeaşi
valoare pentru atributele cheii primare; regula entităţii impune
restricţia privind neacceptarea valorilor nedefinite pentru atributele
cheii primare în nici un tuplu al relaţiei;
- odată definită ca şi cheie primară, SGBD verifică respectarea restricţiei
de unicitate a cheii şi a regulii entităţii de către această cheie;
- prin convenţie, în modelul de descriere a relaţiilor, cheile primare sunt
subliniate.
Se defineşte drept cheie străină a unei relaţii mulţimea atributelor relaţiei care
au proprietatea că domeniile pe care le definesc se regăsesc în altă relaţie, ca
domenii pe care este definită cheia primară a relaţiei respective. Prin intermediul
cheilor străine se realizează definirea legăturilor logice dintre perechi de relaţii,
într-o bază de date relaţională. În acest scop, cheia străină trebuie să îndeplinească
următoarele restricţii:
- nu există două tupluri ale unei relaţii care să difere numai prin valoarea
cheii străine
- restricţia referenţială, care cere ca în cadrul fiecărui tuplu al relaţiei în
care apare, cheia străină să aibă: fie valoare nedeterminată, fie valoarea
cheii primare a unui tuplu din relaţia de care este legată logic prin
această cheie.
Pentru a asigura consistenţa bazei de date relaţionale, SGBD trebuie să poată
asigura respectarea restricţiei referenţiale.
În modelul relaţional legăturile dintre relaţii se pot defini în două moduri:
- prin propagarea cheilor de la o relaţie la alta, în cazul unor legături
binare de tip unu-la-unu sau unu-la-mai-mulţi;
- prin definirea unei noi relaţii, în cazul unor legături binare de tip mai-
mulţi-la-mai-mulţi sau în cazul unor legături care implică mai mult de
două relaţii.
În cazul unei legături binare de tip unu-la-unu, unui tuplu din prima relaţie îi
poate corespunde un singur tuplu din a doua relaţie. În cazul unei legături binare de
tip unu-la-mai-mulţi, unui tuplu din prima relaţie îi pot corespunde mai multe
tupluri din a doua relaţie. Tuplul din prima relaţie se identifică prin cheia primară a
acestei relaţii. Definirea legăturii logice prin propagarea cheii primare se realizează
prin adăugarea, în a doua relaţie, a atributelor cheii primare din prima relaţie,
definind astfel în a doua relaţie o cheie străină care corespunde cheii primare din
prima relaţie. Dacă se impune restricţia referenţială cheii străine, atunci se poate
identifica orice legătură logică între un tuplu din prima relaţie (tuplu referit prin
cheia primară) şi tupluri din a doua relaţie (tupluri care referă cheia primară prin
intermediul valorii cheii străine). Atributele prin care se stabileşte legătura între
cele două relaţii aparţin unor domenii compatibile, adică domenii echivalente
semantic şi ale căror mulţimi de valori nu sunt disjuncte. De exemplu, legătura
39
unu-la-mai-mulţi dintre relaţia Cititor şi relaţia Exemplar, cu privire la cărţile
împrumutate de fiecare cititor la un moment dat, se defineşte prin intermediul cheii
primare din relaţia Cititor care devine cheie străină în relaţia Exemplar, conform
următoarelor scheme de relaţie:
Se pot determina toţi cititorii care au împrumutat o carte, prin selectarea din
relaţia Cititor a tuturor tuplurilor pentru care valoarea atributelor Cod_ex şi Cota
sunt egale fiecare cu valoarea ce identifică unic cartea dorită. Se observă că, pentru
a putea preciza data când cititorul a împrumutat exemplarul, trebuie adăugat în
relaţia Cititor atributul data_i. În această variantă, în cazul unui cititor care
împrumută de mai multe ori acelaşi exemplar se va memora numai data ultimului
împrumut.
Legătura reflexivă se defineşte ca legătura logică între tupluri ale aceleiaşi
relaţii. Acest tip de legătură poate fi tratată ca un caz particular al legăturii binare,
prin introducerea, încă o dată, în schema relaţiei a atributelor care definesc cheia
primară a relaţiei, de această dată pentru definirea cheii străine. Legătura reflexivă
se modelează astfel: cheia străină a relaţiei este cheia tuplului care referă iar cheia
primară a relaţiei este cheia tuplului referit. Şi în acest caz, cheia străină trebuie să
respecte restricţia referenţială. De exemplu, legătura dintre bibliotecarul şef de
secţie şi bibliotecarii subordonaţi se implementează prin relaţia:
Se pot determina toţi subordonaţii unui bibliotecar prin selectarea din relaţia
Bibliotecar a tuplurilor pentru care atributul marca_c are valoarea egală cu valoarea
mărcii bibliotecarului considerat. Marca_c este cheie străină în relaţia Bibliotecar
şi, prin intermediul ei, se modelează legătura reflexivă. Restricţia referenţială se
aplică astfel: în cazul în care un bibliotecar nu este subordonat nimănui, atributul
marca_c corespunzător nu va avea atribuită nici o valoare. În caz contrar, valoarea
40
atributului marca_c trebuie să fie egală cu una dintre valorile atributului Marca din
relaţia Bibliotecar.
Legătura de tip mai-mulţi-la-mai-mulţi dintre două relaţii nu se mai poate
defini prin metoda propagării cheilor ci se defineşte prin intermediul unei noi
relaţii. Prin intermediul acestei noi relaţii se modelează, practic, două relaţii de tip
unu-la-mai-mulţi care se tratează împreună, adică noua relaţie trebuie să permită
identificarea fiecărei perechi de legături unu-la-mai-mulţi care defineşte câte o
legătură mai-mulţi-la-mai-mulţi. În acest scop, noua relaţie trebuie să conţină toate
atributele corespunzătoare cheilor primare ale celor două relaţii, atribute care
determină cheia primară a noii relaţii. De exemplu, legătura de tip mai-mulţi-la-
mai-mulţi dintre relaţia Cititor şi relaţia Exemplar care ilustrează faptul că un
cititor poate imprumuta la un moment dat mai multe exemplare şi că un exemplar
poate fi împrumutat, în timp, la mai mulţi cititori, se descrie prin definirea noii
relaţii Împrumută, conform următoarelor scheme de relaţie:
41
Consultă(Nr_leg, Cod_ex, Cota, Număr_sală, data, ora)
42
3.3.2. Operatorii relaţionali
Reuniunea se defineşte între două relaţii care au aceeaşi schemă definită pentru
aceleaşi domenii. Rezultatul reuniunii celor două relaţii este o relaţie cu aceeaşi
schemă, definită pentru aceleaşi domenii, care conţine toate tuplurile celor două
43
relaţii, considerate o singură dată. Schema reuniunii relaţiilor R(A1,A2,…,An) şi
S(A1,A2,…,An) este: (R U S)(A1,A2,…,An). Dacă se consideră relaţiile R şi S cu
aceeaşi schemă R(vocale, consoane, cifre), S(vocale, consoane, cifre), rezultatul
reuniunii R U S va fi următorul:
a x 4
a x 4 e y 6
e f 2
e y 6 ∪ = i z 8
o h 5
i z 8 e f 2
o h 5
Diferenţa se defineşte între două relaţii care au aceeaşi schemă definită pentru
aceleaşi domenii. Rezultatul diferenţei celor două relaţii este o relaţie cu aceeaşi
schemă, definită pentru aceleaşi domenii, care conţine toate tuplurile din prima
relaţie ce nu aparţin celei de-a doua relaţii. Schema diferenţei relaţiilor
R(A1,A2,…,An) şi S(A1,A2,…,An) este (R \ S)(A1,A2,…,An). Spre exemplificare se
consideră relaţiile R şi S cu aceeaşi schemă, R(vocale, consoane, cifre), S(vocale,
consoane, cifre); rezultatul diferenţei R \ S va fi:
a x 4
e y 6 a x 4
e y 6 \ =
o h 5 i z 8
i z 8
a x 4 6 3
a x 4 e y 6 6 3
6 3
e y 6 X = i z 8 6 3
8 1 a x 4 8 1
i z 8
e y 6 8 1
i z 8 8 1
44
Dacă schemele relaţiilor R şi S au atribute comune, atunci în schema
produsului cartezian apar de două ori aceleaşi atribute. Pentru a nu produce
confuzii, atributele respective pot fi calificate cu numele relaţiei din care provin sau
pot fi redenumite.
Proiecţia se defineşte pentru o relaţie R(A1,A2,…,Ar) de aritate r şi pentru o
submulţime de atribute din schema acestei relaţii P={P1,P2,…,Pi} cu i < r şi P ⊂ A
pentru A={A1,A2,…,Ar} . Rezultatul proiecţiei relaţiei după această subschemă de
atribute este relaţia de aritate i, cu schema P, care conţine toate tuplurile cu
proprietatea că provin din tuplurile relaţiei R prin înlăturarea valorilor atributelor
din A \ P. Schema relaţiei rezultată prin proiecţia relaţiei R(A1,A2,…,Ar) după
atributele din P={P1,P2,…,Pi} este de forma:
( ∏ P R ) ( P ,P ,…,P ).
1 2 i
a x 4 a 4
R= e y 6 , ∏
vocale , cifre(R) = e 6
i z 8 i 8
( σ R)(A ,A ,…,A ).
e 1 2 r
1
Compararea caracterelor se va face pe baza valorilor din codul ASCII.
45
a x 4
R= e b 6 , σ vocale <consoane (R) =
a
i
x
m
4
8
i m 8
Intersecţia se defineşte între două relaţii care au aceeaşi schemă definită pentru
aceleaşi domenii. Rezultatul intersecţiei celor două relaţii este o relaţie cu aceeaşi
schemă definită pentru aceleaşi domenii care conţine toate tuplurile care aparţin, în
acelaşi timp, ambelor relaţii. Schema intersecţiei relaţiilor R(A1,A2,…,An) şi
S(A1,A2,…,An) este: (R ∩ S)(A1,A2,…,An). Intersecţia este o operaţie derivată din
diferenţă, deoarece: (R ∩ S)(A1,A2,…,An) = (R\(R \ S))(A1,A2,…,An). Dacă se
consideră relaţiile R şi S cu aceeaşi schemă R(vocale, consoane, cifre), S(vocale,
consoane, cifre), rezultatul intersecţiei R ∩ S va fi următorul:
a x 4
e y 6
e y 6 ∩ = e y 6
o h 5
i z 8
a x 4 6 3
e y 6 6 3
a x 4
i z 8 6 3 6 3
/ e y 6 =
a x 4 8 1 8 1
i z 8
e y 6 8 1
i z 8 8 1
46
Uniunea se defineşte între două relaţii R(A1,A2,…,Ar), de aritate r şi
S(B1,B2,…,Bs), de aritate s, pentru condiţia c(i,j). Rezultatul uniunii celor două
relaţii este o relaţie de aritate r+s, cu schema definită pentru A U B, unde
A={A1,A2,…,Ar} şi B={B1,B2,…,Bs}, care conţine toate tuplurile produsului
cartezian al relaţiilor R şi S pentru care este îndeplinită condiţia c(ai,bj), unde ai este
valoarea atributului Ai din tuplu şi bj este valoarea atributului Bj din tuplu. Schema
relaţiei obţinute prin uniunea dintre relaţiile R(A1,A2,…,Ar) şi S(B1,B2,…,Bs) este
de forma:
(R |>< | S)(A ,A ,…,A B ,B ,…,B ).
1 2 r, 1 2 s
c(i, j )
Operaţia de uniune mai este numită join. În cazul în care condiţia c(i,j) este de
forma ai=bj, atunci uniunea poartă numele de echiuniune. În cazul în care se
consideră proiecţia uniunii, după atributele primei relaţii, atunci operaţia poartă
numele de semi-uniune stângă şi schema ei relaţională este de forma:
(R| |><| S)(A ,A ,…,A ).
1 2 r
c(i, j )
În cazul în care se consideră proiecţia uniunii, după atributele celei de-a doua
relaţii, atunci operaţia poartă numele de semi-uniune dreaptă şi schema ei
relaţională este de forma:
(R |><| |S)( B ,B ,…,B ).
1 2 s
c(i, j )
Uniunea este o operaţie obţinută prin aplicarea selecţiei pentru expresia
e=c(ai,bj) asupra produsului cartezian al relaţiilor R şi S:
47
a x 4 6 3
e y 6 6 3
a x 4
6 3 i z 8 6 3
e y 6 X =
8 1 a x 4 8 1
i z 8
e y 6 8 1
i z 8 8 1
a x 4 6 3
e y 6 6 3 a x 4 6 3
i z 8 6 3
σ = a x 4 8 1
cifre< par a x 4 8 1
e y 6 8 1
e y 6 8 1
i z 8 8 1
a x 4 a x 4 6 3
6 3
e y 6 ⊗ = a x 4 8 1
cifre<par
8 1
i z 8 e y 6 8 1
1
Compararea caracterelor se va face pe baza valorilor din codul ASCII.
48
în schema lor relaţională. Fie A={A1,A2,…,Ar}, B={B1,B2,…,Bs} şi P=A ∩ B, cu
P={P1,P2,…,Pp}, mulţimea atributelor comune celor două relaţii. Uniunea naturală
a relaţiilor R şi S este obţinută din mulţimea tuplurilor produsului cartezian dintre
R şi S , pentru care atributele comune din cele două relaţii au valori egale, asupra
căreia se realizează o proiecţie, după atributele mulţimii (A U B).
Rezultatul uniunii naturale a celor două relaţii este o relaţie de aritate r+s-p, cu
schema definită pentru (A U B) = {A'1,A'2,…,A'r+s-p}. Schema relaţiei obţinute prin
uniunea naturală dintre relaţiile R(A1,A2,…,Ar) şi S(B1,B2,…,Bs) este de forma:
a x 4 6 4
e y 6 6 4
a x 4
6 4 i z 8 6 4
e y 6 ⊗ =
8 2 a x 4 8 2
i z 8
e y 6 8 2
i z 8 8 2
49
R . cifre = S . cifre ,
a x 4 6 4
e y 6 6 4
e y 6 6 4
σ i z 8 6 4 =
R.cifre=S.cifre i z 8 8 2
a x 4 8 2
e y 6 8 2
i z 8 8 2
e y 6 6 4 e y 6 4
∏(vocale, consoane,cifre, par) =
i z 8 8 2 i z 8 2
a x 4
6 4 e y 6 4
e y 6 ⊗ =
8 2 i z 8 2
i z 8
50
comune din cele două relaţii să aibă valori egale. Tuplurile care se adaugă uniunii
naturale sunt selectate după cum urmează:
1. Pentru operaţia de uniune externă stângă (left outer join) se adaugă numai
tuplurile din relaţia R. Se obţine din uniunea naturală, plus tuplurile din prima
relaţie care nu au corespondent în a doua.
a x 4 e y 6 4
6 4
e y 6 |⊗ = i z 8 2
8 2
i z 8 a x 4 null
2. Pentru operaţia de uniune externă dreaptă (right outer join) se adaugă numai
tuplurile din relaţia S. Se obţine din uniunea naturală, plus tuplurile din a doua
relaţie care nu au corespondent în prima.
a x 4 6 4 e y 6 4
e y 6 ⊗| 8 2 = i z 8 2
i z 8 7 6 null null 7 6
e y 6 4
a x 4 6 4
i z 8 2
e y 6 | ⊗| 8 2 =
a x 4 null
i z 8 7 6
null null 7 6
51
- calculul relaţional pe tupluri;
- calculul relaţional pe domenii.
O cerere de consultare a bazei de date formulate în termenii calculului relaţional
trebuie să realizeze o descriere a rezultatului dorit, prin prisma proprietăţilor
elementelor relaţiei implicate. Aceste elemente sunt fie tupluri fie domenii ale
relaţiei. Prin natura operaţiilor cu care lucrează, calculul relaţional oferă o
modalitate declarativă de formulare a cererilor; de aceea, limbajele de manevrare a
datelor care se bazează pe calculul relaţional sunt limbaje neprocedurale. Încă din
1970, Edgar Codd sugera "adoptarea unui model relaţional de organizare a datelor
care să permită dezvoltarea unui sub-limbaj universal de gestiune a datelor, care să
fie bazat pe calculul predicatelor". Utilitatea unui limbaj "universal" de cerere este
motivată de necesitatea dezvoltării de SGBD portabile, precum şi de necesitatea
comunicării şi a conectării prin date a diferitelor variante de SGBD. Posibilitatea
realizării unui astfel de limbaj pentru accesul la baze de date relaţionale este
asigurată de faptul că, prin intermediul operatorilor relaţionali, accesul la baza de
date este standardizat şi nu depinde decât de mecanismele de operare cu relaţiile
bazei de date prin intermediul acestor operatori. Utilizarea calculului relaţional
pentru formularea limbajului de cerere imprimă caracterul neprocedural acestui
limbaj, fapt care îi măreşte accesibilitatea chiar şi pentru utilizatorii
neinformaticieni.
Calculul relaţional pe tupluri a fost introdus de Edgar Codd. Enunţurile cu care
operează sunt expresii definite asupra unui tuplu, folosind atomi şi operatori.
Atomii sunt enunţuri cu valoare de adevăr de forma:
- "t este un tuplu al relaţiei R";
- "comp(t[i],u[j])" , unde comp este un operator de comparare (egalitate,
inegalitate, mai mare, mai mic), t şi u sunt tupluri iar t[i] şi u[j]
reprezintă elementul i din tuplul t, respectiv elementul j din tuplul u;
- "comp(t[i],c)" , similar cu enunţul precedent, cu c constantă.
Expresiile se construiesc iterativ, pornind de la atomi, prin aplicarea operatorilor:
- conectori (şi, sau, non);
- cuantificatori (existenţial, universal).
Calculul relaţional pe domenii operează tot cu expresii, dar acestea sunt definite pe
domenii; mai precis, utilizează valori ale atributelor ce definesc domeniile.
Corespunzător, accepţiunea noţiunii de atom devine:
- "(a1,a2,…,ar) este un tuplu al relaţiei R", în care R este o relaţie de
aritate r;
- "comp(ai,bj)", ca la calculul relaţional pe tupluri, dar ai este o valoare a
atributului Ai iar bj este o valoare a atributului Bj;
- "comp(ai,c)", ca mai sus, cu c este o constantă.
Expresiile se construiesc în aceeaşi manieră, utilizând aceiaşi operatori.
Formalizând şi fundamentând aceste operaţii cu un aparat teoretic matematic, se
demonstrează că orice expresie din calculul relaţional pe tupluri poate fi
52
transformată într-o expresie echivalentă din calculul relaţional pe domenii şi într-o
expresie echivalentă din algebra relaţională1.
Concluzia este că, pentru a defini un limbaj relaţional de manevrare a datelor,
pot fi utilizaţi oricare dintre operatorii relaţionali prezentaţi. Este unul dintre
motivele pentru care există astăzi o multitudine de SGBDR şi de limbaje de cerere
corespunzătoare lor. Diferenţa se simte, în primul rând, la gradul de accesibilitate
al limbajului generat iar mai apoi la nivelul de resurse necesare.
Pentru proiectarea unei baze de date relaţionale trebuie definită schema bazei
de date, care este formată din schemele relaţiilor bazei de date. În acest scop, se
determină domeniile pe care vor fi definite relaţiile, modul de grupare a lor pentru
delimitarea fiecărei relaţii, legăturile logice din interiorul fiecărei relaţii şi dintre
relaţii. Schema unei relaţii defineşte numele relaţiei şi mulţimea atributelor acelei
relaţii. Prin intermediul schemei unei relaţii se defineşte modul de grupare a datelor
în interiorul relaţiei şi se determină regulile care vor guverna relaţia, definind
restricţiile la care se supun datele şi legăturile logice dintre datele acelei relaţii.
Legăturile logice dintre relaţii sunt definite prin intermediul domeniilor
compatibile care determină atributele comune ale relaţiilor. De modul în care sunt
grupate domeniile în relaţii depinde complexitatea legăturilor care se definesc între
relaţii. Cazurile extreme sunt: definirea unei singure relaţii care include în schema
ei atributele tuturor domeniilor identificate sau definirea numărului maxim de
relaţii posibile care să permită modelarea legăturilor dintre şi din interiorul fiecărei
relaţii. În cazul utilizării unei relaţii prea cuprinzătoare, apar probleme legate de
redundanţa datelor, care antrenează apariţia anomaliilor de actualizare a relaţiei
(anomalia de adăugare, anomalia de ştergere şi anomalia de modificare). De
exemplu, utilizarea relaţiei:
Exemplar(Cod_ex, Cota, preţ, nr_leg, CNP, nume, prenume, adresă, telefon, data)
1
Bâscă O. - "Baze de date", Editura ALL, Bucureşti, 1997
53
- anomalia de adăugare se poate exemplifica prin faptul că nu se poate lua
în evidenţă un nou cititor decât dacă acesta împrumută o carte;
- anomalia de ştergere, inversa anomaliei de adăugare, apare atunci când
cititorul nu mai are împrumutată nici o carte (la returnarea ultimei cărţi);
în tuplul corespunzător sunt înlăturate datele sale personale şi cititorul
dispare din relaţie;
- anomalia de modificare se referă, de exemplu, la faptul că modificarea
numelui unui cititor ar trebui făcută în toate tuplurile în care apare,
pentru menţinerea consistenţei relaţiei.
Se poate reduce redundanţa şi implicit înlătura anomaliile pe care le generase,
de exemplu prin definirea următoarelor două relaţii:
54
- dependenţe funcţionale;
- dependenţe multivaloare;
- dependenţe de uniune.
55
3.4. Modelele pentru proiectarea unei baze de date
2. Abstractizare
7. Implementare
Schema conceptuală
4. Corelare
Schema internă
6. Generare
56
- etapa de încărcare a datelor de test şi de testare a corectitudinii
structurii definite;
- etapa de menţinere a bazei de date pe perioada exploatării ei, etapă
care include rezolvarea eventualelor erori apărute în exploatarea bazei
de date, îmbunătăţirea performanţelor de exploatare a bazei de date,
dezvoltări ulterioare, etc.
Chiar şi în condiţiile organizării datelor într-o bază de date şi a utilizării unui
SGBD pentru gestionarea datelor, fapt care determină independenţa logică a
datelor faţă de programele de aplicaţie, este necesară corelarea structurilor de date
cu algoritmii de prelucrare care vor fi utilizaţi de aplicaţii; de exemplu:
- numărul şi conţinutul cheilor de indexare ale tabelelor de date se determină
şi în funcţie de prelucrările care vor fi realizate asupra datelor
- modul de utilizare a datelor determină operaţiile permise asupra datelor şi,
mai ales, operaţiile nepermise, care definesc constrângerile pornind de la
care se generează regulile de integritate a bazei de date.
Această corelare se face în faza de definire a modelelor de date şi a modelelor de
prelucrări, care vor descrie schematic structura viitoarei aplicaţii informatice. În
plus, modelul schemei conceptuale a bazei de date trebuie să ţină seama de
schemele externe ale bazei de date, specifice diferitelor aplicaţii cu baza de date.
Procesul de modelare a bazei de date este unul iterativ, care necesită confruntări
repetate şi succesive ale schemei conceptuale a bazei de date cu schemele externe,
pe de o parte, şi cu realitatea care se modelează, pe de altă parte. Obiectivul este
definirea unei baze de date care să răspundă într-un mod eficient tuturor
necesităţilor de date ale aplicaţiilor dezvoltate în jurul ei.
Nivelul conceptual de abstractizare a datelor în baza de date trebuie să
îndeplinească următoarele obiective:
- să definească imaginea globală a datelor din sistemul informaţional
modelat;
- să asigure satisfacerea tuturor cerinţelor informaţionale ale sistemului
informatic proiectat;
- să asigure independenţa descrierii datelor faţă de nivelul fizic de organizare
a bazei de date.
Autonomia fizică a datelor din baza de date este asigurată tot de SGBD,
datorită funcţiilor sale privind gestionarea accesului la datele din baza de date. În
acest scop SGBD este proiectat să opereze asupra unui anumit model teoretic de
organizare a datelor în baza de date, model care determină modul de organizare
fizică a datelor şi modul de acces la datele din baza de date. Acest model teoretic
defineşte tipul de SGBD utilizat. De exemplu, un SGBD relaţional va opera logic
cu operaţiile algebrei relaţionale asupra unor date organizate în relaţii. Pe baza
modelului teoretic de operare asupra relaţiilor se dezvoltă componenta care
gestionează accesul fizic la date, ce aparţine motorului SGBD.
Orice SGBD are la bază un model de organizare şi manevrare a datelor care
constituie fundamentul teoretic al construirii acestui SGBD, pentru realizarea
57
funcţiei de gestionare automată a datelor1. Este necesar deci ca alegerea tipului de
model de date utilizat pentru proiectarea bazei de date să fie în concordanţă cu tipul
de SGBD care va fi ales pentru gestionarea bazei de date.
Nivelul conceptual se descrie printr-un model de organizare logică a datelor
care precizează conţinutul logic al datelor, natura datelor şi legăturile dintre date, la
nivelul întregii baze de date.
Un model este un instrument teoretic ce permite o reprezentare a lumii reale
adecvată anumitor necesităţi. Mai specific, un model este o formă de reprezentare
abstractizată a lumii reale, folosind concepte şi notaţii proprii, pentru a furniza:
- o metodă pentru descrierea formală a realităţii;
- un instrument de comunicare (un limbaj comun pentru utilizatorii
modelului).
Un model de date trebuie să permită identificarea conţinutului informaţional al
unei colecţii de date privite în ansamblu şi să reprezinte formalizat aceste date, într-
o manieră compatibilă cu modul de reprezentare şi cu modul de tratare a datelor
într-un sistem de calcul. Fiind vorba de o abstractizare a lumii reale, un model de
date se concentrează pe aspectele esenţiale ale sistemului modelat.
1
Dollinger R. – op.cit.
58
- prelucrările asupra datelor pot fi condiţionate de legăturile definite explicit
între datele din baza de date;
- prelucrările asupra datelor din baza de date se realizează într-o aplicaţie şi
efectul lor este reflectat în toate aplicaţiile care utilizează acele date.
Efectele organizării datelor într-o bază de date gestionată de SGBD sunt:
- aceleaşi date pot fi valorificate diferit de aplicaţii diferite, pentru că o bază
de date poate oferi în orice moment imagini multiple asupra datelor pe care
le memorează;
- datele sunt tratate unitar, prin intermediul funcţiilor de descriere a datelor
şi a funcţiilor de acces la date oferite de SGBD;
- descrierea modului de organizare logică a datelor este memorată în afara
programelor de aplicaţie, determinând autonomia logică a datelor.
59
- un fişier este o colecţie de date care poate fi partajată de mai mulţi
utilizatori care au o imagine unică asupra datelor; imagini multiple asupra
datelor pot fi obţinute numai prin operaţii suplimentare asupra fişierului:
sortare, filtrare, etc.
- o bază de date este un ansamblu de date format din mai multe fişiere ce pot
fi partajate de mai mulţi utilizatori, oferindu-le acestora imagini diferite
asupra datelor.
60
3.6. Probleme rezolvate şi propuse
61
a) limbajul de descriere a datelor
b) limbajul gazdă al SGBD
c) limbajul de manevrare a datelor?
8. Nivelul extern de abstractizare a datelor dintr-o bază de date se referă la:
a) modul de organizare a datelor în memoria externă
b) imaginea bazei de date din punctul de vedere al unui utilizator sau al unei
aplicaţii
c) imaginea globală a bazei de date, conform universului real care se
modelează.
9. Una dintre afirmaţiile următoare nu se referă la tuplurile unei relaţii:
a) numărul lor determină aritatea relaţiei
b) ordinea lor în relaţie nu contează şi poate fi modificată
c) fiecare tuplu al relaţiei trebuie să fie atomic, adică diferit de celelalte.
10. Autonomia logică a datelor într-o bază de date se referă la faptul că:
a) stuctura datelor din baza de date poate fi modificată fără a influenţa
programele de aplicaţie
b) datele din baza de date pot fi modificate fără modificarea programelor de
aplicaţie
c) locaţia în memoria externă a fişierelor de date poate fi modificată fără a
influenţa programele de aplicaţie.
11. Termenul de manevrare a datelor din baza de date nu se referă la:
a) definirea structurii datelor din baza de date
b) actualizarea, prin adăugare, ştergere sau modificare, a datelor din baza de
date
c) consultarea datelor din baza de date.
12. Una dintre afirmaţiile următoare nu se referă la domeniile unei relaţii:
a) numărul lor determină aritatea relaţiei
b) ordinea lor în relaţie nu contează şi poate fi modificată
c) fiecare domeniu al relaţiei trebuie să fie atomic, adică diferit de celelalte.
13. Procedura roll-back se execută:
a) în cazul alterării bazei de date între două tranzacţii
b) în cazul imposibilităţii încheierii cu succes a unei tranzacţii
c) în cazul acceselor concurente, în actualizare, a mai multor utilizatori ai bazei
de date
d) pentru anularea efectelor execuţiei parţiale a unei tranzacţii.
14. Alegeţi varianta corectă:
a) validarea tranzacţiei indică faptul că efectele acesteia sunt ireversibile în
baza de date
b) execuţia unei tranzacţii poate fi oprită în caz de incident dar nu se mai poate
reface imaginea iniţială a bazei de date
c) tranzacţia este unitatea fizică de prelucrare asupra unei baze de date
d) tranzacţia reprezintă trecerea de la o realizare a bazei de date la alta.
15. Include setul complet de operaţii elementare care trebuie executate în vederea
efectuării trecerii de la o realizare la alta a unei baze de date:
a) tranzacţia;
62
b) tabela de index;
c) tranziţia;
d) regula de integritate referenţială.
16. Un SGBD:
a) asigură definirea, generarea şi exploatarea unei baze de date, neputând-o
proteja faţă de accesele nepermise;
b) permite numai gestionarea accesului la date;
c) este o interfaţă software între utilizator şi baza de date;
d) este o componentă software complexă ce permite generarea şi gestionarea
bazelor de date.
17. Conform metodologiei ANSI-SPARC, este responsabil cu dezvoltarea
schemelor externe:
a) administratorul bazei de date;
b) administratorul de aplicaţie;
c) administratorul de întreprindere;
d) utilizatorul.
18. Un SGBD poate asigura confidenţialitatea datelor din baza de date astfel:
a) prin salvarea periodică a bazei de date pe un suport sigur de memorie
externă
b) utilizând criptarea datelor din baza de date
c) prin folosirea unui sistem de parole de acces la baza de date
d) prin asigurarea procedurii de roll-back.
19. Gradul de autonomie a datelor din baza de date:
a) realizează o separare a datelor din punct de vedere conceptual
b) se defineşte în legătură cu descrierea datelor pe diferite niveluri de
abstractizare
c) defineşte în mod logic scheme ale bazei de date, pentru diferite niveluri de
abstractizare a datelor
d) defineşte măsura în care se poate modifica descrierea datelor pentru un nivel
de abstractizare, fără a afecta descrierile de pe celelalte niveluri.
20. Izolarea unei tranzacţii presupune :
a) accesul se realizează numai dintr-o vedere a bazei de date
b) baza de date este protejată pentru a nu fi afectă de un virus
c) tranzacţia nu a fost aprobată de LMD
d) baza de date este accesibilă numai după validarea tranzacţiei.
21. Un SGBD asigură posibilitatea accesului multicriterial la datele din baza de
date:
a) prin intermediul cheilor de indexare
b) prin intermediul tranzacţiilor
c) prin intermediul operaţiei de editare a datelor
d) prin intermediul tabelei legăturilor dintre date.
22. Se asigură autonomia logică a datelor într-o bază de date dacă:
a) actualizarea datelor din baza de date respectă restricţiile de integritate
memorate în baza de date
b) pentru accesul la baza de date se utilizează dicţionarul de date
63
c) actualizările bazei de date se realizează prin intermediu tranzacţiilor
d) la consultarea bazei de date se foloseşte un limbaj de interogare.
23. Care dintre următoarele afirmaţii despre cheia străină sunt adevărate?
a) realizează definirea legăturilor logice dintre relaţii;
b) în fiecare tuplu în care apare trebuie să aibă fie valoare nedeterminată fie
valoarea cheii primare din altă relaţie;
c) într-o relaţie nu este permis să existe două tupluri având aceeaşi valoare
pentru atributele acestei chei;
d) se defineşte ca mulţimea atributelor relaţiei care au proprietatea că
domeniile pe care le definesc se regăsesc în altă relaţie.
24. Alegeţi varianta corectă:
a) atât limbajele procedurale cât şi cele neprocedurale de manevrare a datelor
sunt limbaje imperative;
b) limbajele neprocedurale sunt limbaje descriptive iar cele procedurale sunt
imperative;
c) limbajele procedurale sunt limbaje descriptive iar cele neprocedurale sunt
imperative
d) limbajele procedurale folosesc proceduri standard de acces la date.
25. Într-o bază de date sunt definite cu rolul de a accelera accesul la date:
a) tabelele sistem;
b) tabelele de index;
c) tabelele de structură;
d) metadatele.
26. Reflectă imaginea globală a datelor din baza de date:
a) nivelul extern;
b) nivelul logic;
c) nivelul conceptual;
d) nivelul intern.
27. Unităţi logice virtuale ale bazei de date cu rol de a oferi selectiv, spre
consultare, anumite date ale bazei de date şi de a ”ascunde” restul datelor din
baza de date:
a) tabelele de index;
b) vederile;
c) fişierele de index;
d) fişierele partiţionate.
28. Într-o bază de date relaţională, o relaţie se poate reprezenta printr-un tabel în
care:
a) fiecare rând reprezintă un domeniu;
b) ordinea rândurilor în tabel nu este predefinită şi poate fi modificată;
c) pentru fiecare coloană a tabelului, realizările sunt de acelaşi fel;
d) fiecare rând se poate identifica unic prin conţinutul său.
29. Portabilitatea unei componente software constă în:
a) posibilitatea de a utiliza acea componentă pe platforme de calcul diferite
b) posibilitatea de reproiectare a acelei componente fără alterarea structurilor
de date
64
c) posibilitatea de a utiliza acea componentă sub sisteme de operare diferite
d) posibilitatea de modificare a suportului de memorie externă folosit pentru
stocarea datelor.
30. Nivelul conceptual de abstractizare a datelor din baza de date trebuie să
îndeplinească următoarele obiective:
a) să asigure satisfacerea tuturor cerinţelor informaţionale ale sistemului
informatic proiectat
b) să reflecte reprezentarea datelor pe suportul de memorie externă
c) să definească imaginea globală a datelor din sistemul informaţional modelat
d) să protejeze baza de date de accesul utilizatorilor neautorizaţi.
31. Consistenţa bazelor de date se referă la:
a) respectarea constrângerilor semantice
b) actualizarea automată a tabelelor de index
c) includerea metadatelor în dicţionarul de date
d) derularea tranzacţiei conform regulilor de integritate.
32. Printre funcţiile unui SGBD se numără:
a) generarea bazei de date, asigurarea autonomiei logice a datelor faţă de
programele de aplicaţie şi actualizarea datelor din baza de date;
b) optimizarea procedurilor de acces la date, asigurarea integrităţii bazei de
date şi gestionarea schimburilor de date între memoria internă şi memoria
externă;
c) asigurarea integrităţii datelor şi a protecţiei acestora faţă de accesele
concurente la baza de date;
d) actualizarea datelor din baza de date şi definirea strategiei de asigurare a
bazei de date.
33. Alegeţi varianta corectă:
a) validarea tranzacţiei are ca efect faptul că efectele acesteia sunt ireversibile
în baza de date;
b) execuţia unei tranzacţii poate fi oprită în caz de incident dar nu se mai poate
reface imaginea iniţială a bazei de date;
c) tranzacţia este unitatea fizică de prelucrare asupra unei baze de date;
d) nu se poate pune problema anulării efectului unei tranzacţii în cazul apariţiei
unor incidente.
34. Alegeţi varianta corectă:
a) metodologia de concepere a unei baze de date porneşte de la necesitatea
realizării, mai întâi, a schemei interne;
b) schema conceptuală derivă din schema internă;
c) prin intermediul schemei externe, utilizatorul are o viziune parţială asupra
bazei de date;
d) prin intermediul schemei externe, utilizatorul are o viziune globală asupra
bazei de date.
35. Gestionarul bazei de date este o componentă a:
a) subsistemului instrumentelor de proiectare al unui SGBD;
b) subsistemului de execuţie;
c) motorului SGBD;
65
d) nici o variantă nu este corectă.
36. Care dintre următoarele afirmaţii despre tupluri sunt false:
a) nu contează ordinea de apariţie a tuplurilor într-o relaţie;
b) un tuplu al unei relaţii se poate identifica prin conţinutul său;
c) este o submulţime a produsului cartezian a unei liste finite de mulţimi,
numite domenii
d) se poate repeta de un număr nedeterminat de ori într-o relaţie.
37. Dimensiunea unei clase de asociaţii descrie:
a) numărul maxim de entităţi dintr-o clasă de entităţi care pot participa la o
asociaţie din clasa de asociaţii
b) numărul minim de entităţi dintr-o clasă de entităţi care pot participa la o
asociaţie din clasa de asociaţii
c) numărul de clase de entităţi care participă la definirea clasei de asociaţii
d) numărul minim de asociaţii din clasa de asociaţii la care participă o entitate
din clasa de entităţi.
38. Efectul unei tranzacţii este ireversibil dacă :
a) tranzacţia se încheie cu roll-back
b) tranzacţia se încheie cu succes
c) sunt folosite vederi ale bazei de date
d) tranzacţia se încheie cu commit.
39. Există o relaţie de incluziune între:
a) LDD şi LMD;
b) LI şi LDD;
c) metadate şi dicţionarul de date;
d) fişiere de index şi motorul BD.
40. Prin implementarea mecanismelor de criptare a datelor din baza de date se
asigură:
a) integritatea datelor din baza de date
b) posibilitatea accesului selectiv la date
c) confidenţialitatea datelor din baza de date
d) protejarea datelor din baza de date faţă de accesele concurente.
41. Motorul SGBD asigură:
a) gestionarea unitară a operaţiilor la nivel fizic asupra bazei de date
b) gestionarea unitară a operaţiilor la nivel logic asupra bazei de date
c) verificarea respectării restricţiilor de integritate ale bazei de date
d) optimizarea operaţiilor de acces la baza de date.
42. O relaţie poate avea mai multe:
a) chei candidat
b) chei străine
c) chei primare
d) chei alternante.
43. Alegeţi varianta corectă:
a) schimburile de date între memoria internă şi memoria externă sunt
gestionate de SGBD;
66
b) stocarea datelor, în vederea prelucrării lor ulterioare, se realizează în
memoria internă a sistemului de calcul;
c) blocurile de date (înregistrări logice) sunt gestionate de SGF iar articolele
(înregistrări fizice), de utilizator;
d) câmpurile unui fişier sunt formate din date elementare numite articole;
e) schimburile de date între memoria internă şi memoria externă sunt
gestionate de SGF.
44. Impune ca modificările efectuate în baza de date să fie realizate cu respectarea
regulilor de integritate a bazei de date:
a) atomicitatea;
b) consistenţa;
c) durabilitatea;
d) coerenţa;
e) izolarea;
f) integritatea.
45. O realizare a bazei de date reprezintă:
a) obţinerea unei vederi a bazei de date
b) actualizarea tabelelor de index odată cu actualizarea datelor
c) ansamblul datelor stocate în baza de date la un moment dat
d) validarea automată a unei tranzacţii în baza de date.
46. Se numără printre nivelurile de abstractizare a datelor din baza de date:
a) nivelul intern numit şi nivel utilizator;
b) nivelul extern numit şi nivel fizic;
c) nivelul global numit şi nivel intern;
d) nivelul extern numit şi nivel utilizator.
47. Subsistemul instrumentelor de proiectare a SGBD permite:
a) definirea structurii bazei de date
b) definirea formatului rapoartelor şi a cererilor de interogare a bazei de date
c) procesarea aplicaţiilor şi a cererilor de consultare a bazei de date
d) generarea tranzacţiilor cu baza de date.
48. Un domeniu se identifică prin:
a) tuplu
b) relaţie
c) cheie
d) atribut
e) identificator.
49. Alegeţi varianta corectă:
a) SGBD asigură accesul multicriterial la datele din baza de date prin
intermediul regulilor de integritate;
b) instrumentele oferite de SGBD pentru consultarea bazei de date sunt
rezervate utilizatorilor profesionişti;
c) SGBD asigură şi autonomia logică şi autonomia fizică a datelor faţă de
programele de aplicaţie;
d) variantele a) şi b) sunt corecte;
e) variantele a) şi c) sunt corecte.
67
50. Limbajele de interogare a bazei de date:
a) fac parte dintre limbajele de descriere a datelor;
b) permit căutarea, identificarea şi vizualizarea datelor din baza de date;
c) sunt limbaje imperative;
d) sunt limbaje neprocedurale.
51. Metodologia de proiectare a unei baze de date porneşte de la necesitatea
realizării mai întâi a:
a) schemei interne
b) schemei funcţionale
c) schemei conceptuale
d) schemei relaţionale.
52. Orice tuplu al relaţiei se identifică unic prin intermediul valorii unui set de
atribute care formează:
a) cheia compusă
b) cheia străină
c) cheia candidat
d) cheia unică
e) cheia primară
f) cheia alternantă.
53. Efectul domino poate să apară în cazul în care, pe durata derulării unei
tranzacţii, nu se respectă:
a) atomicitatea;
b) consistenţa;
c) durabilitatea;
d) coerenţa;
e) izolarea;
f) integritatea.
54. Prin proiecţia unei relaţii se obţine:
a) aceeaşi relaţie cu un număr mai mic de tupluri;
b) o nouă relaţie cu un număr mai mic de atribute;
c) o nouă relaţie având aceeaşi schemă ca relaţia iniţială;
d) o nouă relaţie cu un număr mai mic de tupluri.
55. Numărul regulilor lui Codd care se referă la independenţa datelor din baza de
date este:
a) una
b) două
c) trei
d) patru
e) cinci.
56. Care enunţuri sunt adevărate:
a) uniunea este o operaţie derivată a algebrei relaţionale;
b) uniunea este o operaţie unară definită pe mulţimea relaţiilor;
c) uniunea este echivalentă cu operaţia de selecţie compusă cu operaţia de
produs cartezian;
68
d) uniunea este echivalentă cu operaţia de proiecţie compusă cu operaţia de
produs cartezian.
57. Pentru ca un SGBD să fie considerat relaţional, trebuie să fie implementaţi cel
puţin următorii operatori relaţionali:
a) de proiecţie
b) de reuniune
c) de produs cartezian
d) de selecţie
e) de uniune.
58. Care dintre următoarele afirmaţii este adevărată:
a) dependenţa funcţională directă implică dependenţa funcţională totală;
b) dependenţa funcţională tranzitivă implică dependenţa funcţională parţială;
c) dependenţa funcţională totală implică dependenţa funcţională directă;
d) dependenţa funcţională parţială implică dependenţa funcţională tranzitivă.
59. Sunt operaţii ale algebrei relaţionale care permit obţinerea unei relaţii având o
altă schemă de relaţie decât operanzii:
a) proiecţia
b) reuniunea
c) produsul cartezian
d) selecţia
e) uniunea.
69
4. Bibliografie
70
Popa Ghe.,Ştefănescu A.,Stanciu V.,Ivancenco V.,Mareş V.- "SGBD",
Editura All, Bucureşti, 1994
Raden N. - “Information week”, October 30, 1995
Sprague R., Carlson E.D. - “Building Effective DSS” Prentice-Hall,New
Jersey 1982
Stonebraker M. - “Object/Relational DBMSs: The Next Great Wave”,
Morgan Kaufman,1996
Toffler A. - "Powershift - puterea în mişcare", Editura Antet, 1995
Velicanu M.,Bodea C.,Lungu I.,Ioniţă C.,Bădescu G. - "Sisteme de gestiune a
bazelor de date", Editura Petrion, Bucureşti, 2000
Zaharie D. & colectiv, - “Sisteme informatice pentru asistarea deciziei”,
Editura DualTech, Bucureşti, 2001
***, - Microsoft Press - "Microsoft Visual FoxPro 6.0, Ghidul
programatorului", Editura Teora, Bucureşti, 2000
***, - Computerworld, “Data Warehouse”, 25/4/1994
***, - “The Case For Relational OLAP”, Micro Strategy Incorporated,
www.strategy.com
71