Documente Academic
Documente Profesional
Documente Cultură
BAZE de DATE Suport Curs
BAZE de DATE Suport Curs
Înţelegerea noţiunilor ce urmează a fi prezentate este foarte importantă pentru a deosebi sistemele
bazate pe fişiere şi cele de baze de date, dar şi pentru gestionarea datelor. Voi încerca să abordez
această problematică de o manieră care să fie accesibilă atât începătorilor cât şi celor care au deja
cunoştinţe mai avansate despre aceste noţiuni.
Noţiunea de fişier are multe înţelesuri. Din punct de vedere a sistemului de operare orice
structură date care are un nume şi ocupă un spaţiu pe disc este fişier. Exemplele sunt de
natură diversă: un document (fişier word), un fişier Excel, un fişier mp3, fişier DLL, un
driver, însuşi softul word conţine un fişier executabil, care este de fapt programul word
(word.exe), dar şi un fişier de date cu extensia dbf. Acesta din urmă are, în schimb, o
structură de tip bază de date.
1. Structuri de date
Înainte de toate consider că este util să reamintim câteva noţiuni generale privitoare la
structurile de date în general, care vor fi folositoare pentru înţelegerea în profunzime a
modului de organizare a fişierelor de date şi a bazelor de date.
Noţiunea de structură de date se referă la forma conceptuală a datelor, adică aşa
cum este percepută de utilizator.
Stocarea în memorie a unui număr presupunea două entităţi: adresa locaţiei şi
locaţia în care este înregistrat numărul respectiv. Memoria principală a calculatorului este
organizată ca un ansamblu de celule separate, care au adrese consecutive. Spunem că
aceasta este organizarea din punct de verdere fizic. A gestiona direct o astfel de structură
este foarte dificil astfel că de cele mai multe ori este mai convenabil să li se asocieze un
1
alt mod de aranjare. Astfel a apărut noţiunea de structură conceptuală, adică aşa cum
este perceput utilizator. Corespondenţa cu înregistratra fizică este făcută de un soft
special sau de sistemul de operare (SO).
Cele mai simple structuri de date sunt tablourile. Ele pot fi unidimensionale sau
multidimensionale. Pentru tablourile unidimensionale se mai foloseşte termenul de
vector. Am evitat folosirea acestui termen pentru a nu se crea confuzie cu structurile
spaţiale vectoriale. Următoarea structură, în ordinea complexităţii este cea de tablou
bidimensional. În fig. 1 am înfăţişat un model conceptual pentru acest caz şi organizarea
corespunzătoare (fizică) în memorie .
2
identificăm adresa sa. Situaţia este şi reciprocă: dacă ştim adresa vom şti şi elementul
care se găseşte la această adresă. Fiind vorba de valori numerice, adresele sunt, la rândul
lor, foarte uşor de stocat în memorie. Prin urmare, aşa cum elementul propriu-zis poate fi
înregistrat într-o celulă din memorie, şi adresa lui poate fi stocată în altă celulă. Într-un
fel, putem spune că celula care conţine adresa elementului „indică” elementul respectiv,
de unde şi numele de pointer (point) care se dă celulelor care conţin adrese. Alte exemple
de pointeri sunt adresele URL utilizate pentru legarea între ele a documentelor hipertext,
cu diferenţa că ele sunt pointeri către locaţii din Internet. Această noţiune va fi folosită
mai târziu şi în structurile bazelor de date.
De exemplu un nod al unei structuri de date arborescente (fig. 2 a) conţine pe
lângă alte informaţii pointeri corespunzători subarborilor din nod. De asemenea, o celulă
a unei liste unidirecţionale va avea un câmp a cărui valoare reprezintă pointerul
corespunzător celulei succesoare din listă (fig. 2 b)
2. Fşiere de date
Din punct de vedere al unui utilizator un fişier de date este o grupare de date omogene din
punct de vedere al semnificaţiei acestora şi a cerinţei de prelucrare. Ele sunt create cu un
anumit soft (limbaje de programare sau soft specializat), fiind dependente de acesta.
Fişierul este o structură de organizare care prezintă un dublu aspect: unul fucţional
sau logic, legat de natura datelor pe care le conţine şi unul fizic, legat de suportul pe care
este înregistrat. Nivelul logic este forma sub care este văzut de utilizator, iar cel fizic este
legat atât de suport (cum se stocheză) cât şi de sistemul de operare. Nivelul fizic
condiţionează nivelul logic de organizare al fişierului.
Elementul de bază al unui fişier, sub aspect funcţional, este articolul sau
înregistrarea logică, iar sub aspect fizic este blocul sau înregistrarea fizică.
Unde AN indică un câmp alfanumeric, iar N un câmp numeric. În paranteze s-a indicat
lungimea câmpului.
3
Rămâne să completaţi dvs. lungimea şi conţinutul articolelor.
Exemplul 2. Fiind dat un teritoriu (să zicem judeţul Cluj), pe care îl vom numi CLUJ,
considerăm următoare structură de articol:
În acces secvenţial articolele sunt tratate unul după altul, începând cu primul articol
înregistrat şi terminând cu cel căutat. Accesul poate fi utilizat fie în scriere, fie în citire.
Avantaj: organizare simplă. Dezavantaj: viteză redusă de acces datorită parcurgerii tuturor
articolelor care îl preced pe cel căutat. Procesul poate fi considerabil simplificat dacă este
ordonat după un anumit câmp numit câmp cheie. Pentru actualizarea unui fişier secvenţial,
noile date sunt înregistrate (adăugate) mai întâi sub forma unui alt fişier secvenţial, cunoscut
sub numele de fişier tranzacţional. Apoi acesta este sortat după aceeaşi cheie şi înregistrările
din fişierul iniţial sunt actualizate în ordinea lor de apariţie. Această organizare este
inadecvată pentru fişiere mari.
În acces selectiv, articolele pot fi tratate direct, fără a parcurge toate articolele care îl
preced şi are două variante: acces indexat şi acces direct. În acces direct (random access
adică acces aleator) înregistrările conţin pointeri înspre alte înregistrări. Deoarece accesul
indexat este foarte important şi pentru baze de date, va fi abordat mai detaliat.
Un index este o colecţie de date care permite să se localizeze mai rapid anumite
înregistrări dintr-un fişier. Un index pentru un fişier sau bază de date este similar unui index
dintr-o carte. Este o structură asociată unui fişier, la care se poate face referire atunci când se
caută un articol, la fel ca şi căutarea în indexul unei cărţi. Un index elimină parcurgerea
secvenţială a fişierului.
Pentru generearea unui fişier index trebuie specificat un câmp care are valoare unică
(două articole nu pot avea aceeaşi valoare a câmpului respectiv) care se numeşte câmp
cheie. Un index pentru un fişier constă dintr-o listă de valori care apar în câmpurile cheie ale
fişierului, la care se adaugă poziţia înregistrării pe suport. Adică :
(cheie, adresă fizică)
4
Lista elementelor care au forma de mai sus se numeşte tabel de index, care se materializează
pe disc sub forma unui fişier numit fişier de index, iar fişierul de date căruia i s-a asociat un
fişier de index se numeste fişier indexat.
De exemplu, dacă avem o listă de proprietari de parcele, am putea construi un index care să
conţină lista numerelor de identificare a proprietarilor cum ar fi CNP, care este unic şi care
este de fapt cheia. Într-un astfel de fişier, regăsirea înregistrării unui anumit proprietar
presupune căutarea în index a CNP respectiv şi apoi citirea înregistrării corespunzătoare de
la poziţia indicată.
Această tehnică este foarte generală. Într-un fel, sistemul de operare a unui calculator
consideră că toate fişierele stocate pe disc formează un fişier foarte mare, iar directorul este
un index stocat pe disc, pe care SO îl utilizează pentru a localiza fişierele solicitate.
5
Atunci când un fişier de index este prea mare, iar organizarea secvenţial-indexată nu
dă rezultate, timpul de căutare creşte. Pentru a optimiza timpul de căutare s-a introdus
termenul de index cu niveluri multiple. Acesta presupune crearea unui nou index al
indexului, de dimensiune mai mică. Cu alte cuvinte fişierul de index este tratat ca şi un fişier
de date oarecare şi căruia i se ataşează un alt index. Acesta se numeşte index de nivelul 2.
Procedeul se poate repeta, în cazul structurilor de date mari, generânduse din tabela de
indecşi de nivelul 2 un alt tabel index pe care îl vom numi index de vivelul 3. Procedeul se
poate repeta, teoretic, pentru index de nivelul n. După cum vom vedea mai jos în acest
capitol, nivelul 3 este suficient pentru accesarea optimă a majorităţii structurilor de date
inclusiv a celor geografice.
6
- se şterge vechiul fişier;
- se redenumeşte noul fişier cu numele celui dintâi.
Deoarece structura fişierelor este încorporată în programele de aplicaţie, ea este
dependentă de limbajul în care au fost scrise acestea. De asemenea codul intern în care
sunt stocate fişierele sunt diferite de la limbaj la limbaj. De aceea exploatrea fişierelor
scrise cu limbaje diferite este foarte complicată. Chiar în limbaje cunoscute, cum ar fi
Basic, cel puţin pentru versiunile din anii 80, codul intern pentru fişiere secvenţiale
(ASCII) este diferit de cele cu acces direct (cod binar propriu). În consecinţă nu există un
control al accesului şi manipulării datelor dincolo de cel impus de către programele de
aplicaţie. Astfel portabilitatea este cvasiinexistentă.
Pe de altă parte cerinţele impuse de sistemele informatice tot mai complexe au condus la
necesitatea ca în proiectarea sistemelor de prelucrare a datelor să ţină seama de
dezideratul că mai mulţi utilizatori să aibă acces la aceeaşi colecţie de date, iar
organizarea să fie astfel realizată încât să fie satisfăcute în mod optim cerinţele de
prelucare multiuser.
3. Baze de date
Există mai multe definiţii pentru baza de date, fiecare dintre ele scoţând în evidenţă anumite
aspecte, care de cele mai multe ori sunt asociate cu anumite domenii aplicative. În cele ce
urmează vom da două definiţii, care oarecum se completează una pe alta. Pentru a păstra
originalitatea noţiunilor, nu am combinat acele definiţii. Ne-am mulţumit să le comentăm.
Din aceste comentarii va rezulta clar esenţa noţiunii de BD, care este atât de utilizată fie
corect fie abuziv, aşa cum am menţionat mai sus.
După "Le Journal Officiel" (17 ian. 1982) baza de date (BD) este un ansamblu de
date organizate în vederea utilizării sale prin programe corespunzătoare aplicaţiilor
distincte şi de manieră de a facilita evoluţia independentă a datelor şi programelor.
Deoarece, la prima vedere s-ar părea că nu există o deosebire esenţială între un fişier
şi o bază de date (BD), în cele ce urmează vom comenta conţinutul acestei definiţii, în
primul rând pentru a înţelege mai bine această noţiune şi în al doilea rând pentru a vedea
7
deosebirile dintre aceasta şi fişierul de date. În mod inevitabil, pentru a scoate în evidenţă
aceste deosebiri vom relua caracteristicile din definiţie, într-o manieră mai sintetizată.
1. <Un ansamblu de date organizate...>. O BD este deci ca un fişier, un ansamblu
de date. Se distinge deci un al doilea tip de ansamblu de date, deoarece fişierele sunt
inadaptate la anumite sarcini. Fişierele sunt create, în principiu, pe parcursul dezvoltării unor
aplicaţii, în măsura necesităţilor. De cele mai multe ori informaţiile stocate sunt redundante,
incoerente sau insuficient structurate.
Fişierele sunt redundante, deoarece aceleaşi date se regăsesc în final, în mai multe
fişiere. Aceasta implică un volum mare de informaţii de stocat şi multe operaţii de
actualizare.
Fişierelor le lipseşte coerenţa, deoarece datorită redundanţei este dificil de a
actualiza toate fişierele în acelaşi timp (aflându-se de multe ori în locuri diferite).
Fişierelor le lipseşte structurarea, deoarece fiind create pe parcurs şi fără nici o
viziune globală, seamănă cu date prea specifice care nu permit utilizarea lor pentru o nouă
tratare.
Pentru a remedia aceste defecte, noţiunea de BD vizează înlocuirea diferitelor fişiere
printr-o singură BD pusă la dispoziţia utilizatorilor: ea unifică structurarea şi stocarea
informaţiei datorită unui model unic şi coerent de date.
2. <...în vederea utilizării prin programe corespunzătoare unor aplicaţii
distincte...>. Acest model unic de date nu trebuie legat de o aplicaţie specifică care să-i
"îngheţe" structura. Din contră el trebuie să fie suficient de general pentru a se putea adapta
la toate situaţiile particulare.
Concepţia unei BD necesită, în consecinţă, o analiză globală şi de perspectivă a
datelor.
3. <...şi de manieră să faciliteze evoluţia independentă a datelor şi
programelor.>. În mod tradiţional, în limbajele COBOL, Pascal, BASIC, fişierele sunt
create în programe care le şi exploatează, sau în programe înlănţuite (unul creează, altul
exploatează şi eventual altul actualizează), aceasta depinzând de natura aplicaţiei. Deci
datele şi programele sunt legate în mod intim. Într-o BD, datele sunt descrise independent de
programe, toate găsindu-se într-un singur loc (ca un container). Aceasta evită redescrierea
datelor în diferite programe care le utilizează şi permite modificarea programelor (sau a
datelor) fără ca datele (sau programele) să fie atinse.
Această definiţie are un neajuns, anume că nu face referire la relaţii între structurile
de date. Pentru a lămuri şi această caracteristică vom da şi o altă definiţie (Connolly ş.a.,
2001) pe care o vom adăuga la cea de mai sus.
O bază de date este o colecţie partajată de date, între care există relaţii logice (şi o
descriere a acestor date), proiectată pentru a satisface necesităţile informaţionale ale unei
organizaţii.
4. < … colecţie partajată de date…>. La o bază de date poate avea acces un singur
utilizator (monouser) sau mai mulţi utilizatori simultan (multiuser). Administratorul de BD stabileşte
maniera de acces la BD utilizatorilor externi pentru a proteja BD de accesul neautorizat.
5. < … între care există relaţii logice (şi o descriere a acestor date)…>. Atunci când se
analizează necesităţile informaţionale ale unei organizaţii, se încercă identificarea entităţilor
atributelor şi a relaţiilor. O entitate este un obiect distinct (o persoană, un poligon, un concept sau un
eveniment) care trebuie reprezentat în baza de date. Un atribut este o proprietate care descrie un
8
aspect oarecare al obiectului pe care dorim să-l înregistrăm, iar o relaţie este o asociaţie între mai
multe entităţi.
Această parte din definiţie este de o deosebită importanţă în stabilirea relaţiilor în
cadrul datelor geografice, după cum vom vedea mai departe.
9
Descrierea datelor se face atât la nivel logic (utilizator) cât şi la nivel fizic (suport).
Funcţia de descriere permite definirea structurii datelor (a modelului de date) şi al relaţiilor
dintre acestea. De asemenea, tot prin intermediul acestei funcţii se definesc şi condiţiile de
acces la informaţiile conţinute în BD. Descrierea structurii se realizează cu ajutorul unui
limbaj de descriere propriu fiecărui SGBD.
Utilizarea datelor. În mod obişnuit se disting: interogarea BD şi punerea la zi
(actualizarea). Aceste două tipuri de operaţii se fac fie direct prin limbajul de manipulare a
datelor (limbaj autonom), fie prin intermediul unor instrucţiuni specifice scrise într-un
anumit limbaj de programare (limbaj gazdă). Funcţia de utilizare permite comunicarea între
utilizator şi BD sub aspectul asigurării mijloacelor de comunicare care îl avantajează cel mai
mult. Utilizarea eficientă a datelor implică posibilitatea de acces indexat la date pentru
mărirea vitezei.
Coerenţa datelor. Un SGBD trebuie să permită unui utilizator să definească reguli
precise pentru menţinerea coerenţei (se mai zice "integritate") datelor unei baze. Aceste
reguli sunt numite restricţii de integritate ale BD. Ele nu permit, de exemplu, într-o BD de
personal ca două persoane să aibă acelaşi matricol.
Confidenţialitatea datelor. Un SGBD trebuie să permită definirea drepturilor de
acces utilizatorilor la date pentru a le consulta sau actualiza. Aceasta se realizează prin chei
de protecţie, parole sau informaţie criptată.
Securitatea datelor. Dacă în cursul unei manipulări a BD, se produce un incident
fizic (de exemplu întrerupere de curent) sau de programe, SGBD trebuie să preîntâmpine
acestea prin diferite strategii. De asemenea accesul la BD trebuie să fie controlat pentru a
preîntâmpina accesul neautorizat. Adiminstratorul de BD este responsabil în atribuirea
accesului (numai în citire sau în citire şi scriere).
Concurenţa accesului. Dacă utilizatori diferiţi doresc să acceseze în acelaşi timp
aceleaşi date, SGBD trebuie să regleze această concurenţă ordonând cererile. Nu toate
SGBD-urile au această funcţie, după cum vom vedea mai departe
10
prezent (Connolly ş.a., 2001) constituie tehnică larg acceptată pentru proiectarea BD.
Însuşi Codd a încercat să abordeze un nou model, propunând o versiune extinsă a
modelului relaţional, denumit RM/T (1979), iar mai recent RM/V2 (1990). Încercările de
a oferi un model de date care să reprezinte mai fidel « lumea reală » au fost clasificate ca
modelări semnatice.
Ca răspuns la creşterea complexităţii aplicaţiilor au apărut noi modele şi anume :
modelul de date orientat spre obiecte şi modelul de date relaţional cu obiecte. Aceste noi
abordări în tehnologia bazelor de date au condus la ceea ce se numeşte generaţia a treia
de sisteme SGBD.
Există aplicaţii care se fac cu anumită dificultate şi pe aceste SGBD, astfel că s-au
abordat tipuri noi, care acum sunt în dezvoltare, anume SGBD deductive şi obiect
deductive. Acestea sunt puţin implementate la ora actuală, dar se anticipează că vor fi larg
acceptate în viitor.
Pe de altă parte, apariţia şi răspândirea reţelelor de calculatoare a avut ca rezultat
dezvoltarea într-o nouă direcţie a SGBD-urilor, acestea căpătând un caracter multiuser. De
asemenea, au apărut bazele de date distribuite, care reprezintă BD logic integrate, dar fizic
distribuite pe mai multe sisteme de calcul. Utilizatorul unei asemenea baze de date o vede ca
pe o bază unică, compactă (acesta este nivelul logic), cu toate că, în realitate, ea este
împărţită pe mai multe calculatoare diferite evident legate între ele (nivelul fizic). Această
organizare a dus la o creştere substanţială a vitezei de acces la o BD într-o reţea, eliminându-
se pe cât posibil, transferurile de date între calculatoare (care limitează viteza de lucru). Tot
datorită distribuirii se măreşte considerabil limita maximă a dimensiunii unei BD, care nu
mai este determinată de capacitatea fizică a unui singur sistem de calcul.
În plus independenţa de programe a datelor a permis evoluţia SGBD fără ca firmele
de soft să fie preocupate de compatibilitatea în jos, aceasta făcându-se automat.
11
Este unul din cele mai vechi (apărut în jurul anului 1965). Structura fundamentală care
susţine o ierarhie este arborele. Structura cuprinde noduri conectate prin legături numite
arce sau muchii. Nodul cel mai de sus este numit nod rădăcină şi poate avea zero sau mai
multe noduri « copil », fiecare, la rândul lor putând avea zero sau mai multe alte noduri
« copil ». Ca urmare, structura poate fi definită recursiv. Cu alte cuvinte într-o structură
ierarhică pe mai multe nivele, orice element este în relaţie cu cel mult un element aflat la
nivelul imediat superior şi opţional cu mai multe elemente aflate la nivelul imediat inferior.
O informaţie este accesibilă numai pornind de la un punct de intrare unic: rădăcina. În afară
de nodul rădăcină, toate nodurile din arbore trebuie să aibe un nod « părinte ». Orice
porţiune a arborelui cu o originea într-un nod, în afară de nodul rădăcină, este numit
subarbore. În termeni practici, fiecare nod poate fi reprezentat printr-un tip de înregistrare,
iar fiecare legătură fie printr-un pointer înglobat în fiecare tip de înregistrare, fie prin
aranjarea fizică a înregistrărilor. Acest mod de organizare conduce la metode rapide de acces
la date pe verticală.
Sistemele ierarhice presupun că fiecare nivel poate fi atins folosind o cheie de
identificare. Între acestea şi atributele asociate există o legătură foarte precisă. Accesul la
date prin intermediul cheilor este foarte uşor, însă foarte dificil prin intermediul atributelor
asociate. Cheile de identificare formează un fişier index. În cazul BD mari, fişierele index
sunt şi ele voluminoase şi trebuiesc întreţinute. Aceasta conduce la o repetare a unor
atribute, conducând astfel la o redundanţă, BD mărindu-se în mod inutil.
Pentru structurile informaţionale, accesul obişnuit este de sus în jos. Aceasta
deoarece cele mai semnificative date, care sunt accesate frecvent, sunt plasate la nivelurile
superioare ale arborelui. De regulă, datele stocate la nivelurile inferioare sunt dependente
logic de datele aflate la nivelurile superioare şi, dacă este necesar vor fi regăsite în
conjuncţie cu acestea.
[Avantaje şi dezavantaje]
O caracteristică importantă a structurilor ierarhice este că apariţiile « copil » este
condiţionată de existenţa « părinte ». Prin urmare, în cadrul acestui model este constituită o
dependenţă, astfel încât, dacă se şterge o radăcină, atunci este şterasă întreaga structură în
jos. Un neajuns important este incapacitatea de a stoca tipuri de înregistrări care nu au o
apariţie de tip « părinte ». Un alt neajuns constă în dificultatea de a modela realţii de tipul
mai mulţi - la - mai mulţi sau alte relaţii complexe, care nu sunt ierarhice, în care un tip de
înregistrare are relaţii distincte cu mai multe alte înregistrări.
Dintre structurile ierarhice mai cunoscute în informatică amintim structura
sistemului de oparare Windows. De asemenea sistemul de organizare ierarhic este
binecunoscut în cercetarea mediului înconjurător, fiind folosit pentru taxonomii de plante
sau animale, clasificări de soluri, etc.
Datele geografice pot fi stocate într-o structură ierarhică într-un mod care reflectă
realitatea. Un exemplu este atunci când nivelurile unui model ierarhic corespund
nivelurilor administrării realităţii, de exemplu într-o ţară, judeţ, municipiu sau oraş.
Sistemele de baze de date ierarhice sunt uşor de extins şi de întreţinut. Totuşi, ele necesită
fişiere index mari, trebuie frecvent întreţinute şi sunt susceptibile la multe intrări. Căutările sunt
rapide, dar rutinele de căutare sunt fixate şi îngrădite de structuri. Astfel, înregistrările de la
acelaşi nivel nu pot fi căutate, şi nici nu se pot defini noi legături sau noi rutine de căutări.
Elementele de structură sunt corelate doar prin conexiunile unul la mai mulţi.
12
Această constrângere impune presupunerea că toate interogările sunt cunoscute
dinainte şi că se ţine cont de acestea în procesele de structurare şi de intrare a datelor.
Această constrângere nu este întotdeauna naturală sau potrivită pentru aplicaţiile GIS. Ca
rezultat, sistemele de baze de date ierarhice sunt de obicei restricţionate la stocarea
datelor hărţii în GIS
În fig. 5 am exemplificat o BD arborescentă atribut, iar în figura 6 o BD spaţială.
13
Figura 6 (adapatare după Bernhardsen, 1992)
Stocarea datelor spaţiale într-o BD arborescentă. De observat faptul că liniile şi punctele sunt
stocate de două ori. Aici avem un table de indecşi spaţiali
14
Figura 7 (adapatare după Bernhardsen, 1992)
Stocarea datelor spaţiale într-o BD reticulară. Aici avem un table de indecşi spaţiali
15
de valori pe care le poate lua atributul. Prin aceasta se poate evita introducerea incorectă a
datelor sau introducerea unor operaţii incorecte din punct de vedere semnatic. Acest lucru
constituie cea ce se numeşte o validare proforma. De exemplu dacă într-o BDR privind
clădirile avem un atribut care reprezintă anul, acesta nu poate fi mai mare decât anul
curent şi nici mai mic decât cea mai veche casă, să zicem 1940.
AB={(x,y)| x A, yB}
= {(3,1), (4,1)}
Dacă considerăm că mulţimea A are n elemente şi B are m elemente, adică A={a1, a2,
a3, ... an} şi B = {b1, b2, b3, ... bm}, relaţia se mai scrie
ai bj (i=1,2,...n; j=1,2,..,m)
b1 b2 b3 ... bj ... bm
a1 r11 r12 r13 ... r1j ... r1m
a2 r21 r22 r23 ... r2j ... r2m
a3 r31 r32 r33 ... r3j ... r3m
...
ai ri1 ri2 ri3 ... rij ... rnm
...
an rn1 rn2 rn3 ... rni ... rnm
Aici rij reprezintă valoarea propriu-zisă a relaţiei (celulei).
Proprietăţile relaţiei.
O relaţie are următoarele carcateristici (Connolly ş.a., 2001)
- are o denumire, diferită de toate celelalte denumiri de relaţii;
- fiecare celulă conţine exact o singură valoare (rij);
- fiecare atribut are o denumire distinctă;
- ordinea atributelor nu are nici o importanţă;
- fiecare tuplu este distinct, adică nu există dubluri;
16
- teoretic ordinea tuplurilor nu are nici o importanţă (totuşi, în practică, ordinea poate
afecta eficienţa accesării tuplurilor).
Într-o relaţie matematică, ordinea elementelor dintr-un tuplu este importantă. De exemplu
perechea (3,1) este diferită de perechea (1,3). Acest lucru nu este valabil şi pentru relaţiile din
modelul relaţional, care impune în mod special ca ordinea atributelor să nu prezinte importanţă.
Motivul este că anteturile coloanelor definesc cărui atribut îi aparţin valorile. Aceasta însemnă că
nu contează ordinea anteturilor coloanelor, dar odată aleasă structura unei relaţii, ordinea
elementelor din interiorul tuplurilor trebuie să corespundă ordinii denumirilor atributelor.
Pentru o percepţie mai facilă şi mai ales pentru a nu crea confuzii între noţiunile consacrate în
sistemele tradiţionale şi cele geografice, sintetizăm următoarele: tuplu = linie (sau rând), atribut =
coloană (câmp).
În sistemul de baze de date relaţional, nu există o ierarhie şi nici chei specifice care să
facă trimitere la diferite înregistrări. Toate câmpurile dintr-o linie pot fi privite ca fiind
permanent conectate între ele, dar tabelele individuale nu conţin nici o altă informaţie
despre alte tabele. Cu toate acestea, orice câmp dintr-un tabel poate reprezenta o cheie
pentru accesarea datelor din alt tabel. Sistemul permite ca toate rândurile şi coloanele să
fie corelate între ele. Aceasta înseamnă că o colecţie de date a mai multor obiecte cu
relaţii complexe poate rezulta într-un număr mare de tabele – un neajuns al abordării
relaţionale.
Aşa cum am precizat fiecare coloană descrie un anumit atribut. În cadrul unei
relaţii cel puţin un atribut trebuie să aibă o valoare unică pentru fiecare tuplu. Acest
atribut se numeşte cheie primară. Ea identifică un tuplu şi alte atribute care sunt
dependente de acesta şi nu trebuie să aibă o valoare nulă. Stabilirea relaţiilor este
importantă pe tot parcursul proiectării bazei de date dar şi pe parcursul implementării de
aplicaţii. Acest lucru înlătură redundanţa şi păstrează consistenţa BD atunci când se fac
modificări. Pentru tabela de atribut a unui strat tematic BDR este ideală. În fig. 8 avem
două tabele corelate. Problemele apar la entităţile spaţiale şi la relaţiile dintre ele, aşa cum
vom vedea mai jos.
Spre deosebire de modelul ierarhic şi cel reticular nu există pointeri în tabelele de date.
Tabelele index interne sunt folosite pentru direcţionarea comunicaţiilor intertabelare, ceea
ce înseamnă că sistemul trebuie să deschidă cel puţin un tabel de indecşi pentru fiecare
conexiune între tabele de date. Aceasta poate duce la apariţia unui număr mare de tabele
şi poate îngreuna accesul. Mai mult, căutările pentru înregistrări sau câmpuri trebuie să
fie secvenţiale în tabele. Rezultatul este că sistemele de baze de date relaţionale sunt
inerent mai încete decât sistemele de baze de date ierarhice sau de tip reţea. Acest lucru
este compensat de performanţele hardware.
17
Figura 9 (adapatare după Bernhardsen, 1992)
Stocarea datelor spaţiale într-o BD relaţională
Totuşi, un câmp poate fi rapid localizat într-un tabel dat şi datele accesate pot fi
manipulate. Structurile simple ale sistemelor de baze de date relaţionale au permis
dezvoltarea limbajelor de interogare standard, unul din aceste limbaje fiind SQL
(Standard Query Language).
SGBD-urile relaţionale sunt, în prezent, tipul cel mai folosit în aplicaţiile GIS,
mai ales datorită structurilor sale simple şi flexibile. Un alt motiv este acela că susţin
relaţiile complexe, des întâlnite în cadrul obiectelor geografice din lumea reală. Intrările
multiple sunt mai puţin frecvente decât în sistemele de baze de date ierarhice sau de tip
reţea, cu toate că timpul de căutare este, de obicei, mai îndelungat. Acest lucru este mai
ales întâlnit în operaţii specifice pe date geografice digitale, de exemplu atunci când se
formează poligoane sau când folosim plasarea automată a textului.
18
fost propuse mai multe modele de date semantice diferite care să poată gestiona mai
eficient noile structuri dar să păstreze totodată şi proprietăţile relaţionare. Dintre acestea
vom prezenta modelul entitate – relaţie (ER) şi modelul entitate – relaţie extins (EER).
Menţionăm faptul că aceste modele au un grad de abstractizare şi dificultate mai ridicat.
6.2. Modelul entitate - relaţie extins (EER). Deoarece modelul ER are anumite limitări
s-a propus un model extins al acestuia care, aşa cum vom vedea mai departe se apropie de
modelele obiect - relaţionare, care se vor dovedi cele mai eficiente. Modelul EER
presupune construirea de clase, superclase şi categorii, care sunt strâns legate de
operaţiunile de generalizare şi specializare precum şi de mecanismul de moştenire a
atributelor. Acestea permit o descriere a datelor din BD cu mai multă semnificaţie şi
conduce la modelarea orientată obiect.
Supercalsa este un tip de entitate care include subclase distincte, care trebuie să
fie reprezentate într-un model de date. O subclasă este un tip de entitate care are un rol
distinct şi este membru a unei superclase. În unele cazuri, un tip de entitate poate avea
19
mai multe subclase distincte. De exemplu supreclasa poligon poate fi clasificată în
trinunghiuri şi dreptunghiuri. Cu alte cuvinte entitatea Poligon reprezintă o superclasă a
subclaselor trinunghi şi dreptunghi. Fiecare membru a unei subclase este şi un membru a
superclasei corespunzătoare. Sau dacă vreţi, membrul subclasei este acelaşi ca entitatea
superclasă, dar are un rol distinct. Relaţia dintre clasă şi superclasă este de unu-la-unu
(1 :1). Există două motive importante pentru introducerea conceptelor de clasă şi
superclasă în EER. În primul rând se evită scrierea conceptelor similare mai mult decât o
singură dată, ceea ce are ca efect economisirea timpului de proiectare şi face ca diagrama
EER să fie mai lizibilă. Un al doilea motiv este că în faza de proiectare se adaugă mai
multe informaţii semanatice, într-o formă accesibilă mai multor utilizatori. Operaţiunea
de formare a subclaselor din superclasă este numită specializare, iar operaţiunea de
formare a superclasei din subclasă se numeşte generalizare. Cele două operaţiuni sunt
inverse. Cu alte cuvinte specializarea este procesul de creare a unei noi clase astfel că
fiecare apariţie a subclasei este o apariţie a superclasei şi subclasa are aceleaşi atribute ca
şi superclasa şi câteva în plus. Subclasa intră în aceleaşi relaţii în care este implicată
superclasa şi eventual în alte relaţii. Întreaga colecţie de superclase şi subclase într-un
model particular EER se numeşte ierarhie. Proprietăţile superclasei sunt transmise
subclaselor din ierarhie. Acest proces se numeşte moştenire.
O problemă tehnică privind generalizarea poate apărea atunci când realizăm
această operaţiune pornind de la tipuri de entităţi eterogene. Dificultatea poate proveni
din a găsi un set de identificatori ale atributelor pentru clasa generală, deoarece subclasele
pot să aibă identificatori diferiţi. Aceste considerţii conduc la conceptul de categorizare,
în care mai multe entităţi eterogene (care au propri lor identificatori şi relaţii) se combină
într-o categorie comună (Elmasri, Narathe, 1994). Categorizarea adaugă o putere
considerabilă procesului de modelare.
În cele ce urmează vom da câteva definiţii importante (Connolly ş.a., 2001). Un model de
date orientat pe obiecte (MDOO) este un model (logic) de date care conţine semantica
obiectelor, acceptată în programarea orientată spre obiecte (POO). O bază de date
20
orientată spre obiecte (BDOO) este o colecţie de obiecte persistente şi partajabile care
sunt definite de MDOO. SGBDOO este administratorul unei BDOO. Aceste definiţii nu
sunt deloc descriptive şi tind să reflecte faptul că nu există nici un model de date orientat
spre obiecte echivalent modelului de date relaţional. Fiecare sistem asigură interpretarea
lui proprie a funcţionalităţii de bază. De exemplu, Zdonik şi Maier (citat de Connolly,
2001) prezintă un minim de condiţii pe care trebuie să-l satisfacă un SGBDOO :
-trebuie să asigure funcţionalitatea bazei de date;
-trebuie să accepte identitatea obiectelor;
-trebuie să asigure încapsularea;
-trebuie să accepte obiecte cu stare complexă.
Autorii afirmă că, moştenirea poate fi utilă însă nu este esenţială în definirea SGBDOO.
Deoarece SGBDOO nu sunt prezente în softurile GIS ne vom opri aici cu detaliile. Mult
mai importante şi de actualitate sunt SGBD obiect – relaţinonale.
Încă de la începutul anului 2001 trei producători de SGBD au lansat pe piaţă extensii
pentru BD spaţiale la SGBDR proprii: IBM DB2 Spatial Extender, Informix Spatial
Datatable şi Oracle Spatial Option. Deşi sunt diferite din punct de vedere al tehnologiilor,
el oferă stocarea, interogarea şi managementul obiectelor geografice. Trebuie remarcat
faptul că niciunul dintre ele nu este soft GIS propriu-zis. Scopul acestor extensii se
rezumă doar la stocarea datelor spaţiale şi nespaţiale, regăsirea şi managementul lor,
neavând însă posibilitatea pentru editări şi analiză spaţială. De aceea ele se folosesc
împreună cu softurile GIS. În fig. YYY am înfăţişat modul în care lucrează GIS împreună
cu SGBD.
21
digital de elevaţie). Clasele de obiecte sunt stocate în tabele bază de date. Un tabel este o
structură bidimensională care conţine înregistrări (rânduri) şi coloane. Fiecare clasă de
obiecte este stocată într-un singur tabel în cadrul BD gestionată de un SGBD. Rândurile
(înregistrările) conţin obiectele (instanţe ale clasei de obiecte), iar coloanele conţin
proprietăţile obiectelor sau atributele (fig de mai jos).
Data determinată de intersecţia unui rând cu o coloană se mai numeşte valoare. Tabelele
baze de date geografice se deosebesc de tabelele ne-geografice prin prezenţa unei coloane
geometrice (numită adesea coloana shape). Pentru a economisi spaţiu şi pentru a
îmbunătăţi performanţele, valorile coordonatelor pot fi stocate într-un format binar
compactat obiectual, astfel că acestea nu pot fi citite direct, ca şi alte tipuri de date cum ar
fi cele numerice (întregi, reale) alfanumerice (text) sau de tip dată. Ideea principală este
că un tabel relaţionar conţine o coloană de obiecte. Accesul la obiecte se face prin
interfaţă obiectuală.
Bazele de date relaţionale se compun din tabele. Fiecare clasă de obiecte
geografice este stocată ca un tabel.
Există însă situaţii când unele câmpuri se repetă, cum ar fi de ex: o clădire are mai multe
apartamente, o parcelă are mai mulţi proprietari. În această situaţie, pentru a elimina
redundanţa (repetarea unor înregistrări) se reorganizează tabelul principal (astfel încât să
avem doar o singură înregistrare pentru clădire) şi se generează un alt tabel care poate fi
asociat cu acesta (apartamentele). Aceste două tabele se reunesc în momentul interogării
BD sau a unor prelucrări (relate).
9. Baze de date deductive. Pe lângă SGBD-urile prezentate, mai există şi alte tipuri,
dintre care menţionăm SGBD deductive, care nu sunt încă implementate în software GIS
comerciale. O BD deductivă se bazează pe limbaje logice cum ar fi Prolog. Programarea
logică constă în două părţi : un sistem de programare logic, care reprezintă cunoştinţe
declarative şi un mecanism de deducere folosit pentru a răspunde interogărilor ce se
bazează pe acele cunoştinţe. O interogare pe un model de BDR poate fi văzut ca o
expresie a unui set de de stări. O BD deductivă include nu numai un set de stări ci şi
propoziţii. Stocarea propoziţiilor produce o evitare a stocării de date. De asemenea o BD
deductivă permite să se facă deduceri din date. Utilizarea logicii oferă o metodă naturală
22
şi intuitivă de generare precisă a unor definiţii ale geometriei şi un înalt nivel de relaţii
spaţiale (Worboys, 1995).
Utilizarea logicii în proiectare nu este nouă. Dintre aplicaţii posibile amintim pe
cele privind structuri gramaticale şi sistemele bazate pe raţionament (Chase, 1989;
Damski, Gero, 1996; Heisserman; Krishnamurti, 1992). Implementărea formelor
gramaticale au anumite limitări datorate problemelor computaţionale. În alte aplicaţii
cum ar fi cele privind proiectarea obiectelor, apar anumite neajunsuri deoarece cu
anumite excepţii, acestea nu suportă reiteraţii. Formalismul algebric ale geometriei (map
algebra) este extins prin utilizarea logicii pentru a-l face mai precis, mai general, fiind
posibile generarea definiţiilor parametrice ale geometriei şi ale relaţiilor spaţiale.
BD deductivă poate fi privită, într-un fel, ca şi ca o generalizare a BDR. Ea
conţine o extensie (similară cu BDR clasice) şi o intensiune (intension). Intensiunea
constă în relaţii virtuale care sunt definite în termenii altor relaţii, utilizând logica.
Important este faptul că avem relaţii care sunt definite, nu prin specificarea tuplelor, ci ca
şi combinaţii logice ale altor relaţii, care în cazul BD deducive se numesc ‘relaţii
virtuale’. Astfel BD deducive permit manipularea datelor implicate prin memorarea
explicită a faptelor / acţiunilor permiţând anumite genuri de operaţiuni care nu se
regăsesc în bazele de date convenţionale. Această abilitate este potenţial relevantă pentru
GIS, în care este stocată multă informaţie în formă explicită.
Utilizarea logicii oferă o metodă naturală şi intuitivă pentru generarea precisă a
definirilor geometriei parametrizate şi un înalt nivel de relaţii spaţiale. Utilizarea lor ca
specificaţii şi instrumente ale programării au devenit destul de răspândite în ultimele două
decade, oferind o serie de avantaje vis à vis de metodele de programare procedurale,
printre care abilitatea de a specifica cunoştinţe care pot fi încapsulate într-un model
(descriptiv) fără a fi necesară specificarea procedurilor de manipulare a datelor. Utilizarea
logicii facilitează metoda top-down, de la abstract la concret. Abstracţiunile simbolice ale
formulărilor logice permite specificarea tuturor claselor din structura de date, ignorându-
se detaliile. Aceasta poate fi o metodă mai naturală de dezvoltare decât dacă avem de-a
face cu formulări neintuitive.
Prin utilizarea deducţiilor se execută calcule şi intetrogări într-o BD deductivă. O
bază de date convenţională constă într-un ansamblu de date într-un format structurat (sub
formă de tabele în cazul BDR) definite şi accesate printr-un limbaj. Cele mai multe GIS
stochează datele în această manieră, fie sub formă de tabele într-o BDR, fie fie într-o
structură spaţializată de baze de date. În contrast cu acestea BD deductivă utilizează
logica ca un fundament pentru definirea bazei de date, interogarea şi manipularea. Ea
manipulează un ansamblu de expresii într-un limbaj bazat pe logică care permit formarea
de propoziţii, descrierea inter-relaţiilor şi managementul (gestiunea) stocării lor. În
acestea se definesc structuri de date care acţionează ca un limbaj de interogare şi un
mecanism de control. BD operează prin aplicarea (acţionarea) deducţiilor în expresii
logice pentru a evalua valoarea de adevăr sau pentru a găsi valori care le satisface.
În proiectarea BD deductivă trebuie să alegem o mare varietate de aserţiuni logice
care urmează a fi implementate. Sistemul logic trebuie să fie suficient de expresiv, să nu
încetinescă accesul la BD prin interogări şi să permită o mare varietate de modele
posibile. Datele trebuie stocate într-un format compact şi flexibil. Informaţia geografică
are o componentă spaţială şi în plus se pretează la aplicarea logicii. În cazul GIS nu sunt
necesare doar reguli deductive bazate pe date tabelare, ci şi reguli complexe bazate pe
23
obiect, adică un sistem care ia ce e bun din orientarea obiectuală, iar baza de date şi
deducerile logice devine un real suport pentru interfaţa grafică interactivă. Tehnologia
BD deductive este o speranţă în rezolvarea unor astfel de probleme. Orientarea obiectuală
şi logica nu sunt exclusive şi există anumite tentative de a le unifica în contextul GIS.
24
O bază de date distribuită este o colecţie intercolerată logic de date partajate (şi o
descriere a acestora), distribuite din punct de vedere fizic pe o reţea de calculatoare
(Connolly ş.a., 2001). Un SGBD distribuit este sistemul software care permite
gestionarea BD distribuite şi face ca distribuirea să fie transparentă pentru utilizator
(Connolly ş.a., 2001).
O bază de date ditribuită (BDD) este formată dintr-o singuă bază de date logică,
divizată într-un număr de fragmente. Fiecare fragment este stocat pe unul sau mai multe
calculatoare, sub controlul unui SGBD separat, cu calculatoare legate printr-o reţea de
comunicaţii. Fiecare sit este capabil să prelucreze independent cererile utilizatorilor care
necesită accesul la date locale şi de asemenea este capabil să prelucreze datele stocate pe
alte calculatoare din reţea. Deci fiecare sit are propria sa BD.
Punctul cheie în definirea unei baze de date distribuite constă în faptul că sistemul
este format din date, care sunt distribuite fizic în reţea. Dacă datele sunt centralizate,
chiar dacă alţi utilizatori pot să le acceseze prin reţea, aceasta nu este considerată a fi un
SGBDD, ci o simplă prelucrare distribuită.
Din punct de vedere al utilizatorului, un SGBDD nu se deosebeşte foarte mult de
un SGBD nedistribuit, însă din perspectiva implementării, a protocoalelor şi a
algoritmilor necesari pentru a oferi această funcţionalitate ridică o serie de probleme.
Toate acestea conduc la necesitatea ca distribuţia să fie transparentă faţă de utilizator,
care ascunde detaliile de implemetare faţă de acesta. De exemplu într-un SGBD
centralizat, independenţa de date este o formă de transparenţă, adică ascunde
utilizatorului organizarea BD. Un SGBDD poate prezenta diferite nivele de transparenţă,
dar toate au acelaşi obiectiv : să facă utilizarea BDD echivaelntă cu cea a unei BD
centralizate. Sunt mai multe tipuri de transparenţă, dar ne vom opri doar la unul singur,
anume transparenţa tranzacţiilor. Motivul pentru care facem acest lucru este că
versionarea BD geografice implică înţelegerea acesei noţiuni, după cum vom vedea mai
departe.
Prin transparenţa tranzacţiilor într-un SGBDD se garantează că toate tranzacţiile
distribuite păstrează integritatea şi coerenţa BDD. Printr-o tranzacţie distribuită se
accesează datele stocate în mai mult decât o locaţie. Fiecare tranzacţie este împărţită într-
un număr de subtranzacţii, câte una pentru fiecare sit care este necesar să fie să fie
accesat. Deoarece în majoritatea sistemelor informatice geografice avem doar un sistem
centralizat, nu există subtranzacţie.
Pentru a înţelege mai bine noţiunea de tranzacţie, vom da un exemplu. Să
presupunem că dorim să accesăm de pe calcultorul personal contul dintr-o bancă la care
suntem arondaţi şi dorim ca să transferăm bani din contul curent în contul de depozit. Un
astfel de transfer ţine aproximativ 0,01 secunde. Pe toată durata intervenţei, BD este
blocată până când transferul a fost efectuat. Adică orice altă tranzacţie este amânată până
la deblocare. Dacă dorim să transferărm bani din contul curent într-un cont din altă bancă
tranzacţia ţine mai mult. DB este din nou blocată o perioada scurtă de timp, iar până la
confirmarea transferului de către banca externă, suma tranferată este în « pending », dar
aceesul la BD este posibil.
25
performanţele. Raţiunea pentru care au fost dezvoltate astfel de siteme se bazează pe
premisa că sistemele cu un singur procesor nu face faţă prelucrărilor, păstrând totodată şi
o performanţă ridicată. Astfel în sistemele de baze de date paralele se leagă mai multe
maşini mici, pentru a obţine acelaşi transfer ca al unei singure maşini mari, adeseori cu o
scalabilitate şi fiabilitate mai mare. De obicei tehnologia paralelă este utilizată pentru
sistemele care trebuie să prelucreze baze de date foarte mari (de ordinul a teraocteţilor)
sau pentru sistemele care trebuie să prelucreze mii de tranzacţii pe secundă.
Există şi ceea ce se numeşte prelucraere distribuită şi paralelă, care combină cele
două caracteristici. Este cazul sistemelor GRID, care constă din mai multe calculatoare
conectate şi controlate de servere. Aceste calculatoare sunt considerate a fi în « standby »,
adică operaţionale dar care în momnetul trimiterii sarcinilor căre acestea ele sunt
neutilizate de proprietar. Astfel, dacă serverul este soliciat să facă mai multe taskuri, el va
decide care calculator va fi folosit pentru un task specific. Sigur că acesta din urmă
conţine toate componentele soft care să realizeaze sarcina. Serverul va direcţiona
taskurile după nişte reguli bine precizate către calculatoarrelde disponibile în acel
moment.
Vom face deosebire între un SGBDD şi un SGBD paralel. Un SGBD poate fi
numai paralel, numai distribuit, dar poate fi paralel şi distribuit.
26