Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
625.7(075.8)
CAPITOLUL 1 ....................................................................................................................... 1
INTRODUCERE ÎN MANAGEMENTUL ASISTAT DE CALCULATOR..................... 1
1.1. INTRODUCERE ........................................................................................................ 1
1.2. OBIECTUL CURSULUI ............................................................................................. 3
1.3. DATE, INFORMAŢII, CUNOŞTINŢE .......................................................................... 3
Datele ........................................................................................................... 4
Informaţia ..................................................................................................... 5
Cunoştinţele.................................................................................................. 8
1.4. VALOAREA DATELOR, INFORMAŢIILOR ŞI CUNOŞTINŢELOR................................ 9
1.5. UTILIZAREA DATELOR ......................................................................................... 11
1.6. BIBLIOGRAFIE ...................................................................................................... 12
CAPITOLUL 2 ..................................................................................................................... 14
STRUCTURI DE DATE ...................................................................................................... 14
2.1. ARTICOLUL .......................................................................................................... 14
2.2. TIPURI ABSTRACTE DE DATE ............................................................................... 15
2.3. SETUL ................................................................................................................... 17
2.4. TABLOUL .............................................................................................................. 18
2.5. LISTA ÎNLĂNŢUITĂ ............................................................................................... 19
2.6. URNE .................................................................................................................... 21
2.7. TABELE DE DISPERSIE (HASH TABLES) ................................................................ 21
2.8. STIVE .................................................................................................................... 22
2.9. COZI ..................................................................................................................... 24
2.10. ARBORI ............................................................................................................... 27
Arbori binari............................................................................................... 28
Arbori binari de căutare..................................................................................... 29
Arbori roşu-negru.............................................................................................. 30
i
Arbori b ...................................................................................................... 30
2.11. BIBLIOGRAFIE .................................................................................................... 31
CAPITOLUL 3 ..................................................................................................................... 33
BAZE DE DATE, PREZENTARE GENERALĂ .............................................................. 33
3.1. ISTORICUL BAZELOR DE DATE ............................................................................. 33
3.1. BAZE DE DATE COMPUTERIZATE ......................................................................... 35
Sisteme de prelucrare a fişierelor............................................................... 36
Sisteme integrate de procesarea datelor .................................................... 36
3.2 UTILIZAREA BAZELOR DE DATE ........................................................................... 38
3.3 CARACTERISTICILE BAZELOR DE DATE ............................................................... 40
Independenţa fizică..................................................................................... 40
Independenţa logică ................................................................................... 41
Utilizarea datelor de către neinformaticieni .............................................. 41
Eficacitatea accesului la date..................................................................... 41
Administrarea centralizată a datelor.......................................................... 41
Eliminarea redundanţei datelor ................................................................. 42
Coerenţa datelor......................................................................................... 42
Partajarea datelor ...................................................................................... 42
Securitatea datelor ..................................................................................... 42
3.4 MODELE DE BAZE DE DATE ................................................................................... 42
Structura bazei de date ............................................................................... 43
3.5. ARHITECTURA BAZELOR DE DATE....................................................................... 44
3.6 CONCEPTE AVANSATE DE BAZE DE DATE ............................................................. 46
SGBD cu procesare paralelă...................................................................... 46
Baze de date distribuite .............................................................................. 47
Baze de date orientate pe obiect................................................................. 48
Tendinţe viitoare......................................................................................... 51
3.7. AVANTAJE ŞI DEZAVANTAJE ................................................................................ 51
Avantajele utilizării bazelor de date .................................................................. 51
Dezavantajele utilizării bazelor de date............................................................. 52
3.8. BIBLIOGRAFIE ...................................................................................................... 52
CAPITOLUL 4 ..................................................................................................................... 54
MODELE DE DATE UTILIZATE..................................................................................... 54
4.1. DEFINIŢII .............................................................................................................. 54
4.2. MODELE DE DATE ................................................................................................ 55
Modelul entitate-relaţie .............................................................................. 56
Entitatea ............................................................................................................ 56
Atributele .......................................................................................................... 57
ii
Relaţiile ............................................................................................................. 57
Diagrame entitate relaţie ................................................................................... 58
Atribute ale relaţiei............................................................................................ 59
Reprezentarea atributelor .................................................................................. 60
4.3. DEZVOLTAREA BAZELOR DE DATE ...................................................................... 61
Nivele ale arhitecturii bazelor de date ....................................................... 61
Modele de baze de date .............................................................................. 62
Modelul ierarhic................................................................................................ 62
Modelul reţea .................................................................................................... 63
Modelul de date relaţional................................................................................. 63
Consideraţii practice.......................................................................................... 64
4.4. BIBLIOGRAFIE ...................................................................................................... 64
CAPITOLUL 5 ..................................................................................................................... 66
ALGEBRA RELAŢIONALĂ ŞI LIMBAJE DE BAZE DE DATE ................................. 66
5.1. ALGEBRA RELAŢIONALĂ ..................................................................................... 66
5.2. LIMBAJUL DE BAZE DE DATE SQL....................................................................... 70
5.3. SQL – LIMBAJ DE MANIPULARE A DATELOR ....................................................... 71
Comanda SELECT...................................................................................... 71
Sintaxa comenzii SELECT................................................................................ 71
Operatori în expresia logică de condiţionare ..................................................... 73
Ordonarea rezultatelor....................................................................................... 74
Gruparea rezultatelor......................................................................................... 74
Lucrul cu joncţiuni ............................................................................................ 75
Joncţiuni externe ............................................................................................... 76
Utilizarea interogărilor imbricate ...................................................................... 76
Operaţii de asamblare ................................................................................ 77
Operatorul UNION............................................................................................ 77
Operatorul INTERSECT ................................................................................... 78
Operatorul EXCEPT ......................................................................................... 78
Adăugarea de date într-o tabelă................................................................. 79
Adăugarea de linii prin valoare ......................................................................... 79
Adăugarea de linii obţinute dintr-o interogare................................................... 80
Modificarea datelor dintr-o tabelă............................................................. 81
Eliminarea datelor dintr-o tabelă............................................................... 81
Funcţii utilizate în interogări ..................................................................... 82
5.4. SQL – LIMBAJ DE DEFINIRE A DATELOR ............................................................. 83
Crearea tabelelor ....................................................................................... 83
Sintaxa comenzii CREATE TABLE ................................................................. 83
Crearea de tabele cu copierea datelor ................................................................ 84
Tipuri de date în tabelele bazelor de date .......................................................... 84
Expresii de restricţie.......................................................................................... 86
Crearea unei viziuni ................................................................................... 88
Crearea şi utilizarea indecşilor .................................................................. 89
Modificarea tabelelor şi a bazei de date .................................................... 89
Ştergerea componentelor bazei de date ............................................................. 90
iii
Ştergerea datelor dintr-o tabelă ......................................................................... 90
Redenumirea unei tabele ................................................................................... 90
Eliminarea unor coloane dintr-o tabelă ............................................................. 90
Adăugarea unei coloane într-o tabelă ................................................................ 91
Modificarea unei coloane .................................................................................. 91
5.5. SQL – LIMBAJ DE CONTROL A DATELOR............................................................. 91
Atribuirea privilegiilor ............................................................................... 92
Retragerea privilegiilor.............................................................................. 92
Controlul tranzacţiilor................................................................................ 93
5.6. BIBLIOGRAFIE ...................................................................................................... 94
CAPITOLUL 6 ..................................................................................................................... 96
BAZE DE DATE DIN MANAGEMENTUL INFRASTRUCTURII................................ 96
6.1. NECESARUL DE DATE ........................................................................................... 97
Tipuri de date necesare .............................................................................. 97
Necesarul de date la diferite niveluri de decizie....................................... 100
6.2. LOCUL BAZELOR DE DATE ÎN AGENŢIA DE ADMINISTRARE .............................. 101
Paşii de bază în dezvoltarea unei baze de date pentru întreţinerea
infrastructurii transporturilor........................................................... 103
6.3. IMPLEMENTAREA BAZELOR DE DATE ÎN TRANSPORTURI ................................. 105
AND - Banca centrală de date tehnice rutiere.......................................... 105
6.4. BIBLIOGRAFIE .................................................................................................... 108
iv
Consideraţii practice ................................................................................ 121
Exemple de calcul a complexităţii ............................................................ 123
Clase de complexitate............................................................................... 124
Clasa P de complexitate .................................................................................. 124
Clasa NP de complexitate ............................................................................... 124
Clasa de probleme NP-complete ..................................................................... 125
7.5. TEHNICI DE PROIECTARE A ALGORITMILOR..................................................... 125
Reducerea la probleme cunoscute ............................................................ 125
Abordarea egoistă .................................................................................... 126
Divide şi cucereşte.................................................................................... 126
Programare dinamică............................................................................... 128
7.6. BIBLIOGRAFIE .................................................................................................... 128
vi
Modele de cozi de aşteptare ..................................................................... 181
Distribuţia probabilităţilor în stare stabilă .............................................. 182
11.3. COADA DE AŞTEPTARE (M/M/1) ...................................................................... 183
11.4. COADA DE AŞTEPTARE (M/M/C) ...................................................................... 185
Comparaţie: un sistem cu două cozi (M/M/1) şi o coadă (M/M/2) .......... 187
11.5. COZI DE AŞTEPTARE CU CAPACITATE FINITĂ ................................................. 190
Sisteme cu Cozi de aşteptare (M/M/1/1)................................................... 190
Sisteme cu Cozi de aşteptare (M/M/1/N) .................................................. 191
Caracteristici generale (M/M/c/N) ........................................................... 193
Cozi de aşteptare (M/M/c/c) ..................................................................... 194
11.6. COZILE DE AŞTEPTARE DE TIPUL (M/G/1) ...................................................... 195
11.7. ANALIZA COZILOR DE TIPUL (M/G/-/-/N)........................................................ 197
11.8. COZI DE AŞTEPTARE CU PRIORITATE .............................................................. 199
Noţiuni generale ....................................................................................... 199
Cozi de aşteptare cu proritate şi întrerupere............................................ 200
11.9. REŢELE CU COZI DE AŞTEPTARE ..................................................................... 202
11.10. BIBLIOGRAFIE ................................................................................................ 203
vii
viii
Scînteie Rodian Baze de date şi algoritmi pentru căi de comunicaţie
ISBN 973-86343-3-4 Editura Societăţii Academice „Matei-Teiu Botez”
Iaşi 2003
INTRODUCERE ÎN MANAGEMENTUL
ASISTAT DE CALCULATOR
1.1. INTRODUCERE
Infrastructura transporturilor reprezintă o avuţie publică de o valoare imensă
care trebuie transmisă într-o stare mulţumitoare către generaţiile viitoare.
Responsabilitatea factorilor de decizie este cu atât mai mare cu cât de buna
funcţionare a căilor de comunicaţie depinde desfăşurarea normală a întregii activităţi
economice a ţării, securitatea colectivă şi, bineînţeles, siguranţa participanţilor la
trafic.
Menţinerea în stare de funcţionare a infrastructurii depinde de modul în care
administratorul reţelei efectuează acţiuni de intervenţie. Pentru ca aceste acţiuni să fie
eficiente trebuie cunoscut în amănunt situaţia calitativă şi funcţională a
componentelor. Pentru aceasta sunt necesare programe sistematice de inventariere,
inspecţie şi evaluare. Scopul unor astfel de programe este de a stabili capacitatea
actuală şi de perspectivă a infrastructurii de a face faţă cerinţelor şi scopului pentru
care a fost realizată.
Pe baza datelor existente se pot stabili strategii, programe, proiecte, soluţii
etc. Pentru realizarea lor sunt necesare fonduri substanţiale. Suma valorii tuturor
proiectelor reprezintă bugetul necesar pentru administrare. Practica a demonstrat că
fondurile disponibile nu sunt niciodată suficiente nicăieri în lume. Deoarece pentru
aceleaşi fonduri concurează mai multe proiecte, administratorii trebuie să aleagă între
acestea. Ei trebuie să aleagă între proiecte localizate în diverse situri dar şi între
variante de proiect pentru aceeaşi locaţie.
1
Capitolul 1 – Introducere în managementul asistat de calculator
Decizia este dificilă deoarece în cele mai multe cazuri este necesară predicţia
efectelor diferitelor proiecte. În final trebuie selectate acele proiecte care aduc cele
mai mari beneficii. Prin beneficii trebui să înţelegem nu numai valoarea bănească ci şi
de altă natură cum ar fi timp, consum de combustibil şi piese de schimb etc. Studiul
sistematic al mecanismelor matematice şi logice de descriere a comportării reţelei şi
utilizatorilor, combinat cu dezvoltarea şi utilizarea de algoritmi de predicţie, poate
ajuta la eliminarea sau întârzierea apariţiei unor fenomene negative sau se pot
minimiza efectele lor încă înainte de apariţie.
Simultan cu programele de întreţinere a infrastructurii trebuie iniţiate şi
parcurse permanent programe de culegere de date pentru a putea cunoaşte starea şi
evoluţia sistemului. O cunoaştere mai profundă implică utilizarea unui număr cât mai
mare de variabile de descriere. Numărul combinaţiilor posibile devine astfel tot mai
mare şi mintea umană poate tot mai greu să le cuprindă şi să le controleze integral. În
consecinţă, se impune o gândire sistemică şi o abordare algoritmică. Complexitatea
tot mai mare a algoritmilor şi dimensiunea crescândă a bazelor de date în care se
stochează datele impun utilizarea calculatoarelor ca mijloc de lucru.
A fost conceput un cadrul general care include instrumente eficiente de
evaluare, analiză economică, metode moderne de management. Termenul generic este
management asistat de calculator. Scopul unui astfel de mecanism este de a obţine un
beneficiu maxim din utilizarea resurselor disponibile.
Managementul infrastructurii rutiere se confruntă cu o permanentă obligaţie
de a lua decizii. Aceste decizii se referă la alocarea de resurse, fie ele materiale,
financiare, umane sau de echipament. În contextual actual de desfăşurare a proceselor
alocarea este irevocabilă.
Avem aici câteva noţiuni ce necesită o explicaţie. Irevocabil şi decizie vor fi
reţinuţi cu înţelesul exprimat de R.A. Howard (1966) [12]:
2
Baze de date şi algoritmi pentru căi de comunicaţie
1.2. OBIECTUL CURSULUI
Acest curs va trata modul în care datele, informaţiile şi cunoştinţele pot fi
obţinute, stocate, regăsite şi prelucrate pentru a fi utilizate în managementul
infrastructurii transporturilor. Un accent deosebit se va pune pe metodele algoritmice
de procesare cu scopul luării deciziilor.
În capitolele următoare vom face doar o trecere în revistă şi o introducere în
mijloacele moderne de analiză care transpuse în programe rulate pe calculatoarele
moderne pot oferi sprijin în procesul decizional al managementului infrastructurii
transporturilor. Considerăm că este de o importanţă deosebită cunoaşterea unor
noţiuni de bază privind:
• Definirea, reprezentarea şi gruparea datelor;
• Achiziţionarea, stocarea, regăsirea şi actualizarea datelor în baze de date;
• Prelucrarea datelor pe baza algoritmilor pentru obţinerea de informaţii;
• Aplicaţii ale utilizării bazelor de date şi a algoritmilor în managementul
infrastructurii transporturilor;
• Modelarea şi simularea în vederea prelucrării datelor .
Studierea şi aprofundarea acestor noţiuni permite colaborarea facilă cu ceilalţi
specialişti implicaţi în colective multidisciplinare care tratează probleme de trafic,
administrarea infrastructurii, sisteme informaţionale integrate, dirijarea
transporturilor, cercetări operaţionale etc.
Acest curs NU se va ocupa de: limbaje de programare, arhitectură hardware,
arhitectură software sau de problematica proiectării şi implementării de programe de
calcul. Acestea sunt doar tangenţial abordate. Chiar dacă nu este absolut necesară,
cunoaşterea unui limbaj de programare va facilita buna înţelegere a noţiunilor cu care
ne vom confrunta.
Acest curs NU se ocupă de teoria şi practica managementului cu aplicare în
reţeaua infrastructurii transportului rutier. Este totuşi strâns interconectat, logica şi
metodele de raţionament însuşite în cadrul acestui curs putând fi aplicate în
rezolvarea nevoilor managementului.
3
Capitolul 1 – Introducere în managementul asistat de calculator
• Informaţia – reprezintă datele prelucrate pentru a corespunde unui scop şi
care răspunde la întrebările: Cine? Ce? Unde? Când? Cât?
• Cunoştinţele – aplicaţia datelor şi informaţiilor şi răspunde la întrebarea:
Cum?
• Înţelegerea – apreciază: De ce?
• Înţelepciunea – apreciază înţelegerea?
Pentru a asigura o bună înţelegere a conceptelor cuprinse în această lucrare şi
a desfăşurării proceselor decizionale care decurg la diferitele niveluri ale
managementului infrastructurii transporturilor vom insista asupra noţiunilor de date,
informaţii şi cunoştinţe. Celelalte depăşesc limitele pe care ni le-am impus şi pot fi
abordate într-o eventuală lucrare de filozofia cunoaşterii.
Informaţiile şi cunoştinţele se obţin din prelucrarea datelor după o schemă
principială prezentată în figura următoare.
DATE
Prelucrare
INFORMAŢII
CUNOŞTINŢE
Fig. 1 Procesul de transformare a datelor în cunoştinţe [13]
DATELE
Activitatea specialiştilor din domeniu este caracterizată prin entităţi factice
exprimate fie sub formă de valori numerice, fie ca percepţii şi observaţii numerice.
Aceste entităţi faptice independente şi neevaluate, existente în număr mare, se numesc
date [13].
Datele sunt o reprezentare a observaţiilor, faptelor, conceptelor sau
instrucţiunilor într-o manieră formală adaptată comunicării, procesării şi interpretării
de către om sau cu mijloace automatizate.
Date sunt toate acele valori numerice, caracter, sau de altă natură ce pot fi
păstrate separat sau grupate pentru a fi stocate, regăsite, transmise, prelucrate etc.
pentru a obţine informaţii.
4
Baze de date şi algoritmi pentru căi de comunicaţie
Datele reprezintă elementul de bază, materia primă, în procesul decizional.
Pot avea diferite reprezentări şi pot fi utilizabile sau nu. Ele pot exista în variate
forme: numere, texte, mulţimi, colecţii etc., dar nu au semnificaţie prin ele însele.
Datele pot fi de patru tipuri (Floridi-1999 [10]):
• Date primare – datele brute culese din teren, stocate în bazele de date sau
înscrise în cărţi, simple înşiruiri de valori care nu au suferit o prelucrare
prealabilă sau procesul de prelucrare a fost sumar. Sistemele de gestiune a
informaţiilor sunt proiectate, în fapt, să manipuleze în special astfel de date.
• Metadate – sunt date secundare care oferă indicaţii şi descriere privind natura
datelor primare. Ajută sistemele de gestiune a bazelor de date să-şi
îndeplinească sarcina prin descrierea proprietăţilor esenţiale ale datelor
primare: localizare, format, actualizare, disponibilitate, drepturi de autor,
etc.
• Date operaţionale – sistemele de gestiune a bazelor de date monitorizează şi
colectează date privind propria funcţionare, despre funcţionarea sistemului
de calcul sau a performanţelor implementării. Aceste date pot asigura
feedback-ul, bucla de control, pentru identificarea şi corectarea
eventualelor erori de funcţionare, a greşelilor de proiectare sau a
neconcordanţelor cu necesităţile utilizatorului;
• Date derivate – sunt acele date care pot fi deduse sau extrase din tipurile
anterioare când acestea sunt utilizate pentru comparaţii şi analize
cantitative.
Ca toate produsele societăţii umane datele au o un ciclu de viaţă. Funcţie de
durata lor de viaţă datele pot fi:
• Volatile: date care se obţin, se prelucrează, se utilizează în generarea
informaţiilor sau altor tipuri de date şi a căror valoare nu se păstrează, sau
• Persistente: date stocate pe un suport de informaţie cum ar fi hârtie, benzi
perforate, mijloace magnetice (benzi, dischete, discuri), mijloace optice
(compact discuri) etc.
INFORMAŢIA
Datele obţinute în cadrul activităţilor de proiectare, execuţie, investigaţie,
mentenanţă etc. constituie un material informaţional brut care poate fi ordonat şi
prelucrat, având în vedere diferite obiective. În urma acestui proces de transformare a
datelor, se obţin informaţii, care reprezintă o interpretare a datelor în conformitate cu
anumite situaţii particulare sau cu înţelegerea de către mintea umană în general.
Informaţia este trecerea de la valoare la semnificaţia care se ataşează datei.
Înţelesul care se ataşează datelor depinde de locul, modul şi scopul obţinerii lor.
Această semnificaţie poate fi utilă dar acest lucru nu este obligatoriu.
5
Capitolul 1 – Introducere în managementul asistat de calculator
Există numeroase încercări de a defini informaţia. Fiecare este adevărată pe
domenii limitate dar nici una nu este suficient de generală. Studii de sinteză făcute de-
a lungul timpului nu au găsit la autorii citaţi o unitate de vedere (Braman 1989 [3],
Losee 1997 [15], Machlup 1983 [17], NATO 1974 [21], 1975 [22], 1983 [23],
Schrader 1984 [25], Wellisch 1972 [32], Wersig şi Neveling 1975 [33]). Deşi pare o
noţiune simplă, conceptul de informaţie este greu de cuprins într-o singură definiţie şi
poate fi explicat în moduri diferite funcţie de categoria de cerinţe şi deziderate care
orientează teoria (Bar-Hillel şi Carnap 1953 [1], Szaniawski 1984 [29], Shannon 1993
[27]).
Dintre definiţiile date şi comentariile făcute putem reţine:
• Informaţia reprezintă datele care au fost procesate într-o formă inteligibilă
pentru receptor (Davis şi Olson 1985 [6]);
• Datele reprezintă materia primă care este procesată şi rafinată pentru a obţine
informaţia (Silver şi Silver 1989 [28]);
• Informaţie egal date plus semnificaţie (Checkland şi Scholes 1990 [5]);
• Informaţia este setul de date care a fost interpretat şi înţeles de receptorul
mesajului (Lucey 1991 [16]);
• Datele trebuie interpretate sau prelucrate pentru a deveni informaţie
(Warner 1996 [31]).
Noţiunea de informaţie este adesea utilizată intuitiv pentru a desemna
conţinutul semantic non-mental, independent de utilizator, declarativ inclus în
implementări fizice precum baze de date, enciclopedii, locaţii internet, programe tv.
(Buckland 1991 [4]), care pot fi colectate, accesate sau prelucrate (Floridi 2002 [9]).
Se pune problema conţinutului de adevăr a informaţiei. Care este situaţia
entităţilor care sunt privite drept informaţie dar care în fapt nu conţin valoare de
adevăr. Unii autori consideră că informaţia falsă este pseudo-informaţie
(Floridi 2002 [9]). Alţi autori sunt şi mai categorici: „informaţia falsă nu este un tip
inferior de informaţie; ea pur şi simplu nu este informaţie” (Grice 1989 [11]);
„informaţia falsă sau informaţia greşită nu sunt tipuri de informaţie”
(Dretske 1981 [8]).
Pornind de la cele subliniate mai sus şi pe baza abordării metodologice
dezvoltate în logica situaţională de Barwise şi Perry 1983 [2]; Israel şi Perry 1990
[14]; Devlin 1991 [7], Luciano Floridi 2002 [9] dă următoarea definiţie semantică
pentru elementul individual de informaţie:
σ este informaţie obiectivă, semantică dacă şi numai dacă:
• σ constă într-un set D nevid de date ( d );
• datele din D sunt bine formatate;
• datele din D au semnificaţie;
• datele d din D sunt veridice.
6
Baze de date şi algoritmi pentru căi de comunicaţie
S-a utilizat termenul „veridic” în loc de „adevărat” cu sensul de
„reprezentând sau transmiţând un conţinut cu grad de adevăr despre o situaţie dată”.
Toate discuţiile ulterioare şi referirile la noţiunea de informaţie din această lucrare ţin
cont de această definiţie.
Informaţia reprezintă un element fundamental al activităţii în orice
întreprindere (Păunescu et al. 1985 [24]). Ea prezintă caracteristici similare celor pe
care le au bunurile materiale: se produce, se stochează şi se prelucrează, este
perisabilă în timp şi are un preţ de cost – exprimat prin suma cheltuielilor ocazionate
de obţinerea, prelucrarea, memorarea sau difuzarea ei.
Indicii de calitate ai informaţiei sunt: precizia, oportunitatea, completitudinea.
Precizia este definită prin cantitatea de informaţie corectă în raport cu
întregul volum de informaţii produs într-o anumită perioadă de timp. Există un raport
direct între acest indice de calitate şi datele pe care se fundamentează informaţiile
respective; pentru a creşte valoarea acestui indice este necesar un volum mai mare de
date. În acelaşi timp însă obţinerea informaţiilor dintr-o cantitate mare de date impune
un volum mai mare de prelucrări care, în anumite situaţii, poate veni în contradicţie
cu alt indice de calitate şi anume cu oportunitatea.
Relevanţa sau actualitatea exprimă faptul că o informaţie este utilă într-un
anumit moment, legat de desfăşurarea în timp a unor fenomene. Obţinerea
informaţiilor, care privesc aceste fenomene, după depăşirea unor etape ale evoluţiei
lor reduc sau anulează valoarea acestor informaţii. Corelat cu precizia apare o
anumită contradicţie, a cărei soluţionare depinde de natura şi specificul activităţii în
cauză. Fenomenul de perisabilitate în timp a informaţiilor se face simţit prin
diminuarea valorii informaţiei în raport cu preţul de obţinere al acestora.
Completitudinea exprimă necesitatea de a dispune de cât mai multe sau chiar
de totalitatea informaţiilor referitoare la un domeniu al activităţii umane.
Obţinerea informaţiilor cu calităţile menţionate anterior este condiţionată atât
de datele care le generează, cât şi de mijloacele de prelucrare disponibile. Dacă datele
folosite în procesul de obţinere a informaţiilor sunt inexacte, incomplete sau perimate,
informaţiile care rezultă sunt de valoare redusă. Orice informaţie trebuie să reducă din
incertitudine şi să conducă la o mai bună înţelegere a anumitor situaţii sau fenomene.
Potrivit lui Zadeh (1997 [34]) informaţiile disponibile se pot grupa în trei
categorii:
• Informaţii factice care sunt numerice şi bazate pe măsurători (ex. „înălţimea
grinzii este de 82,5 cm”);
• Informaţii pseudo-numerice şi bazate pe pseudo-măsurători (ex. „ne întâlnim
la trei”);
• Informaţii bazate pe percepţii care sunt în special aprecieri lingvistice (ex.
„cineva este cinstit şi arătos”).
7
Capitolul 1 – Introducere în managementul asistat de calculator
Aceste grupe diferă între ele prin gradul de incertitudine.
Când există incertitudine în aprecierea unui fenomen se poate defini
cantitatea de informaţie care înlătură această incertitudine. Informaţia este în acest caz
numită şi entropie şi este reprezentată de numărul minim de întrebări ce trebuie pus în
medie pentru a elimina incertitudinea.
Numeric, informaţia poate fi estimată cantitativ funcţie de probabilitatea
stărilor. Astfel, considerând un număr de stări: x1 , x 2 ,..., x n a căror probabilitate de
apariţie este dată de P (xi ) , cantitatea de informaţie se calculează cu formula:
CUNOŞTINŢELE
Informaţiile constituie baza raţionamentelor, experimentărilor imaginate de
mintea umană, în scopul obţinerii de noi cunoştinţe.
Cunoştinţele reprezintă esenţa ce rezidă în spatele datelor şi informaţilor într-
un domeniu de activitate. Cunoştinţele se obţin prin cercetare ştiinţifică şi sunt un
rezultat al sintezei procesării datelor, informaţiilor şi experienţei.
Cunoştinţele acumulate facilitează aprecierea relaţiilor dintre atributele unui
element, obiect, sistem, proces. Relaţiile pot fi: procedurale, temporale, structurale,
spaţiale, logice, semantice, etc. Pe baza înţelegerii relaţiilor se poate lua o decizie într-
un context dat.
Capacitatea de a lua decizii corecte este influenţată de disponibilitatea datelor
şi de aptitudinea de a anticipa consecinţele acţiunii. Capacitatea de a prezice într-un
mod raţional consecinţele lucrărilor de intervenţie constituie cunoştinţa în domeniul
managementului patrimoniului: cu cât este mai bogat corpul cunoştinţelor cu atât este
mai puternic instrumentul de administrare; cu cât mai mare numărul de opţiuni cu atât
decizia va avea o acurateţe mai ridicată.
Analiza mai multor variante şi managementul bazat pe cunoştinţe este
alegerea logică şi totuşi prea puţine persoane sau compartimente de planificare
efectuează analize explicite şi complete. Chiar şi atunci când se consideră mai multe
opţiuni, judecata este superficială şi se opreşte după câţiva paşi. Procesul decizional
este prezentat în figura următoare.
8
Baze de date şi algoritmi pentru căi de comunicaţie
Colectarea datelor
- Selecţie -
Buget
Luarea deciziilor
Realizare
Analiză
Cunoştinţe
Fig. 2 Procesul decizional (după [26])
Există două cauze pentru care oamenii nu iau decizii bazate pe cunoştinţe: (1)
deficienţă în cunoaştere şi (2) comportament inadecvat.
1. pentru a utiliza cunoştinţele este necesar ca acestea să existe, să fie
disponibile şi să fie incluse în instrucţia personalului;
2. interese personale sau de grup, inerţia sau indiferenţa pot perturba procesul de
decizie.
Pornind de la cele prezentate mai sus este necesară cercetare ştiinţifică pentru
a furniza administratorului metode extinse de colectare şi interpretare a datelor,
modele corespunzătoare şi algoritmi decizionali eficienţi. Opţiunile trebuie
organizate, clasificate şi corect evaluate.
10
Baze de date şi algoritmi pentru căi de comunicaţie
Pentru prelucrarea datelor şi extragerea de informaţii semnificative sunt
necesare programe statistice performante. Acestea au în general preţuri mari, dar
programele statistice de scară largă, care se pretează la prelucrarea datelor din
infrastructura transporturilor, au costuri exorbitante. Fiind finanţate de la buget,
majoritatea agenţiilor de administrare nu dispun de fondurile necesare pentru
achiziţionarea şi menţinerea unor asemenea programe. În plus, justificarea necesităţii
cheltuielilor pentru colectarea datelor ori însăşi colectarea datelor este deficitară. De
multe ori nu se argumentează relevanţa datelor colectate şi implicaţiile cunoaşterii.
Conceptul de „relevanţă” şi măsurarea acesteia sunt deosebit de delicate.
Tate-Glass ş.a. (2000 [30]) compară măsurarea relevanţei cu statul la focul de tabără:
prea departe de „flacăra” politică rişti să fii tratat cu răceală, o poziţie prea apropiată
prezintă riscul de a te arde din cauza cheltuielilor inutile.
Fundamental în rezolvarea problemei este anticiparea necesarului de date.
Proiectele de statistică în infrastructura transporturilor, ca şi în alte domenii, sunt 5%
statistică şi 95% logistică, ele fiind exerciţii complexe de organizare şi planificare.
Elementul esenţial este în mai mică măsură competenţa în analize statistice cât
abilitatea de a anticipa politicile şi nevoile de planificare în viitor.
Când problemele de planificare sau de strategie ajung la Ministerul
Transporturilor spre studiu este deja prea târziu să începem colectarea de date. În
planificări strategice trebuie să se lucreze cu acele date care sunt imediat disponibile.
Atunci când datele sunt cerute, conform Tate-Glass (2000 [30]), profesioniştii
informaţiei pot răspunde în:
• trei minute, când datele sunt pe raft;
• trei ore, dacă trebuie căutat prin baza de date sau dosare;
• trei zile, când datele trebuie prelucrate;
• trei săptămâni, dacă trebuie făcută ceva programare sau modificat programul;
• trei luni, când este necesară prelucrarea completă a datelor;
• trei ani, dacă este necesară colectarea de noi date.
De aceea sunt necesare programe proactive de colectare a datelor care să vină
în întâmpinarea viitoarelor analize de politici în transporturi.
11
Capitolul 1 – Introducere în managementul asistat de calculator
Pentru a avea la dispoziţie date, informaţii şi cunoştinţe corecte şi complete în
timp util administratorii infrastructurii transporturilor trebuie să aibă în vedere
următoarele acţiuni:
• Identificarea necesităţilor de date;
• Crearea unui sistem de reprezentare a datelor;
• Implementarea şi evaluarea unui sistem de colectare a datelor;
• Crearea şi administrarea unui sistem de stocare şi regăsire a datelor
• Implementarea sistemului de transmitere a datelor;
• Identificarea algoritmilor utili în mecanismul decizional;
• Identificarea, implementarea şi evaluarea unor proceduri de prelucrare a
datelor;
• Analiza rezultatelor în conformitate cu scopul urmărit
• Evaluarea sistemului de management a datelor.
Lucrarea de faţă urmăreşte şi tratează aceşti paşi, sau cel puţin încearcă să o
facă. Totodată se încearcă să se prezinte laolaltă noţiunile şi metodele de procesare
necesare pentru dezvoltarea unui sistem integrat de management a infrastructurii.
1.6. BIBLIOGRAFIE
[1] Bar-Hillel Y., Carnap R.: An Outline of a Theory of Semantic Information, 1953, rep. in
Bar-Hillel 1964.
[2] Barwise J., Perry J.: Situations and Attitudes; MIT Press, Cambridge Mass. 1983.
[3] Braman S.: Defining Information; Telecommunications Policy 13, pp.233-242., 1989.
[4] Buckland M.: Information as Thing; Journal of the American Society of Information
Science (42.5), pp.351-360, 1991.
[5] Checkland P. B., Scholes J.: Soft Systems Methodology in Action; John Wiley & Sons,
New York 1990.
[6] Davis G. B., Olson M. H.: Management Information Systems: Conceptual Foundations,
Structure, and Development; 2nd ed., McGraw-Hill, New York 1985.
[7] Devlin K.: Logic and Information; Cambridge University Press, Cambridge 1991.
[8] Dretske F.: Knowledge and the Flow of Information; MIT Press, Cambridge Mass. 1981,
rep. Stanford: CSLI, 1999.
[9] Floridi Luciano: Is Information Meaningful Data ?; Electronic Conference on
Foundations of Information Science (FIS 2002)
[10] Floridi Luciano: Philosophy and Computing – An Introduction; London – New York:
Routledge, 1999.
[11] Grice P.: Studies in the Way of Words; Harvard University Press, Cambridge Mass. 1989.
[12] Howard R.A.: Decision Analysis: Applied Decision Theory; in Proceedings of the Fourth
International Conference on Operational Research, D. B. Hertz and J. Melese, eds.,
Wiley, New York, 1966, pp. 55-71.
[13] Ionescu Constantin, Scînteie Rodian: Informational Flows in Bridge Engineering; in
Ioani A., Chira C., Manea D. (editors) Proceedings of the International Conference,
Constructions 2003, Volume 4 – Road, Bridges and Railways, pp. 209-216,
Argonaut&Napoca Star, Cluj-Napoca, Romania, May 2003.
12
Baze de date şi algoritmi pentru căi de comunicaţie
[14] Israel D., Perry J.: What is Information?; in P. Hanson (ed.), Information, Language and
Cognition, pp.1-19, University of British Columbia Press, Vancouver 1990.
[15] Losee R. M: A Discipline Independent Definition of Information; Journal of the
American Society for Information Science, 48.3, 254-269, 1997.
[16] Lucey T.: Management Information Systems; 6th ed. DP Publications Ltd, London 1991.
[17] Machlup F.: Semantic Quirks in Studies of Information; in Machlup, F. And Mansfield,
U. eds.. The Study of Information: Interdisciplinary Messages, pp. 641-671 John
Wiley, New York, 1983.
[18] Machlup Fritz, Mansfield Una: The Study of Information: Interdisciplinary Messages;
John Wiley, New York, 1983.
[19] Meadow C. T., Yuan, W.: Measuring the impact of information: defining the concepts;
Information processing and management. Vol. 33, no. 6, pp. 697-714, 1997.
[20] Mowshowitz A.: Information as a commodity: assessment of market value; In Yovits, M.
C., editor, Advances in Computers, Vol. 38, pages 247–316, London. Academic Press.,
1994.
[21] NATO 1974, Advanced Study Institute in Information Science, Champion, 1972.
Information Science: Search for Identity; ed. by A. Debons (New York: Marcel
Dekker).
[22] NATO 1975, Advanced Study Institute in Information Science, Aberystwyth, 1974.
Perspectives in Information Science, ed. by A. Debons and W. J. Cameron. (Leiden:
Noordhoff).
[23] NATO 1983, Advanced Study Institute in Information Science, Crete, 1978. Information
Science in Action: Systems Design, ed. by A. Debons and A. G. Larson. (Boston:
Martinus Nijhoff).
[24] Păunescu, F., Badea-Dincă, N., Stăcuţ., E., Informatizarea societăţii: un fenomen
inevitabil?, Ed. Şiinţifică şi Enciclopedică, Bucureşti, 1985.
[25] Schrader, A.: In Search of a Name: Information Science and its Conceptual Antecedents;
Library and Information Science Research 6, pp.227-271, 1984.
[26] Scînteie Rodian: Decision Making Process in Highways Structures Management; in
Ioani A., Chira C., Manea D. (editors) Proceedings of the International Conference,
Constructions 2003, Volume 4 – Road, Bridges and Railways, pp. 287-294,
Argonaut&Napoca Star, Cluj-Napoca, Romania, May 2003.
[27] Shannon, C. E.: Collected Papers; ed. N. J. A. Sloane & A. D. Wyner, Los Alamos, CA,
IEEE Computer Society Press, 1993.
[28] Silver G. A., Silver M. L.: Systems Analysis and Design; Addison Wesley, Reading MA,
1989.
[29] Szaniawski, K.: On Defining Information; 1984, rep. in Szaniawski 1998.
[30] Tate-Glass Martha J., Bostum Rob, Witt Greg: Data, Data, Data—Where’s the Data?;
TRB – Millennium Papers, National Research Council, Transportation Research
Board, Washington, D.C., USA, January 2000.
[31] Warner T.: Communication Skills for Information Systems; Pitman, London 1996.
[32] Wellisch, H., From Information Science to Informatics; Journal of Librarianship 4,
pp.157-187, 1972.
[33] Wersig G., Neveling U.: The Phenomena of Interest to Information Science; Information
Scientist 9, 127-140, 1975.
[34] Zadeh LA: Toward a Theory of Fuzzy Information Granulation and its Centrality in
Human Reasoning and Fuzzy Logic; Fuzzy Sets and Systems, vol. 90, No.2, pp.111-
127, 1997.
13
Scînteie Rodian Baze de date şi algoritmi pentru căi de comunicaţie
ISBN 973-86343-3-4 Editura Societăţii Academice „Matei-Teiu Botez”
Iaşi 2003
STRUCTURI DE DATE
Rezolvarea problemelor cu ajutorul calculatorului presupune analiza,
gruparea şi structurarea datelor pentru a obţine eficienţă maximă. Utilizarea
structurilor de date este impusă pe de o parte de înţelegerea facilă a problemei şi pe de
altă parte de necesitatea implementării practice a procedurilor de rezolvare a
problemei pe maşinile fizice.
Structurile de date reprezintă o cale sistematică de organizare şi accesare a
datelor [36].
Reprezentarea datelor şi a structurilor de date depind în mare măsură de
construcţia calculatoarelor fizice şi de implementările limbajelor de programare.
Totuşi pe majoritatea calculatoarelor şi în majoritatea limbajelor apar următoarele
structuri de date: setul, articole (înregistrarea), tablouri, liste, urne (buckets), stive,
cozi, arbori şi reţele.
În prezenta lucrare suntem preocupaţi mai puţin de reprezentarea efectivă a
datelor în memorie sau de tipurile implicite oferite de limbajul de programare. De
aceea prima structură tratată este articolul sau înregistrarea. Aceasta este baza pentru
toate celelalte reprezentări de tipuri de date abstracte.
2.1. ARTICOLUL
Articolul sau înregistrarea este o structură neomogenă reprezentând reuniunea
unui număr fix de componente numite câmpuri care constituie logic o unitate.
Câmpurile din structură sunt caracterizate prin tipul lor care poate fi unul primar,
oferit de limbajul de programare, sau unul complex, definit de către proiectant (deci la
rândul său un articol). Gruparea câmpurilor se face din considerente de procesare dar
14
Baze de date şi algoritmi pentru căi de comunicaţie
în cele mai multe cazuri sunt grupate atribute comune ale unei entităţi care trebuie
tratată. Lungimea totală a articolului este dată de suma lungimilor câmpurilor
( L( A) =∑i
Li ) (vezi Fig. 3).
Articol A
Câmp_1 Tip_câmp_1 L1
Câmp_2 Tip_câmp_2 L2
Câmp_3 Tip_câmp_3 L3
Câmp_i Tip_câmp_i Li
Câmp_n Tip_câmp_n Ln
Fig. 3 Structura unui articol
15
Capitolul 2 – Structuri de date
la conceptele sale fundamentale). Aceasta implică identificarea componentelor şi
descrierea funcţionalităţii lor. Datele sunt organizate modular şi există posibilitatea ca
detaliile interne de implementare să fie „ascunse” utilizatorilor, iar comunicarea să se
facă numai prin acea parte a datelor şi funcţiilor care sunt declarate publice. Se obţine
astfel un grad ridicat de libertate pentru analişti şi programatori.
Aplicând paradigma abstractizării la proiectarea structurilor de date obţinem
tipuri abstracte de date - TAD.
Tipul abstract de date este un model matematic prin care se definesc tipurile
de date ce pot fi stocate într-o structură şi metodele disponibile să proceseze datele.
Se defineşte deci o interfaţă. Interfaţa este un „contract” prin care ni se garantează
disponibilitatea unor elemente, fără să ni se ofere detalii privind implementarea
internă [36].
16
Baze de date şi algoritmi pentru căi de comunicaţie
type
TNewObject = class(TOldObject)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
end;
Fig. 4 Declararea claselor în Delphi Pascal
2.3. SETUL
Setul sau mulţimea reprezintă o colecţie finită de elemente
M = {m1 , m2 , K , mn } . Deoarece, prin definiţie, este finit, setul poate fi imaginat ca un
vector. Deoarece componenţa sa este aprioric definită şi cunoscută, reprezentarea ca
vector de tipul (m1 , m2 , K , mn ) nu ar aduce informaţii relevante. Este mult mai
important să reprezentăm un sub-set S ce poate fi definit pe mulţimea iniţială.
Pentru aceasta vom defini o funcţie de apartenenţă A : M → {0,1} , astfel:
1, când mi ∈ S
ai = A(mi ) = (3)
0, când mi ∉ S
Acum sub-setul poate fi reprezentat prin vectorul valorilor funcţiei de
apartenenţă vS = (a1 , a2 , K , an ) .
17
Capitolul 2 – Structuri de date
Operaţiile ce trebuie să fie create pe un sub-set sunt:
• Inserare, pentru a introduce un element în sub-set [Insert(e,S) ⇒e∈S∉];
• Eliminare, care scoate elementul din sub-set [Suppress(e,S) ⇒e∉S];
• Aparţine, funcţie care face cunoscut apartenenţa unui element la sub-set;
• Vid, indică faptul că sub-setul nu conţine nici-un element;
• Alte operaţii ce se pot defini sunt:
• complementul,
• reuniunea,
• intersecţia,
• diferenţa,
• diferenţa simetrică.
2.4. TABLOUL
Tabloul reprezintă, în esenţă, o mulţime de date de acelaşi tip care se
grupează în poziţii succesive în aşa fel încât să poată fi regăsite prin utilizarea unor
indici de poziţie.
Astfel aplicaţia:
18
Baze de date şi algoritmi pentru căi de comunicaţie
2.5. LISTA ÎNLĂNŢUITĂ
Lista este o structură de date care are lungime variabilă. În multe cazuri, nu se
poate cunoaşte din momentul proiectării programului care va fi numărul exact al
elementelor utilizate în calcul.
Alocarea unui anumit spaţiu fixat în faza de programare poate conduce la
două situaţii neplăcute: fie se alocă spaţiu insuficient şi problema rămâne nerezolvată,
fie se alocă prea mult spaţiu care rămâne neutilizat şi se consumă inutil din resursele
calculatorului blocând celelalte programe. Soluţia propusă a fost de a aloca dinamic
memorie pe măsură ce nevoia o impune. În structura articolelor, pe lângă informaţia
utilă, se păstrează referinţe către alte articole similare care pot fi create pe măsură ce
programul este rulat. Se creează astfel o înlănţuire care are o lungime variabilă,
programul utilizând atâta memorie cât este necesară.
Referinţe
Date de calcul (date de legătură)
Fig. 5 Structura unui obiect dintr-o listă
Înlănţuirea de articole similare care conţin referinţe unul despre altul păstrând
un singur nivel de legături se numeşte listă (Fig. 6).
BAZA
Lista este accesată din interiorul programului prin intermediul unei adrese de
bază (o referinţă, un pointer etc.), elementul din listă care este referit fiind capul de
listă. Se observă că datele referinţă din ultimul element din listă sunt vide (NIL),
acesta fiind unul dintre indicatorii de terminare a înlănţuirii.
Din punct de vedere matematic, lista reprezintă o secvenţă de zero sau mai
multe elemente de un anumit tip dat. Numărul n de elemente ce se regăsesc în listă
reprezintă lungimea listei. Când lungimea este 0 adresa de bază este vidă (NIL).
Elementele pot fi identificate prin poziţia lor în listă. Din considerente ce ţin
de reprezentarea numerelor întregi în formatul binar este uzual a se spune că primul
element ocupă poziţia 0.
Dacă ultimul element conţine o referinţă către capul de listă avem o listă
circulară. Înlănţuirea poate fi simplă, dar se poate ca fiecare element să conţină
referinţe atât către succesor cât şi către predecesor. În acest caz înlănţuirea este dublă.
19
Capitolul 2 – Structuri de date
BAZA
20
Baze de date şi algoritmi pentru căi de comunicaţie
Mai jos prezentăm câteva exemple de implementări de operaţii pe liste.
If x.preview ≠ Nil
Then x.preview.next ← x.next
Else L.Head ← x.next
EndIf
If x.Next ≠ Nil
Then x.Next.Preview ← x.Preview
EndIf
EndProc
Fig. 9 Ştergerea unui element dintr-o listă înlănţuită
2.6. URNE
Urnele sau grămezile (literatura de limbă engleză utilizează termenul de
bucket) reprezintă o grupare de date a căror ordine de utilizare nu prezintă importanţă.
21
Capitolul 2 – Structuri de date
Prezentăm în continuare un exemplu de tabelă de dispersie cu dimensiunea 5.
0 20 25 10 -
1 21 1 61 26 -
2 2 -
3 -
4 9 54 -
Fig. 10 Tabelă de dispersie
Cazul cel mai defavorabil este dat de situarea tuturor elementelor într-o
singură listă înlănţuită.
Un asemenea caz este dat sau evitat de forma funcţiei de repartiţie. Dacă
funcţia de repartiţie este uniformă atunci lista iniţială se subdivide în părţi
aproximativ egale. Pentru aceasta se utilizează diverse tipuri de funcţii:
• Restul împărţirii la M (operaţia modulo M). Cheia considerată pentru fiecare
element se împarte la dimensiunea tabelei. Restul rezultat se utilizează ca
index pentru poziţionarea în tabelă.
• Se alege M să fie număr prim. Se asigură o uniformitate mai bună.
O tabelă de dispersie, ca structură de stocare a datelor are un constructor şi
trei metode:
• Creare / Init creează tabela şi iniţializează câmpurile la valoarea implicită;
• Inserează(M) / Insert(M) calculează indexul i = index(M ) cu ajutorul
funcţiei de dispersie şi introduce elementul în lista adresată de poziţia i din
tabelă;
• Caută(M) / Find(M) calculează indexul i = index(M ) cu ajutorul funcţiei
de dispersie şi caută elementul în lista adresată de poziţia i din tabelă; dacă
nu este găsit se returnează Nil sau se generează o eroare;
• Elimină(M) / Remove(M) calculează indexul i = index(M ) cu ajutorul
funcţiei de dispersie, caută elementul în lista adresată de poziţia i din
tabelă şi elimină obiectul; dacă nu este găsit se returnează Nil sau se
generează o eroare;
2.8. STIVE
Stivele reprezintă structuri de date care au o singură cale de acces atât pentru
introducere cât şi pentru extragere de date: vârful stivei. Pentru ele se alocă iniţial o
22
Baze de date şi algoritmi pentru căi de comunicaţie
zonă statică, fixă a cărei conţinut este vid (numărul de elemente este 0). Pe măsură ce
noi date trebuie păstrate ele se depun în stivă numărul elementelor fiind incrementat
(Fig. 11). Când se doreşte utilizarea datelor salvate singura modalitate de acces
permisă este scoaterea elementului din stivă (cu decrementarea numărului de
elemente) (Fig. 12).
Element nou
L+1
L
a) b)
Element ce se elimină
L-1
L
a) b)
Modul de lucru al acestor structuri este ultimul intrat – primul ieşit LIFO (last
in - first out). Pentru o corectă funcţionare, în general, se alocă un tablou cu elemente
de tipul cerut şi o variabilă în care se păstrează un indicator de stivă. Valoarea 0 a
indicatorului semnalizează stiva goală. Valoarea indicatorului egală cu lungimea
stivei semnalizează stiva plină. Verificarea acestor două stări cade în sarcina
programatorului înainte de a efectua extragerea şi respectiv depunerea.
La adăugarea unui nou element valoarea indicatorului creşte cu unu
( L ← L + 1 ) în timp ce la scoaterea unui element valoarea indicatorului de stivă
descreşte cu unu ( L ← L − 1 ).
Pe o asemenea structură se pot defini următoarele operaţii minimale:
• Sterge(S) / Clear(S): elimină toate datele din stivă şi aduce indicatorul în
poziţia iniţială.
• Adauga(x,S) / Push(S): introduce elementul x în vârful stivei. Indicatorul este
incrementat. Dacă stiva este deja plină generează o eroare.
23
Capitolul 2 – Structuri de date
• Extrage(S) / Pop(S): extrage elementul din vârful stivei şi îl întoarce ca
rezultat. Indicatorul este decrementat corespunzător. Dacă stiva este goală
generează un mesaj şi se returnează elementul vid.
• Varful(S) / Top(S): verifică elementul din vârful stivei fără a-l îndepărta.
• EsteVida(S) / IsEmpty(S): verifică dacă stiva este goală şi întoarce valoarea
logică (booleană) corespunzătoare.
O implementare facilă a stivei pentru tipuri complexe de articole se poate
realiza prin utilizarea unei liste înlănţuite. Descrierea în limbaj pseudocod se face în
figura următoare (Fig. 13).
2.9. COZI
Coada reprezintă o structură de date în care accesul se realizează pe două căi:
una de intrare şi una de ieşire. Atunci când coada nu este vidă, elementele sunt
disponibile la ieşire în ordinea în care au fost depuse. Modul de lucru al cozilor este
24
Baze de date şi algoritmi pentru căi de comunicaţie
primul intrat – primul ieşit FIFO (first in - first out). Reprezentarea intuitivă a
modului de lucru este prezentată în Fig. 14 şi Fig. 15.
Element nou
L+1
L
a) b)
Fig. 14 Coada înainte şi după introducerea unui element
L-1
L
Element ce se elimină
a) b)
În fapt, pentru implementarea unei cozi se poate utiliza tot un tablou care se
alocă cu o lungime fixă de n elemente şi două variabile care păstrează doi indicatori:
unul privind sfârşitul cozii (Ia) şi unul pentru vârful cozii (Ie) (vezi Fig. 16).
Element ce se adaugă
Ia
n
Element ce se elimină
Ie
25
Capitolul 2 – Structuri de date
Dacă Ia depăşeşte dimensiunea tabloului Ia ia valoarea bazei tabloului (pentru
simplitate să presupunem 0). Când se extrage un element se incrementează Ie
( Ie ← Ie + 1 ) şi, în mod similar, dacă Ie depăşeşte dimensiunea tabloului atunci ia
valoare bazei tabloului. Dacă Ia = Ie atunci coada este vidă, dacă
Ie ← (Ia + 1)(mod n ) atunci coada este plină. Este datoria programatorului să facă
verificarea înainte de fiecare extragere şi adăugare respectiv.
Pentru cozi se pot defini următoarele operaţii minimale:
• Sterge(Q) / Clear(Q): elimină toate datele din coadă şi aduce indicatorii Ia şi
Ie în poziţia iniţială.
• Adauga(x,Q) / Enqueue(x,Q): Introduce elementul x la sfârşitul cozii.
Indicatorul Ia este incrementat. Când coada este deja plină generează o
eroare fără să mai adauge elementul.
• Extrage(Q) / Dequeue(Q): extrage elementul din vârful cozii şi îl întoarce ca
rezultat. Indicatorul Ie este incrementat corespunzător. Dacă coada este
goală generează un mesaj şi se returnează elementul vid.
• Varful(Q) / Top(Q): verifică următorul element din coadă fără a-l îndepărta.
• EsteVida(Q) / IsEmpty(Q): verifică dacă coada este goală şi întoarce valoarea
logică (booleană) corespunzătoare.
• EstePlina(Q) / IsFull(Q): verifică dacă coada este goală şi întoarce valoarea
logică (booleană) corespunzătoare.
Operaţiile de mai sus pot fi simplu descrise utilizând limbajul pseudocod.
Prezentăm mai jos câteva dintre funcţii pentru implementarea cu ajutorul tabloului.
26
Baze de date şi algoritmi pentru căi de comunicaţie
Reprezentarea cozii prin liste înlănţuite:
Tmp ← Q.Head
TmpX ← Tmp.Data
Q.Head ← Tmp.Next
If Q.Head = Nil Then Q.Tail ← Nil
Free Tmp
Return TmpX
EndFunct
Fig. 18 Reprezentarea cozilor prin liste înlănţuite
2.10. ARBORI
Considerăm o mulţime finită de elemente (fie ele articole sau obiecte) pe care
le vom denumi noduri. Această mulţime se va numi arbore dacă :
• există un nod special denumit rădăcină;
• celelalte noduri sunt grupate în submulţimi care la rândul lor sunt arbori.
Elementele arborelui sunt nodurile şi legăturile care se stabilesc între acestea.
27
Capitolul 2 – Structuri de date
R=N0
N1 ... Ni ... Nn
N1,1 ... N1,j1 ... N1,n1 Ni,1 ... Ni,ji ... Ni,ni Nn,1 ... Nn,in ... Nn,nn
Fig. 19 Arbore
Mai sus prezentăm schematic structura unui nod al unui arbore. Referinţele
către părinte nu sunt obligatorii. Nu se fac referiri către noduri cuprinse în alţi sub-
arbori ai aceluiaşi arbore. Dacă există descendenţi sau nu există suficienţi care să
completeze spaţiul lăsat pentru referinţe, locaţiile excedentare se completează cu NIL
(entitatea care identifică lista vidă). Dacă referinţa PĂRINTE există şi este egală cu
NIL avem de-a face cu rădăcina.
ARBORI BINARI
Reprezintă o categorie specială de arbori. Fiecare dintre noduri are doar
maxim doi descendenţi: un sub-arbore stânga şi un sub-arbore dreapta. Poziţia celor
doi este foarte importantă spre deosebire de arborii normali la care ordinea fiilor nu
contează şi era suficient să se cunoască cine este descendentul cui.
Pentru arborii binari trebuie cunoscută atât descendenţa cât şi poziţia corectă.
Cei doi sub-arbori nu sunt interschimbabili.
28
Baze de date şi algoritmi pentru căi de comunicaţie
Structura de date a unui arbore binar este prezentă în figura următoare:
2 6
1 3 5 7
Fig. 22 Reprezentarea datelor într-un arbore binar de căutare
29
Capitolul 2 – Structuri de date
arborelui de căutare. Spre deosebire de exemplul de mai sus în figura următoare avem
reprezentat un arbore dezechilibrat.
5
Fig. 23 Reprezentarea datelor într-un arbore dezechilibrat
Acest arbore este binar de căutare, el respectând toate regulile impuse. Din
nefericire toate valorile au fost depuse în descendenţii de pe un singur sens. Pentru
doar cinci valori s-a obţinut o înălţime a arborelui de cinci ceea ce face căutarea
ineficientă.
Din aceste considerente s-a impus utilizarea altor tipuri de arbori.
Arbori roşu-negru
Sunt arbori binari de căutare în care se doreşte o balansare cât mai bună a
datelor. Numele vine de la faptul că nodurile se colorează cu două culori: roşu şi
negru. Aceste culori sunt atribuite după reguli care determină echilibrarea arborelui.
Arborii roşu-negru au următoarele proprietăţi [37]:
• Fiecare nod este colorat sau în negru sau în roşu;
• Orice frunză este un nod NIL şi se colorează în negru;
• Dacă un nod este roşu atunci ambii descendenţi sunt negri;
• Orice cale simplă de la un nod la o frunză descendentă conţine acelaşi număr
de noduri negre.
Numărul de noduri colorate în negru de pe o cale poartă numele de
„adâncime neagră” sau „înălţime neagră”.
ARBORI B
Arborii B (Knuth 1998 [43], Cormen 1998 [37], Aho 1983 [35]) reprezintă o
altă cale de implementare a unui mecanism de menţinere echilibrată a arborilor de
căutare. El reprezintă o garanţie a faptului că arborele va rămâne din construcţie cu o
înălţime mică. Acest tip de arbore se pretează la implementarea dicţionarelor.
30
Baze de date şi algoritmi pentru căi de comunicaţie
Un arbore B de ordin m este un arbore poziţional care are următoarele
proprietăţi:
• Toate nodurile au cel mult m descendenţi;
• Toate nodurile cu excepţia rădăcinii au cel puţin m/2 descendenţi;
• Un nod care are m descendenţi notaţi cu D0, D1, ... , Dm-1 are şi m-1 chei
notate cu K1, K2, ... , Km-1 cu proprietatea că K1<K2< ... <Km-1.
• Pentru oricare nod cheia Ki este mai mare decât toate cheile descendentului
notat Di-1 dar este mai mică decât toate cheile descendentului Di. (cheile
sunt situate între descendenţi)
• Toţi descendenţii NIL sunt situaţi la acelaşi nivel al arborelui.
10
3 6 13 20
1 2 4 5 7 8 11 12 14 16
Fig. 24 Reprezentarea unui arbore B
2.11. BIBLIOGRAFIE
[35] Aho Alfred V., Jeffrey D. Ullman: Data Structures and Algorithms; Addison-Wesley,
Reading, Massachusetts 1983.
[36] Brown Lawrence M.: Introduction to Data Structures; Nov. 2001.
[37] Cormen Thomas H., Leiserson Charles E., Rivest Ronald L.: Introduction to Algorithms,
McGraw-Hill, New York 1990.
[38] Eddon, Guy, and Henry Eddon, Inside Distributed COM, Microsoft Press 1998.
[39] Fox BL: Data structures and computer science techniques in operations research;
Operations Research, Vol.26, Nr.5, Operations Research Society of America,
September-October 1978.
[40] Goodrich Michael T., Roberto Tamassia: Data Structures and Algorithms in Java, John
Wiley & Sons (1998).
[41] Ionescu Texe Clara, Zsako Ioan: Structuri arborescente cu aplicaţiile lor; Editura
Tehnică, Bucureşti 1990.
[42] Joldos Marius: Data Structures and Algorithms – Lecture Notes; Technical University of
Cluj-Napoca, Faculty of Automation and Computers, Computer Science Department,
Cluj-Napoca 2002.
[43] Knuth, Donald. E.: The Art of Computer Programming, Volume 3, Sorting and
Searching; Addison-Wesley, Reading, Massachusetts, 1998.
31
Capitolul 2 – Structuri de date
[44] Knuth, Donald. E.: Tratat de programarea calculatoarelor. Algoritmi fundamentali;
Editura Tehnică, Bucureşti, 1974.
[45] Knuth, Donald. E.: Tratat de programarea calculatoarelor. Sortare şi căutare; Editura
Tehnică, Bucureşti, 1976.
[46] Microsoft: Microsoft Windows Architecture for Developers; Course Number 794A,
Microsoft Press 1997.
[47] Shaffer Clifford A.: A Practical Introduction to Data Structures and Algorithm Analysis,
Java Edition, Prentice Hall 1998.
[48] Strohmeier Alfred: Algorithms and Data Structures; http://lglwww.epfl.ch, Swiss Federal
Institute of Technology in Lausanne, Department of Computer Science, Software
Engineering Laboratory, March 2000.
[49] Vogel Andreas, Keith Duddy: Java Programming with CORBA; Second Edition, John
Wiley & Sons, New York 1998.
[50] Williams Peter M.: Data Structures; University of Sussex, UK, 2002.
32
Scînteie Rodian Baze de date şi algoritmi pentru căi de comunicaţie
ISBN 973-86343-3-4 Editura Societăţii Academice „Matei-Teiu Botez”
Iaşi 2003
BAZE DE DATE,
PREZENTARE GENERALĂ
33
Capitolul 3 – Baze de date, prezentare generală
Imediat (anii 1974-1977) propunerea teoretică a lui Codd a fost implementată
practic în principal în două sisteme: Ingres dezvoltat de UCB cu limbajul de
interogare QUEL şi System R dezvoltat de IBM la San Jose cu limbajul SEQUEL.
Următorul pas logic a fost dezvoltarea modelului Entitate-Relaţie pentru
proiectarea bazelor de date. Această nouă abordare permitea concentrarea asupra
utilizării datelor. Această propunere a fost făcută de P.Chen în 1976.
Combinând realizările anterioare Sequel 2 devine SQL şi în 1982 se începe
standardizarea sa, proces încheiat în 1986. SQL devine un limbaj universal utilizat de
foarte multe sisteme practice IBM DB2, RIM, RBASE 5000, PARADOX, OS/2
Database Manager, Dbase III şi IV, Watcom SQL şi numărul este mult mai larg.
După 1990 se merge pe dezvoltarea standardelor existente şi se pune un
deosebit accent pe dezvoltarea de instrumente de acces la bazele de date. Direcţiile
principale sunt: (1) posibilitatea de a crea programe utilizând limbajul de interogare şi
(2) de a permite în limbaje de uz general includerea de comenzi de interogare.
Totodată se începe definirea conceptului de sistemel de baze de date orientate pe
obiect.
Tot în aceeaşi perioadă se distinge preocuparea creării de baze de date
distribuite şi de utilizare a nou apărutei (la acea vreme) reţele globale Internet.
Implementările viitoare tind către utilizarea obiectelor ca element de bază şi
de includerea conceptului de baze de date mobile în practica normală.
La mijlocul anilor 1990 are loc dezvoltarea explozivă Internet-ului. Se trece
la introducerea aplicaţiilor client-server chiar pentru calculatoarele personale. Oferta
de instrumente de gestionare a bazelor de date prin conectare la Internet creşte
exponenţial. Active Server Pages, Front Page, Java Servlets, JDBC, Enterprise Java
Beans, ColdFusion, Dream Weaver, Oracle Developer 2000, Apache, MySQL sunt
doar câte exemple.
Un SGBD trebuie:
1. să permită utilizatorilor să creeze noi baze de date şi să le specifice schema
(structura logică a datelor utilizând un limbaj specializat denumit limbaj de
definire a datelor).
2. să ofere utilizatorilor capacitatea de a interoga datele (o „interogare” este
argoticul pentru acţiunea de chestionare a datelor) şi de a le modifica,
utilizând un limbaj adecvat, adesea denumit limbaj de interogare sau limbaj
de manipulare a datelor.
3. să suporte stocarea unor cantităţi foarte mari de date pe perioade lungi de timp,
ferindu-le de accidente sau de utilizare neautorizată şi permiţând acces
eficient la date pentru interogare sau modificare.
34
Baze de date şi algoritmi pentru căi de comunicaţie
4. să permită accesul simultan a mai multor utilizatori fără să permită ca acţiunile
unuia să afecteze pe ceilalţi şi fără ca accesul simultan să ducă la coruperea
accidentală a datelor.
Primele sisteme comerciale de baze de date au părut la sfârşitul anilor 1960.
Aceste sisteme au evoluat din sisteme de fişiere şi furnizau parţial primele trei cerinţe.
Ele erau mai degrabă grupuri de înregistrări. Primele modalităţi practice de a stoca şi
regăsi date pe calculatoare erau aplicaţii pe fişiere care utilizau un limbaj de
programare de nivel înalt (ex. COBOL). Principala deficienţă a acestei abordări era
aceea că structura fişierului era descrisă în aplicaţie. Dacă cineva ar fi dorit să
utilizeze datele într-o altă aplicaţie trebuia să scrie din nou descrierea fişierului în
propriu său program. Mai mult, dacă din greşeală se pierdea sursa aplicaţiei înţelesul
datelor s-ar fi pierdut. De aceea este necesar să se realizeze fişiere de date cu
descrierea structurii ataşată sau inclusă. Pornind de aici s-au dezvoltat bazele de date.
Sistemele propriuzise de gestiune a bazelor de date au folosit la început
diferite modele de descriere a structurilor cele mai populare fiind cea ierarhică sau
arborescentă şi cea de tip graf sau reţea. ultima fiind standardizată la sfârşitul anilor
1960 prin raportul CODASYL (Committee on Data Systems and Languages).
Problema esenţială a acestor modele şi sisteme era că nu incorporau şi nici nu se
bazau pe un limbaj de nivel înalt pentru interogare.
Următorul pas la constituit a fost constituit de publicarea de către E.F. Codd a
celebrelor sale lucrări din 1970 şi 1972 ([57], [58]). Aceste lucrări puneau bazele unei
noi abordări a bazelor de date care erau organizate în tabele denumite relaţii. Pentru
realizarea lor se puteau utiliza diferite implementări, structuri de date complexe şi
mecanisme de stocare sofisticate, dar utilizatorul nu era preocupat de acest lucru. El
gândea totul în termeni de relaţii. Interogarea se baza pe un aparat de lucru matematic
asemănător celui din teoria mulţimilor ceea ce permitea exprimarea printr-un limbaj
de nivel înalt. Lucrul acesta creştea eficienţa faţă de celelalte tipuri de date.
35
Capitolul 3 – Baze de date, prezentare generală
SISTEME DE PRELUCRARE A FIŞIERELOR
Aplicaţiile bazate pe prelucrarea fişierelor, păstrează tot setul de date într-un
fişier unic sau într-un set de fişiere. Datele care descriu sistemul sau componentele
sale pot fi păstrate în fişiere separate şi este datoria softului pe care utilizatorul sau
programatorul îl foloseşte să stabilească relaţiile şi corespondenţa dintre fişiere.
Pentru fiecare fişier folosit programul trebuie să aibă inclusă permanent o
interfaţă care să permită accesul la date. Mai multe fişiere înseamnă mai multe
interfeţe care să realizeze transferul. În cazul în care există mai multe aplicaţii care
accesează aceleaşi fişiere interfeţele trebuie incluse în fiecare aplicaţie în parte. Toate
acestea duc la o "explozie a interfeţelor" [54], programatorii trebuind să se ocupe mai
mult de realizarea preluării datelor decât de problema de rezolvat.
Este de asemenea la latitudinea utilizatorului să selecteze numai date
semnificative din fişier şi să „ascundă” înregistrările ce nu sunt necesare. Este, de
aceea, foarte laborios să proiectezi şi să creezi un program (aplicaţie utilizator) şi este
şi mai greu să o modifici în caz de necesitate. În multe cazuri, dacă din anumite
motive, o anumită aplicaţie cerea modificarea formatului unui fişier toate celelalte
aplicaţii trebuie să adopte un nou format de preluare a datelor deoarece interfaţa lor se
realiza cu structura fizică a fişierului şi aceasta se modifica.
Din punct de vedere istoric, este primul sistem identificabil de baze de date şi
încă se mai utilizează pe scară largă din cauza simplităţii, nevoii de compatibilitate cu
versiunile anterioare de program şi din cauză că, în timp, sistemele de management al
fişierelor a evoluat, putând răspunde la cerinţe complexe.
Un avantaj este dat de faptul că diferite fişiere pot fi păstrate pe diferite
calculatoare şi pot fi actualizate de persoane diferite. Dezavantajul major este dat de
imposibilitatea de a păstra confidenţial conţinutul unui fişier. Securitatea informaţiilor
este serios afectată de posibilitatea de a citi direct fişierul şi a-l transporta pe un alt
sistem.
Toate acestea au condus la necesitatea apariţiei unui nou mod de abordare a
prelucrării datelor prin utilizarea bazelor de date.
36
Baze de date şi algoritmi pentru căi de comunicaţie
şi instrumente de construcţie a aplicaţiilor. Este acum extrem de uşor de dezvoltat, în
manieră interactivă, forme de introducere sau de vizualizare a datelor.
Baza de date este o colecţie depozitată de date operaţionale utilizată de
sistemul de aplicaţii al unei organizaţii.
Trebuie să facem unele precizări:
Organizaţie este un termen convenţional pentru a descrie la modul generic
orice entitate comercială, ştiinţifică, tehnică sau operaţională.
Câteva exemple:
• Administraţia Naţională a Drumurilor,
• Compania Naţională a Căilor Ferate,
• Direcţie regională,
• Secţie,
• District,
• Universitate,
• Facultate,
• Institut de cercetări, etc.
Pentru buna funcţionare orice organizaţie trebuie să întreţină un set mare de
baze de date. Acestea sunt baze date operaţionale. Datele operaţionale ale unei
organizaţii de administrare a infrastructurii transporturilor pot fi: date de
management; date de planificare; date de proiectare; date de climat; etc.
Se poate reduce redundanţa datelor stocate: În cele mai multe dintre sistemele
actuale fiecare aplicaţie are fişiere proprii. Aceasta poate produce o utilizare
ineficientă a spaţiului de stocare prin redundanţă. Utilizarea bazelor de date poate
identifica şi elimina redundanţa.
Se pot evita problemele de inconsistenţă a datelor stocate: Din cauza
existenţei surselor de eroare şi a transmiterii lor este posibil ca în fişiere diferite
aceleaşi date să aibă valori diferite pentru a descrie acelaşi fapt. În bazele de date se
va furniza aceeaşi valoare pentru orice interogare, indiferent de utilizator.
Datele pot fi partajate: Sistemele de baze de date oferă mecanisme prin care
utilizatorii pot folosi în comun aceleaşi date simultan şi de a utiliza în comun
aplicaţiile definite. În această manieră datele pot fi actualizate de oricare utilizator şi
valorile prezentate celorlalţi pot fi în permanenţă cele reale.
Se pot aplica restricţii de securitate:
Administratorul bazei de date poate:
Asigura că singurele căi de acces sunt cele autorizate prin
canale , şi
37
Capitolul 3 – Baze de date, prezentare generală
Defini verificări de autorizare pentru fiecare încercare de
acces la date importante. Se pot defini proceduri diferite
pentru fiecare tip de acces (citire, actualizare, ştergere
etc.) pentru fiecare tip de date.
Poate fi menţinută integritatea datelor: Bazele de date pot trata mai eficient
problema integrităţii. Chiar dacă redundanţa este eliminată se pot întâlni cazuri de
date incorecte din cauza multor factori (eroare umană, defecte hardware, erori de
programare etc.).
Cererile conflictuale pot fi rezolvate: Administratorul bazei de date poate
stabili o importanţă pentru fiecare utilizator şi prin aceasta o prioritate cererilor de
obţinere a datelor pe care le face.
Independenţa datelor: Fiecare utilizator sau aplicaţie poate avea propria
viziune (VIEW) asupra datelor fără ca prin asta să afecteze .
Pentru a evita obligaţia utilizatorului de a calcula permanent şi repetat unele
valori au fost concepute funcţii de tip TRIGGER care se declanşează la apariţia
anumitor evenimente.
SISTEM INFORMAŢIONAL
SISTEM INFORMATIC
BAZE DE DATE
SGBD
SISTEM DE CALCUL
PROCEDURI, APLICAŢII
PERSONAL CALIFICAT
39
Capitolul 3 – Baze de date, prezentare generală
fişier unic sau un set de fişiere. Seturile de date sunt separate numai logic în cadrul
sistemului. Accesul la date se realizează prin Sistemul de Gestiune a Bazei de Date
(SGBD) care este o însumare de proceduri software ce înţeleg şi manipulează
structurile logice din fişier. SGBD pune la dispoziţia utilizatorilor facilităţi de stocare
a datelor într-o structură adecvată, facilităţi de regăsire a lor, de protecţie, toate în
condiţiile obţinerii unei bune performanţe. Ceea ce distinge cu adevărat un SGBD
este posibilitatea de a descrie independent de reprezentarea lor fizică. În mod ideal,
structura logică a unei baze de date este independentă de mediul de memorare.
Structura, pe straturi, a unui SGBD se compune din:
• nivel extern, văzut de utilizator, caracterizat de o anumită descriere a
datelor, convenabilă acestuia;
• nivelul intern, transparent pentru utilizator, cu o altă descriere a datelor,
conformă cu metodele de organizare şi acces puse la dispoziţie de ultimul
nivel;
• sistemul de gestiune a fişierelor;
Deoarece aplicaţiile interacţionează numai cu sistemul de gestiune a bazei de
date nu mai este necesară decât o singură interfaţă. Mai mult, această interfaţă se face
la nivel logic şi nu fizic. De aceea aplicaţiile nu mai trebuie să cunoască structura
intimă a fişierelor şi nici să-şi modifice modul de lucru de fiecare dată când se
modifică structura datelor.
INDEPENDENŢA FIZICĂ
Unul dintre obiectivele importante ale unui SGBD îl constituie independenţa
structurilor de memorare a datelor faţă de structura lor reală. Structurile de memorare
trebuie să se supună regulilor de eficienţă a memorării şi regăsirii şi nu trebuie să fie
40
Baze de date şi algoritmi pentru căi de comunicaţie
afectate de relaţiile existente între datele din lumea reală. Ele nu trebuie să fie
imaginea organizării datelor din sistemul modelat. Altfel, o schimbare în structura
externă a datelor ar necesita o reorganizare în structura internă, memorată a datelor.
INDEPENDENŢA LOGICĂ
Structura datelor din lumea reală, având o semantică proprie, reprezintă
punctul de vedere al unui grup de utilizatori. Un alt grup poate avea o altă imagine
asupra datelor, organizându-le altfel, sau considerând doar o parte a lor. Dacă un
SGBD reuşeşte să ofere o asemenea structurare a datelor care să permită fiecărui grup
de utilizatori să vadă datele aşa cum doreşte şi în acelaşi timp să permită grupurilor
să-şi modifice punctul de vedere fără ca aceasta să afecteze alte viziuni particulare,
atunci se poate spune că există o independenţă logică a datelor.
Împreună, independenţa fizică şi logică a datelor asigură stabilitatea
aplicaţiilor faţă de modificările structurilor externe.
COERENŢA DATELOR
O condiţie esenţială a unui sistem de prelucrare utilizabil şi eficient este
corectitudinea datelor manipulate. Proiectanţii, precum şi cei care exploatează un
asemenea sistem trebuie să ia toate precauţiile pentru a sigura acurateţea datelor. Un
sistem de gestiune a bazelor de date pune la dispoziţia utilizatorilor facilităţi de
control a datelor introduse în bază.
Sunt verificate atât respectarea unor condiţii de validare la nivelul datelor
elementare, cât şi al interdependenţelor între date în aşa fel încât coerenţa datelor să
fie asigurată.
PARTAJAREA DATELOR
Aceasta presupune că ele sunt disponibile mai multor utilizatori. Probleme
dificile apar în cazul simultaneităţii cererilor de acces la aceeaşi dată. Pentru
rezolvarea unei asemenea concurenţe, există mecanisme la nivelul sistemelor de
gestiune a fişierelor, care sunt preluate de sistemele de gestiune a bazelor de date.
SECURITATEA DATELOR
Datele trebuie protejate împotriva accesului neintenţionat sau răuvoitor.
Mecanismele sistemului de gestiune a bazei de date verifică drepturile de acces ale
utilizatorilor la toate datele, sau la o parte a acestora şi stabileşte modul de acces
(scriere, citire, ştergere, actualizare).
43
Capitolul 3 – Baze de date, prezentare generală
Nivelul conceptual corespunde structurii datelor din realitate, cu semantica
lor, comună pentru toate grupurile de utilizatori. În lumea reală există date de tip
elementar (atribute), care descriu un obiect şi care nu pot fi detaliate în continuare. La
nivelul ierarhic imediat superior se află entitatea, obiectul real descris de atribute.
Între aceste entităţi pot fi găsite relaţii, asocieri logice care reprezintă nivelul al
treilea.
Proiectantul unui sistem trebuie să deceleze exact aceste elemente constituind
modelul datelor şi interdependenţa lor. Acest model (schema conceptuală) cuprinde
de asemenea şi informaţii referitoare la condiţiile pe care datele trebuie să le respecte.
Nivelul intern corespunde structurii de memorare a datelor (schema internă).
La acest nivel se utilizează următoarele concepte:
• fişier/fişiere de date caracterizate prin nume, tip de organizare, localizare,
dimensiuni;
• înregistrarea fişierului, definită de lungime, câmpuri, componente;
• căi de acces la înregistrare - prin indecşi, pointeri etc.
Nivelul extern este propriu fiecărui grup de utilizatori, care văd datele
conform specificului aplicaţiei lor (schema externă).
O schemă externă vede doar o parte a bazei de date şi într-o structură proprie.
Această particularitate are şi avantajul că oferă un mecanism în plus pentru asigurarea
integrităţii şi securităţii datelor.
44
Baze de date şi algoritmi pentru căi de comunicaţie
Limbajul de manipulare a datelor externe care permite programatorului de
aplicaţie să aibă acces la date conform cu punctul de vedere al schemei externe;
Interfaţa de acces la dicţionarul de date, prin intermediul căreia procesoarele
şi celelalte elemente de arhitectură descrise deja, pot să aibă acces la scheme şi reguli
de conversie compilate şi aflate în metabază.
Un exemplu de arhitectură este prezentat în figura următoare:
S chem a
c o n c e p tu a lă
Schem a S chem a
in te rn ă e x te r n ă
P ro c e s o r u l
schem ei
P ro c e s o ru l c o n c e p tu a le P ro c e s o ru l
s c h e m e i in te r n e s c h e m e i e x te rn e
D ic ţio n a ru l d e d a te
( m e ta -b a z a )
T r a n s fo rm a to r u l T r a n s fo rm a to r u l
c o n c e p tu a l/in te r n e x te r n /c o n c e p tu a l
L im b a j d e
m a n ip u la r e a a
d a te lo r e x te r n e
Baza
d e d a te
P r o g ra m e d e a p lic a ţie
46
Baze de date şi algoritmi pentru căi de comunicaţie
Din punctul de vedere al asigurării integrităţii datelor în sistemele
client/server distribuite, producătorii de software de gestiune a bazelor de date au
abordat următoarele strategii:
• tehnica "two-phase commit" prin care toate modificările impuse de o
tranzacţie asupra unei baze de date sunt fie comise (execuţia tranzacţiei
este finalizată) fie sunt anulate, cu revenirea bazei de date în stare
anterioară efectuării tranzacţiei. Această strategie asigură faptul că toate
serverele deţin copii identice în orice moment
• strategia de replicare a datelor este în prezent soluţia adoptată de marii
producători. Replicarea constă în realizarea mai multor copii identice ale
bazei de date. Garanţia identităţii este asigurată numai în anumite momente
sau sub anumite condiţii.
47
Capitolul 3 – Baze de date, prezentare generală
BAZE DE DATE ORIENTATE PE OBIECT
Modelele relaţionale sunt legate de abordarea bazată pe separarea datelor şi a
prelucrărilor. Aceste modelele sunt în general inadecvate pentru construirea
obiectelor din domenii cum ar fi CAD, administrarea documentelor, birotică,
inginerie software, sisteme de informare, sisteme multimedia. În modelele relaţionale
nu există noţiunile de clasă şi nici de obiect. Orice obiect ar trebui descompus în mai
multe relaţii şi se stabilesc o sumă de legături pentru reconstituirea obiectului din
părţi. O altă scădere este în diferenţa dintre limbajele de interogare şi manipulare şi
limbajele de programare. Limbajele de programare şi limbajele de manipulare a
bazelor de date sunt destul de dificil de integrat.
Pentru a rezolva aceste exigenţe au apărut două tendinţe.
Prima abordare constă în extinderea modelului relaţional. Extensiile
integrează concepte precum agregare şi generalizare, noţiunea de clasă, seturi de
atribute valorice, tipuri abstracte de date. De asemenea apare integrarea noţiunii de
operatori ataşaţi unei proceduri. Operatorii sunt consideraţi ca atribute ale unei tabele
şi conduc la definirea de noi tipuri de atribute.
În a doua abordare, ce se sprijină pe modele obiectuale, un obiect este
considerat ca un tot unitar şi nu ca o mulţime de n-uple. Atributele unui obiect pot fi
la rândul lor considerate obiecte. În linie generală, SGBDO integrează majoritatea
funcţiunilor unui SGBD tradiţional şi în plus oferă un limbaj de programare orientat
pe obiecte pentru a defini schema bazei, pentru manipularea obiectelor şi codificarea
aplicaţiilor. Aceasta permite combinarea avantajelor programării orientate pe obiect
cu conceptele de coerenţă, partajare, integritate proprii bazelor de date. Se reduce
astfel la minim diferenţa dintre reprezentarea obiectelor la nivel conceptual şi nivel
intern. Un obiect oricât de complex ar fi păstrează aceeaşi reprezentare în memorie ca
şi pe disc ceea ce face ca să se elimine problemele de conversie de tip şi de structură.
Legăturile dintre obiecte se păstrează la nivelul bazei de date.
Limbajele de programare orientate pe obiect s-au răspândit în mediile
inteligenţei artificiale. Ele propun o nouă abordare a programării care îşi datorează
originalitatea fuziunii naturale dintre prelucrare şi date.
Conceptul de bază este obiectul, pe care îl putem defini ca fiind reprezentarea
unei entităţi a lumii reale. În baza de date obiectul este identificat într-o manieră unică
printr-un identificator, numit OID (Object IDentifier), atribuit de sistem. Două obiecte
având OID diferite sunt considerate ca diferite, spre deosebire de SGBD-urile
relaţionale unde obiectele (tuplurile de valori corespunzând atributelor tabelei) nu
sunt identificate decât prin valorile lor.
Principii de bază în orientarea pe obiect: Abstracţia, încapsularea,
modularizarea, ierarhizarea.
48
Baze de date şi algoritmi pentru căi de comunicaţie
Abstracţia
Orice model care include aspectele cele mai importante, esenţiale şi
definitorii ale unor entităţi, suprimând sau ignorând detaliile mai puţin importante,
imateriale, diversificatorii. Rezultatul eliminării distincţiilor este evidenţierea
caracteristicilor comune.
În final caracteristicile abstracţiilor sunt „capturate” drept clase şi obiecte ale
modelului.
Încapsularea
Localizarea fizică a facilităţilor într-o abstracţie de tip cutie neagră care le
ascunde implementarea în spatele interfeţei publice.
Elimină dependenţa directă de implementare. Clienţii nu sunt afectaţi de
modificarea implementării. Clienţii pot interacţiona numai prin interfaţă.
Modularizarea
Descompunerea logică şi fizică a lucrurilor în grupări simple care ajută la
atingerea scopurilor de analiză.
Sparge sistemele în piese mai mici cu comportament mai simplu. Interfeţele
dintre piese trebuie bine definite.
Ierarhizare
Orice ordonare sau aranjare într-o structură de tip arborescent. Aceasta
corespunde organizării modelului dintr-un anumit punct de vedere.
Un obiect este descris prin ansamblul de proprietăţi constituit din atribute şi
metode. Posibilitatea de a face private aceste proprietăţi vis-a-vis de obiect se
numeşte încapsulare. Altfel spus, nici un alt obiect nu cunoaşte metodele unui obiect
dat decât prin semnăturile lor (numele metodei, lista parametrilor şi tipul rezultatului
returnat) şi nu are, în principiu, nici un mijloc de a accede la atributele acestuia, care
sunt manipulate prin metode proprii.
Obiectele de aceeaşi natură sau prezentând similitudini sunt grupate în cadrul
unei clase în care sunt declarate toate atributele şi metodele care le manipulează. O
clasă este astfel un tipar pentru o mulţime de obiecte de acelaşi fel. Crearea unui nou
obiect implică utilizarea instanţelor şi metodelor clasei din care aparţine.
Pentru a nu redefini aceleaşi atribute şi metode au fost create mecanisme de
moştenire prin factorizarea proprietăţilor comune. Clasa nouă fiind nevoită să
definească numai atributele şi metodele suplimentare.
49
Capitolul 3 – Baze de date, prezentare generală
Implementarea bazelor de date orientate pe obiect (BDOO)
BDOO combină conceptele orientării pe obiect, construcţiile programării şi
posibilităţile gestionării bazelor de date. BDOO suportă partajarea concurentă şi
referenţială şi netezeşte diferenţele dintre limbajele de programare şi bazele de date.
Orientare-pe-obiect = tipuri abstracte de date + moştenire + identitatea obiectelor
Proprietăţile bazelor de date preluate şi dezvoltate de BDOO sunt: persistenţă,
tranzacţii, controlul concurenţei, recuperarea, tratarea cozilor de aşteptare, versiune,
integritate, securitate şi performanţă.
1. Persistenţa: Capacitatea de a furniza aceleaşi date şi datele corecte în
două tranzacţii diferite. Aceste date trebuie stocate pe un suport
permanent.
2. Tranzacţia: este o secvenţă de program care fie este executată în
întregime fie nu este executată de loc. (aceasta se numeşte atomicitate);
3. Controlul concurenţei: Sistemul furnizează o ordine în timp a
tranzacţiilor utile (o ordine serială de execuţie);
4. Recuperarea: Trebuie să garanteze că rezultatele parţiale obţinute în
urma unor actualizări incomplete desfăşurate în tranzacţii eronate nu se
propagă în bazele de date persistente. Exemple de tipuri de eroare pot fi:
Eşecul tranzacţiei (cauzat de conflicte între tranzacţii concurente);
Defecte de sistem (eroare software în sistemul de operare, în SGBD
sau cădere de tensiune);
Defectarea dispozitivelor de stocare (uzual produse de căderea
discurilor sau alte cauze).
5. Interogare: Se presupune existenţa unui limbaj de interogare şi a
mecanismelor de acces. Utilizatorii pot specifica ce doresc fără să fie
preocupaţi de cum sunt stocate fizic datele.
6. Versiune: Capacitatea de a oferi acces la stări anterioare ale obiectelor
după ce au fost executate unele tranzacţii. Aceasta poate arăta evoluţia
obiectelor.
7. Restricţii de integritate: Bazele de date trebuie să permită accesul numai
în stări stabile. Toate accesele către o zonă afectată de procese de
tranzacţie trebuie blocate până când tranzacţia a fost corespunzător
încheiată.
8. Securitate: trebuie definite o parolă şi drepturi de acces pentru fiecare
utilizator.
9. Probleme de performanţă: La momentul actual BDOO au reputaţia de a
fi bogate în funcţionalitate dar slabe în performanţe ceea ce înseamnă că
mai trebuie lucrat pentru a obţine o viteză ridicată.
50
Baze de date şi algoritmi pentru căi de comunicaţie
TENDINŢE VIITOARE
Baze de date uriaşe vor necesita noi mijloace de manipulare şi analiză. Baze
de date ştiinţifice foarte largi (de ordinul teraocteţilor) pentru explorarea spaţiului,
securitate naţională, proiectul genomului uman, date de analiză geologică depăşesc
bariere şi ridică noi probleme. Depozitele de date (data warehousing), cariere de date
(data mining) şi târguri de date (data marts) sunt tehnici comune astăzi. Succesoare
ale SQL, şi probabil ale SGBDR, vor fi dezvoltate pentru astfel de realizări. Cele mai
multe dintre succesoare actuale ale SQL nu sunt încă utilizate la capacitate potenţială.
Bazele de date mobile sunt un nou produs care apare pe piaţă.
Viitorul aparţine bazelor de date inteligente. Bazele de date tind să
încapsuleze cele mai noi concepte din domeniul tehnologiei informaţiei. Accesul la
distanţă, sisteme de inteligenţă artificială, posibilităţi grafice şi hipermedia pentru
prezentarea atractivă a informaţiilor.
3.8. BIBLIOGRAFIE
[51] Astrahan M. M. et al.: System R: a relational approach to database management; ACM
Trans. on Database Systems 1:2 (1976), pp. 97-137.
[52] Bernstein P. A. et al., "The Asilomar report on database research," http://s2k-
ftp.cs.berkeley.edu:8000/postgres/papers/Asilomar_Final.htm .
[53] Blanc Pierre: Initiation a l'nformatique; Publié en libre service, Grenoble, 1995.
[54] Bowers DS: From Data to Database; Chapman and Hall, London, 1990.
[55] Carey M.J., D.J.DeWitt, G. Graefe, D.M. Haight, J.E. Richardson, D.H. Schuh, E.J.
Shekita, S.L. Vandenberg: The EXODUS Extensible DBMS Project: An Overview; In
Stan Zdonik and David Maier, editors, Readings In Object-Oriented Database Systems.
Morgan-Kaufmann Publishers, Inc., 1990.
[56] Carey Michael J., DeWitt David J., Franklin Michael J., Hall Nancy E., McAuliffe Mark
L., Naughton Jeffrey F., Schuh Daniel T., Solomon Marvin H., Tan C.K., Tsatalos
Odysseas G., White Seth J., Zwilling Michael J.: Shoring Up Persistent Applications.
In Proc. ACMSIGMOD International Conference on Management of Data,
Minneapolis, pp.383–394, May 1994.
[57] Codd E. F.: A Relational Model of Data for Large Shared Data Banks; Communications
of the ACM, Vol. 13, No. 6, June 1970, pp. 377-387.
[58] Codd, E. F.: Relational Completeness of Data Base Sublanguages; in Data Base
Systems. Vol. 6 of Courant Computer Symposia Series. Englewood Cliffs, N.J.:
Prentice Hall, 1972. pp. 65--98.
52
Baze de date şi algoritmi pentru căi de comunicaţie
[59] Comer Douglas: The Ubiquitous B-Tree; Computing Surveys, 11(2):121–137, June 1979
[60] Date, C. J., H. Darwen: A Guide to the SQL Standard; Fourth Edition, Addison-Wesley,
Reading, MA, 1997.
[61] Guttman Antonin: R-Trees: A Dynamic Index Structure For Spatial Searching; In
Proceedings of ACMSIGMOD International Conference on Management of Data, pp.
47–57, Boston, June 1984.
[62] Hellerstein Joseph M., Naughton Jeffrey F., Pfeffer Avi: Generalized Search Trees for
Database Systems; Proceedings of the 21st VLDB Conference, Zurich, Switzerland,
1995.
[63] Kim Won, Kim Kyung-Chang, Dale Alfred: Indexing Techniques for Object-Oriented
Databases; In Won Kim and Fred Lochovsky, editors, Object-Oriented Concepts,
Databases, and Applications, pages 371–394. ACM Press and Addison-Wesley
Publishing Co., 1989.
[64] Lin King-Ip, Jagadish H. V., Faloutsos Christos: The TV-Tree: An Index Structure for
High-Dimensional Data; VLDB Journal, 3:517–542, October 1994.
[65] Lomet David B., Salzberg Betty. The hBTree: A Multiattribute Indexing Method; ACM
Transactions on Database Systems, 15(4), December 1990.
[66] Mediano Maurício R., Casanova Marco A., Dreux Marcelo: V-Trees — A Storage
Method For Long Vector Data; In Proc. 20th International Conference on Very Large
Data Bases, pages 321–330, Santiago, September 1994.
[67] Parsaye Komran e.a.: Intelligent Databases; Wiley Press & Sons; 1989.
[68] Robinson J. T.: The k-D-B-Tree: A Search Structure for Large Multidimensional
Dynamic Indexes; In Proc. ACM-SIGMOD International Conference on Management
of Data, pp.10–18, Ann Arbor, April/May 1981.
[69] Stonebraker M., E. Wong, P. Kreps, G. Held: The design and implementation of
INGRES; ACM Trans. on Database Systems 1:3 (1976), pp. 189-222.
[70] Stonebraker Michael: Inclusion of New Types in Relational Database Systems; In
Proceedings of the IEEE Fourth International Conference on Data Engineering, pp.
262–269, Washington, D.C., February 1986.
[71] The POSTGRES Group: POSTGRES Reference Manual, Version 4.2. Technical Report
M92/85, Electronics Research Laboratory, University of California, Berkeley, April
1994.
[72] Ullman Jeff D., Widom Jennifer: A First Course in Database Systems: Prentice-Hall,
Englewood Cliffs NJ, 1997, 2nd edt. 2001.
[73] Wong C. K. , Easton M. C.: An Efficient Method for Weighted Sampling Without
Replacement; SIAM Journal on Computing, 9(1):111–113, February 1980.
53
Scînteie Rodian Baze de date şi algoritmi pentru căi de comunicaţie
ISBN 973-86343-3-4 Editura Societăţii Academice „Matei-Teiu Botez”
Iaşi 2003
4.1. DEFINIŢII
Înainte de a trece efectiv în revistă conţinutul acestui capitol trebuie să
prezentăm câteva definiţii.
(N)-tuple reprezintă un set de (n) valori-atribut reprezentând o singură realizare a
combinării domeniilor.
Atribut extern: este un atribut al unei entităţi care este importat, prin relaţiile
stabilite, de la o altă entitate.
Atribut local: un atribut al unei entităţi ce este definit din proprietăţile intrinseci ale
acelei entităţi.
Atribut: o funcţie pe un domeniu pentru fiecare realizare a tuplelor. Atribuie o
singură valoare (dintr-o mulţime bine definită) fiecărui individ din mulţimea
entităţilor. Este o caracteristică a entităţii care se selectează pentru a fi inclusă în
modelul E-R.
Atribute surogat: un atribut al unui tip de entitate care este conceput de proiectantul
bazei de date fără legătură cu regulile semantice care definesc entitatea.
Bază de date: un set de relaţii.
Cardinalitate: numărul de tuple pe care le are o relaţie. Este o restricţie asupra
relaţiei care descrie numărul maxim de indivizi dintr-o set activ ce poate fi corelat
cu un singur individ dintr-un alt set activ. Cardinalitatea poate fi unul-la-mai-
mulţi, mai-mulţi-la-unul, unul-la-unul.
Cheie (candidat): o (super)cheie care este minimală (care nu mai are un subset
corespunzător care să identifice unic fiecare tuplu din relaţie). Pot exista mai
multe pentru fiecare relaţie.
54
Baze de date şi algoritmi pentru căi de comunicaţie
Cheie (supercheie): un set de atribute a cărui valori grupate identifică unic fiecare
tuplu din relaţie.
Cheie externă: este o cheie candidat a unei relaţii situată într-o altă relaţie.
Cheie primară: o cheie candidat aleasă a fi cheia principală a unei relaţii. Pentru o
relaţie există o singură cheie primară.
Colecţie: este un set de înregistrări, fiecare cu acelaşi număr şi tip de elemente de
date.
Domeniul: mulţimea tuturor valorilor posibile ce corespund unui atribut şi care pot fi
stocate. Un domeniu are un format şi un tip.
Element al entităţii: un obiect specific (obiect fizic sau conceptual, eveniment, faptă)
asociat cu activitatea.
Elemente de date: fiecare dintre valorile elementare care sunt stocate în bazele de
date. Fiecare dintre elementele de date are tip de dată (pe scut tip) şi pot fi grupate
într-o înregistrare.
Entitate: este oricare „ceva” care este parte a problemei şi care trebuie reprezentat în
baza de date.
Gradul: este numărul de atribute pe care le are o relaţie;
Înregistrare: un set de unul sau mai multe elemente de date cu nume propriu.
Legătură: împerecherea unui individ dintr-un set activ cu un individ dintr-un alt set
activ.
Mapare: setul tuturor legăturilor dintre membrii individuali ai seturilor active.
NULL: o valoare constantă specială, compatibilă cu domeniul oricărui atribut care
denotă faptul că atributul este nedefinit pentru un element al entităţii.
Produs cartezian: Produsul cartezian (⋅) între mulţimi este mulţimea tuturor
combinaţiilor posibile între elementele seturilor.
Relaţie: un subset al produsului cartezian al domeniilor sale.
Rolul: mai multe atribute pot avea acelaşi domeniu, dar atributele indică rolul diferit
în relaţie.
Schema relaţională: o descriere a conexiunii dintre două tipuri de entităţi conformă
cu maparea membrilor unui set activ la membrii altui set activ.
Setul activ (al unui tip de entitate): toate acele entităţi individuale de un anumit tip
care participă la momentul respectiv la o activitate.
Tipul entităţii: o clasă de individualităţi asociată cu acţiunea, care poate fi descrisă
de un set finit de reguli sintactice şi semantice determinate de acţiune – pe baza
proprietăţilor lor reale, intrinseci şi a rolului lor în acţiune.
Valoare-atribut: rezultatul funcţiei atribut. Fiecare realizare este reprezentată de o
valoare-atribut extrasă din fiecare domeniu şi o valoare specială NULL.
55
Capitolul 4 – Modele de date utilizate
Într-un mod mai formal, un model de date este o combinaţie a cel puţin trei
componente:
• O colecţie de tipuri de structuri de date;
• O colecţie de operatori sau reguli de raţionament care pot fi aplicate oricărei
instanţe valide a tipurilor de date;
• O colecţie de reguli generale de integritate care definesc implicit sau explicit
mulţimea stărilor bazei de date, posibilităţile de modificare sau amândouă.
Este importat de observat că modelul de date este o construcţie logică care se
realizează ulterior pe diferite platforme hardware şi software. De aceea, acelaşi model
de date poate avea diferite aparenţe, performanţe, eficienţă, limite, costuri etc. funcţie
de implementare.
MODELUL ENTITATE-RELAŢIE
Cel mai răspândit model de reprezentare abstractă a structurii bazelor de date
este modelul entitate–relaţie (model E/R). În acest model structura datelor este
reprezentată grafic printr-o „diagramă entitate-relaţie”.[79]
Modelul E/R implică utilizarea a trei elemente: entitatea, atributul şi relaţia.
Entitatea
Entitatea este „ceva” care este parte a problemei şi care trebuie reprezentat în
baza de date. Poate fi un obiect fizic (o persoană, o clădire, un tunel etc.), conceptual
(o instituţie, un proiect etc.) sau faptic (o revizie periodică a fost efectuată şi au fost
efectuate măsurători care trebuie stocate). În sens larg, o entitate este un obiect
abstract de orice natură. O colecţie de entităţi similare formează un set de entităţi.
Există asemănări între entitate, aşa cum a fost prezentată mai sus, şi termenul
de obiect din programarea orientată pe obiect. Totuşi, modelul E/R este un concept
static implicând doar structuri de date nu şi operaţiile asupra datelor (Ullman şi
Widom 2001 [84]).
Pentru termenul entitate putem să găsim mai multe semnificaţii care rezultă
din context. Dacă există posibilitatea de confuzie înţelesul trebuie specificat în clar.
O entitate individuală este un lucru specific (obiect fizic sau conceptual,
acţiune sau eveniment) asociat cu un fapt. Referirea la o entitate individuală se face
cu articol (hotărât sau nehotărât).
Un tip de entitate este o clasă de entităţi individuale care pot fi descrise
colectiv printr-un set finit de reguli sintactice şi semantice determinate de necesităţile
specifice ale administratorilor şi utilizatorilor. Acestea sunt prototipuri care definesc
indivizii. În diagramele E-R sunt reprezentate tipurile de entitate.
Referirea se face nearticulat sau la plural.
56
Baze de date şi algoritmi pentru căi de comunicaţie
Setul activ al tipului de entitate reprezintă secţiunea din mulţimea totală a
indivizilor care participă la un realizare. În modelul E-R nu suntem interesaţi de setul
activ decât în execuţie, acesta fiind rezultatul aplicării unei interogări.
Referirea se face utilizând pluralul.
De notat că entităţile individuale, tipurile de entitate şi seturile active există
efectiv în realitate dar nu pot fi stocate direct în baza de date. Trebuie să identificăm
caracteristicile care definesc fiecare entitate.
Atributele
În cadrul modelului, entităţile trebuie caracterizate pentru a se diferenţia din
setul de entităţi. Aceasta se face prin proprietăţi care se ataşează entităţilor şi poartă
denumirea de atribute. Atributele au, în general, valori atomice: întregi, reali, şiruri
de caractere. Există şi variante ale modelului E/R în care atributele au formă
structurată.
În proiectarea unei baze de date trebuie identificate caracteristicile esenţiale
ale unei entităţi şi mulţimea valorilor care pot fi acordate acestor caracteristici.
Noţiunea de „esenţial” se referă la contextul specific în care bazele de date şi
aplicaţiile aferente vor fi utilizate.
De exemplu, când se realizează o listă a personalului care lucrează în
administraţia drumurilor este total irelevant să stocăm date privind culoarea părului,
înălţime, culoarea ochilor etc. pe când un sistem de baze de date al poliţiei consideră
tocmai aceste date de importanţă deosebită.
Spre deosebire de entităţi, atributele pot fi stocate în computer. Ele sunt
definite ca valori stocabile, cuprinse într-un anumit domeniu.
Exemple
• Persoanele angajate au nume, prenume, funcţie, studii, adresă, telefon,
competenţe etc.
Relaţiile
Relaţiile sunt conexiuni care se stabilesc între entităţi. Relaţia poate apare
între două entităţi (relaţie binară) dar este posibilă relaţia între oricâte entităţi.
Relaţiile reprezintă o hartă a legăturilor dintre membrii fiecărui set de entităţi.
57
Capitolul 4 – Modele de date utilizate
În fapt există mai multe niveluri de noţiuni legate de conceptul de relaţie.
unul
mulţi
58
Baze de date şi algoritmi pentru căi de comunicaţie
grafului. Pentru fiecare tip de element se utilizează reprezentarea prin forme speciale
predefinite, stabilite prin convenţie.
COD Nume
An construcţie Nivel_decizional
Traversează
NUME
Lăţime
OBSTACOL
Adâncime
59
Capitolul 4 – Modele de date utilizate
Constructorul poate participa la executarea mai multor contracte simultan, iar
administratorul, la rândul său, gestionează mai multe activităţi. Nu este convenabil să
ataşăm atributul „valoare negociată” de nici-unul dintre seturile de entităţi. Locul său
este lângă relaţia numită „contract”.
Administrator
Chiar dacă uşor de manipulat, acest concept nu este absolut necesar. Se poate
crea o nouă entitate căreia i se ataşează atributul necesar şi se adaugă entitatea în
relaţie.
Reprezentarea atributelor
Înaintea definitivării modelului, trebuie să identificăm atributele care
reprezintă relaţia. Totodată trebuie să stabilim motivaţia şi consecinţele alegerii unui
atribut.
Exemplu: Presupunem că un constructor încheie contracte pentru lucrări. Pe
perioada construcţiei, atributele ataşate constructorului devin atribute ataşate lucrării.
Deosebim trei tipuri de atribute:
• locale,
• surogat şi
• străine.
Atributele locale: sunt atributele intrinsec definite tipului de entitate. Aceasta
înseamnă că indiferent de relaţiile în care este implicată entitatea atributul este
prezent şi are o valoare bine definită. Numele este un atribut local al constructorului.
Atributul surogat: reprezintă un atribut al tipului de entitate care a fost
inventat pentru o mai bună manipulare a datelor. Codul numeric personal pentru
angajaţi, codul fiscal pentru societăţi sau un număr unic de identificare acordat
automat de sistem pot fi considerate atribute surogat. Ele reprezintă doar convenţii
fără corespondent în realitate dar asigură o mai bună distincţie între indivizi.
60
Baze de date şi algoritmi pentru căi de comunicaţie
Atribut străin: reprezintă un atribut al unei entităţi care este ataşat unei alte
entităţi aflate în relaţie cu prima pe durata relaţiei. Dacă avem contracte de lucrări
efectuate de un constructor, pe perioada relaţiei atributele care îl identifică pe
constructor devin atribute ale contractului.
Modelul ierarhic
Modelul a fost dezvoltat în anii '60 la North American Rockwell.
Acest model se referă la aranjarea ordonată datelor într-o structură de forma
unui arbore cu rădăcina în sus. Un exemplu este cel prezentat în figura următoare:
AGENŢIE
Aşa cum se poate vedea mai sus, înregistrările din acest model respectă o
ierarhie strictă. Legăturile dintre diferitele structuri se fac prin pointeri. Un pointer
este o referinţă care indică localizarea unor date specifice în mediul de stocare.
Intuitiv, pointerii sunt precum referinţele de pagină în zona de index dintr-o carte.
Modelul ierarhic a fost prima implementare comercială majoră a conceptelor
teoretice despre bazele de date. Caracteristica de bază a structurii datelor în acest
model este prezenţa în percepţia utilizatorilor a diferitelor niveluri. Cel mai de sus
nivel este rădăcina sau părintele.
62
Baze de date şi algoritmi pentru căi de comunicaţie
Parcurgerea bazei de date se face respectând calea ierarhică. Pentru a ajunge
la un anumit segment de date trebuie parcursă întreaga cale de la rădăcină la
segmentul specific.
Modelul reţea
Modelul reţea a fost creat în 1971 de Conferinţa asupra Limbajelor
Sistemelor de Date (Conference on Data Systems Languages - CODASYL).
Simplificat, modelul de baze de date reţea este prezentat într-o manieră intuitivă în
figura următoare:
ADMINISTRAŢIE
Sector Rutier q
SECŢIE n
Sector Rutier 3
SECŢIE 2 Sector Rutier 2
SECŢIE 1 Sector Rutier 1
Angajat m
Angajat 3
Angajat 2
Angajat 1
Fig. 31 Modelul de baze de date reţea
Structura de bază în acest model este setul şi se compune din cel puţin două
tipuri de înregistrări: o înregistrare posesor echivalentă cu părintele din modelul
ierarhic şi o înregistrare membru. Un membru poate avea mai mulţi posesori.
63
Capitolul 4 – Modele de date utilizate
SECTOR
COD_SR
COD_DRUM
POS_KMI
INTRETINERE POD_KMS
AN DR_STRUCT
COD_SR
INT_COD
INT_CANTIT
Fig. 32 Modelul relaţional de baze de date
Probabil cea mai simplă formă de abordare a modelului relaţional rămâne cel
propus iniţial de Codd, chiar după rafinări şi dezvoltări succesive. Modelul relaţional
specifică o structură de date numită relaţie şi câteva expresii de manipulare a
relaţiilor. Termenul de relaţie reprezintă o tabelă, structurată pe linii şi coloane, în
care se aranjează datele. Nu este obligatoriu ca datele să fie omogene. Pentru relaţii a
fost definit şi un set de operaţii denumit algebră relaţională care va fi prezentat în
capitolul următor.
Consideraţii practice
Modelele de baze de date au fost utilizate ca fundamente teoretice pentru
dezvoltarea a bazelor de date şi a sistemelor de gestiune a bazelor de date. În ultima
perioadă cea mai mare extindere au avut-o bazele de date relaţionale care au fost
susţinute puternic de industria informaticii dar şi de utilizatori care au găsit în acest
model un răspuns simplu la necesităţile lor.
Este motivul pentru care, în continuare vom dezbate doar problemele legate
de modele de date relaţionale, problemele teoretice şi dezvoltarea limbajelor aferente
insistând pe dezvoltarea limbajului SQL ca standard în domeniul bazelor de date
relaţionale.
4.4. BIBLIOGRAFIE
[74] Chen, 1976: Chen Peter P.: The Entity-Relationship Model - Toward a Unified View of
Data. ACM TODS 1(1): 9-36(1976)
[75] Codd, 1970: Codd E. F.: A Relational Model of Data for Large Shared Data Banks;
Communications of the ACM, Vol. 13, No. 6, June 1970, pp. 377-387.
[76] Codd, 1972: Codd, E. F.: Relational Completeness of Data Base Sublanguages; in Data
Base Systems. Vol. 6 of Courant Computer Symposia Series. Englewood Cliffs, N.J.:
Prentice Hall, 1972. pp. 65--98.
64
Baze de date şi algoritmi pentru căi de comunicaţie
[77] Codd, 1979: Codd E. F. (1979): Extending the Data Base Relational Model to
Capture More Meaning; ACM Trans. on Database Systems, 4, 4, 397-434. 48
[78] Codd, 1981: E. F.: The 1981 ACM Turing Award Lecture: Relational Databases – A
practical foundation for Productivity; CACM, Vol. 25 No 2, February 1982
[79] Dick Wayne, Jewett Tom: Practical Relational Database Design, 1999 ????
[80] Garcia-Molina Hector, Ullman Jeffrey D., Widom Jennifer D.: Database Systems: The
Complete Book; Prentice Hall, Copyright: 2002.
[81] Muller Robert J.: Database Design for Smarties: Using UML for Data Modelling;
Morgan Kaufmann, 1999.
[82] Muller Robert J.: Database Design for Smarties: Using UML for Data Modelling;
Morgan Kaufmann, 1999.
[83] Tsichritzis, 1982: Tsichritzis, F.H. Lochovsky: Data Models; Prentice-Hall, Englewood
Cliffs, New Jersey, 1982.
[84] Ullman Jeffrey D., Widom Jennifer D: A First Course in Database systems, (First edition
1997, second edition published in October, 2001.) Prentice Hall, 2002.
65
Scînteie Rodian Baze de date şi algoritmi pentru căi de comunicaţie
ISBN 973-86343-3-4 Editura Societăţii Academice „Matei-Teiu Botez”
Iaşi 2003
ALGEBRA RELAŢIONALĂ ŞI
LIMBAJE DE BAZE DE DATE
66
Baze de date şi algoritmi pentru căi de comunicaţie
operatorului de proiecţie are m coloane extrase din relaţia r. Atributele (coloanele) din
r care nu sunt enumerate nu se păstrează. Duplicatele nu se reţin.
Exemplu: Se consideră o relaţie r de forma:
A1 A2 A3 A4
DN 1 100 345
DN 12 6 200
DN 1 78 555
DJ 105 1 000
DJ 105 1 780
DN 1 13 762
DJ 1 45 300
Definim proiecţia π A1, A 2 (r ) . Rezultatul operaţiei este:
A1 A2
DN 1
DN 12
DJ 105
DJ 1
Selecţia
Operaţia de selecţie – notată cu σ P (r ) – este definită prin
σ P (r ) := {s (s ∈ r ), P(s )}. Aplicarea acestui operator va returna o submulţime a relaţiei
r care verifică expresia condiţională P. Expresia P se supune regulilor calculului
propoziţional. Mai multe condiţii pot fi conectate prin operatori logici ( ∧ şi, ∨ sau,
¬ nu)
Exemplu: Pentru relaţia r din exemplul anterior definim σ A1= DN ∧ A2=1 (r )
A1 A2 A3 A4
DN 1 100 345
DN 1 78 555
DN 1 13 762
67
Capitolul 5 – Algebra relaţională şi limbaje de baze de date
Produsul cartezian
Considerând două relaţii r1 şi r2 se defineşte produsul cartezian r1 × r2 ca
fiind r1 × r2 := {pq p ∈r1 , q ∈ r2 }. Această operaţie presupune că cele două relaţii sunt
disjuncte ( r1 ∩ r2 = φ ). Dacă nu sunt disjuncte se aplică operaţia de redenumire.
Exemplu
Considerăm relaţia r1 de forma:
A1 A2 A3 A4
DN 1 100 500
DN 3 7 333
DN 50 113 700
şi r2 de forma:
B1 B2 B3
DN 1 E
DN 3 P
DN 50 S
produsul lor cartezian este:
A1 A2 A3 A4 B1 B2 B3
DN 1 100 500 DN 1 E
DN 1 100 500 DN 3 P
DN 1 100 500 DN 50 S
DN 3 7 500 DN 1 E
DN 3 7 333 DN 3 P
DN 3 7 700 DN 50 S
DN 50 113 500 DN 1 E
DN 50 113 333 DN 3 P
DN 50 113 700 DN 50 S
68
Baze de date şi algoritmi pentru căi de comunicaţie
Uniunea
Operaţia de uniune ( r1 U r2 ) se defineşte ca r1 U r2 := {r (r ∈ r1 ) ∨ (r ∈ r2 )} .
Relaţiile trebuie să aibă acelaşi număr de atribute şi atributele să fie compatibile.
Exemplu: Se consideră o relaţie r1 de forma:
A1 A2 A3 A4
DN 1 100 345
DN 12 6 200
DN 1 78 555
DN 1 13 762
şi relaţia r2 de forma:
A1 A2 A3 A4
DJ 105 1 000
DJ 105 1 780
DJ 1 45 300
uniunea lor r1 U r2 are forma:
A1 A2 A3 A4
DN 1 100 345
DN 12 6 200
DN 1 78 555
DN 1 13 762
DJ 105 1 000
DJ 105 1 780
DJ 1 45 300
Diferenţa
Operaţia de diferenţă ( r1 − r2 ) se defineşte ca r1 U r2 := {r (r ∈ r1 ) ∧ (r ∉ r2 )} .
Relaţiile r1 şi r2 trebuie să aibă acelaşi număr de atribute şi atributele trebuie să fie
compatibile.
69
Capitolul 5 – Algebra relaţională şi limbaje de baze de date
Exemplu: Se consideră o relaţie r1 de forma:
A1 A2 A3 A4
DN 1 100 345
DN 12 6 200
DN 1 78 555
DN 1 13 762
şi relaţia r2 de forma:
A1 A2 A3 A4
DN 12 6 200
DN 1 13 762
diferenţa lor r1 − r2 are forma:
A1 A2 A3 A4
DN 1 100 345
DN 1 78 555
Pe lângă aceste operaţii se mai pot defini intersecţia şi îmbinarea (join) care
însă sunt redundante. De exemplu, intersecţia poate fi definită ca:
P I Q = P − (P − Q ) . Chiar dacă nu sunt strict necesari pentru a face setul de
operatori să fie complet, aceşti noi operatori, şi alţii asemenea, pot face interogările
mai simple.
COMANDA SELECT
Sintaxa comenzii SELECT
SELECT este comanda de bază în manipularea datelor.
71
Capitolul 5 – Algebra relaţională şi limbaje de baze de date
Această comandă se bazează pe algebra relaţională şi are următoarea sintaxă
fundamentală:
SELECT [ALL | DISTINCT] <lista numelor de coloane>|*
FROM <lista tabelelor>
[WHERE <expresie logică de condiţionare>]
[ORDER BY < lista numelor de coloane>]
[GROUP BY < lista numelor de coloane>]
[HAVING < expresie logică de condiţionare >]
72
Baze de date şi algoritmi pentru căi de comunicaţie
Trebuie ca operaţia să fie privită atent şi precaut pentru că DISTINC
returnează numai prima linie întâlnită dintre cele similare şi există posibilitatea ca
tocmai această linie să fie inutilizabilă.
Dacă suntem interesaţi să listăm toate podurile care au lungimea mai mare
decât o lungime minimă atunci comanda va avea forma:
SELECT *
FROM Poduri
WHERE Lungime > 40.0
73
Capitolul 5 – Algebra relaţională şi limbaje de baze de date
singur caracter ( _ ) sau pot indica un interval în care un anumit caracter poate lua
valori ([-]).
Ordonarea rezultatelor
Rezultatele interogării se afişează în conformitate cu poziţia lor în tabele.
Este totuşi necesar adesea să se stabilească o anumită ordine. Acest lucru se poate
face utilizând clauza ORDER BY urmată de o listă de coloane separate prin virgulă,
fiecare dintre ele putând fi urmate de cuvântul cheie ASC (ascendent) sau DESC
(descendent). Implicit ordonarea se face în ordine ascendentă.
Exemplu
SELECT Prenume, Nume, Salariu
FROM Personal
ORDER BY Salariu DESC, Nume, Prenume
Gruparea rezultatelor
Uneori este important ca operaţiile şi afişarea rezultatelor să se facă pe grup
de înregistrări. Aceste operaţii sunt permise de includerea în comandă a clauzei
GROUP BY. Funcţiile utilizabile în astfel de situaţii dau o imagine statistică a
grupurilor. Funcţiile agregate ce pot fi utilizate sunt: AVG() pentru calculul mediei,
COUNT() care numără liniile din grup, MAX() şi MIN() care aleg maximul respectiv
minimul selecţiei, SUM() care calculează suma şi STD() sau STDDEV() pentru
calculul deviaţiei standard (ultima funcţie este o extensie a limbajului şi depinde de
implementare).
74
Baze de date şi algoritmi pentru căi de comunicaţie
Exemplu
SELECT Sectie, COUNT(*), AVG(Salariu),
Max(Salariu), SUM(Realizări)
FROM Personal
ORDER BY Sectie
GROUP BY Sectie
Lucrul cu joncţiuni
Exemplele de interogare de mai sus au fost date pentru lucrul cu o singură
tabelă. Totuşi sintaxa clauzei FROM este:
FROM <lista tabelelor>
permiţând includerea numelui mai multor tabele simultan.
Pentru a simplifica structura tabelelor şi a minimiza spaţiul utilizat, datele
trebuie stocate convenabil în mai multe tabele. În momentul utilizării datele din tabele
trebuie combinate. Acest lucru este posibil prin utilizarea joncţiunilor.
Joncţiunea se realizează prin efectuarea produsului cartezian al tabelelor
implicate în ordinea precizată de clauza ORDER BY. Clauza WHERE elimină toate
elementele produsului cartezian care nu îndeplinesc expresia logică de condiţionare.
Deoarece în două tabele diferite pot apare coloane cu acelaşi nume se identifică unic
fiecare coloană prin indicarea numelui tabelei urmat de caracterul ”.” urmat de
numele coloanei.
Acest tip de joncţiune este opţiunea naturală şi se numeşte joncţiune internă
(inner join).
Dacă alegerea prin clauza WHERE se face prin verificarea egalităţii a două
coloane atunci joncţiunea poartă numele de echi-joncţiune (joncţiune echivalentă).
Exemplu
SELECT NumeDrum, PozKm, NumeDistr
FROM Poduri, District
WHERE Poduri.CodDistr = District.CodDistr
Dacă însă alegerea prin clauza WHERE se face prin verificarea unei
inegalităţii între coloane sau combinaţii de coloane atunci joncţiunea poartă numele
de non-echi-joncţiune (joncţiune neechivalentă).
75
Capitolul 5 – Algebra relaţională şi limbaje de baze de date
Joncţiuni externe
O joncţiune externă este o joncţiune în care fiecare înregistrare
corespunzătoare din cele două tabele este inclusă într-o înregistrare rezultat chiar dacă
nu îndeplineşte condiţiile. Asemenea înregistrare va furniza coloane cu conţinut
NULL.
Exemplu
Presupunând că în tabela Poduri avem coloana IndStare de tip numeric în
care se stochează un indicator de stare tehnică. Cu următoarea comandă vom afişa
toate podurile la care indicele de stare este sub medie.
SELECT *
FROM Poduri
WHERE IndStare <
(
SELECT AVG(IndStare) FROM Poduri
)
OPERAŢII DE ASAMBLARE
Rezultatul comenzilor de interogare poate fi combinat utilizând operaţiile
definite de algebra relaţională. Aceste operaţii se efectuează între două comenzi
SELECT. Operatorii sunt UNION, INTERSECT şi EXCEPT.
Operatorul UNION
Operatorul UNION realizează reuniunea setului de tuple generate ca rezultat
a două comenzi SELECT. Sintaxa are forma:
SELECT ---
UNION [ALL]
SELECT ---
77
Capitolul 5 – Algebra relaţională şi limbaje de baze de date
Exemplu
Pentru a prezenta o listă completă a adreselor complete a tuturor unităţilor din
administraţie. Datele sunt păstrate în două tabele Directii şi Sectii. Pe fiecare dintre
cele două tabele se execută o interogare care are ca rezultat coloanele Denumire,
Adresa, Telefon. Rezultatele sunt reunite prin operatorul UNION. Comanda completă
este:
SELECT Denumire, Adresa, Telefon
FROM Sectii
UNION
SELECT Denumire, Adresa, Telefon
FROM Districte
Operatorul INTERSECT
Operatorul INTERSECT realizează operaţia de intersectare a seturilor de
tuple generate ca rezultat a două comenzi SELECT. Sintaxa are forma:
SELECT ---
INTERSECT
SELECT ---
Operatorul EXCEPT
Operatorul EXCEPT realizează operaţia de diferenţă a seturilor de tuple
generate ca rezultat a două comenzi SELECT, adică se păstrează numai acele linii
care fac parte din primul set dar nu fac parte din cel de-al doilea.
78
Baze de date şi algoritmi pentru căi de comunicaţie
Sintaxa are forma:
SELECT ---
INTERSECT
SELECT ---
79
Capitolul 5 – Algebra relaţională şi limbaje de baze de date
Dacă într-o coloană se acceptă doar valoare unică (clauza UNIQUE la creare)
şi se adaugă o valoare deja existentă se generează o eroare.
Se adaugă numai una, mai multe sau nici o linie funcţie de îndeplinirea
condiţiei ataşate clauzei WHERE.
Dacă într-o coloană se acceptă doar valoare unică (clauza UNIQUE la creare)
şi se adaugă o valoare deja existentă se generează o eroare.
Se respectă aceleaşi reguli ca la adăugarea de linii prin valoare. Atribuirea
valorilor se face în ordinea în care au fost incluse în listă. Nu este obligatoriu ca o
coloană din lista clauzei SELECT să aibă acelaşi nume cu coloana corespunzătoare
din lista clauzei INTO. În lista de coloane inclusă în clauza SELECT nu trebuie să
apară coloane din tabela NumeTabela.
Exemple
1. Adăugarea unei linii prin declararea explicită a valoarilor:
INSERT
INTO Poduri( NumeDrum, PozKm, Obstacol,
Lungime, Latime, District)
VALUES ( "DN87Q", 89.779, "Râul Repedea",
167.78, 12.40, "NEGRILA" )
80
Baze de date şi algoritmi pentru căi de comunicaţie
MODIFICAREA DATELOR DINTR-O TABELĂ
Datele deja introduse într-o tabelă pot fi modificate atunci când condiţiile o
cer. Pentru aceasta standardul SQL a definit comanda UPDATE. Aceasta are sintaxa:
UPDATE NumeTabela
SET Coloana1 = valoare1
[, Coloana2 = valoare2 ]
[, Coloana3 = valoare3 ]
[ ... ]
WHERE <expresie logică de condiţionare>
Exemplu
UPDATE Poduri
SET District = "FRUMUSENI"
WHERE (District ="NEGRILA") and
(NumeDrum = "DN87Q") and
(PokKm<= 109.543)
Comanda DELETE are clauzele FROM pentru a indica numele tabelei în care
se execută operaţia şi WHERE pentru a face selecţia liniilor care se elimină.
81
Capitolul 5 – Algebra relaţională şi limbaje de baze de date
Exemplu
După ce un sector de drum a fost trecut dintr-o categorie în alta, lucrările de
artă aferente nu se mai află în administrarea instituţiei care posedă baza de date. Din
considerente istorice se pot păstra datele în arhive, ceea ce presupune un transfer
utilizând comanda INSERT, dar datele despre fiecare în parte se şterg din tabela de
gestiune curentă. Pentru aceasta utilizăm o comandă DELETE de forma:
DELETE FROM Poduri
WHERE (NumeDrum="DN87Q")and(PokKm<=109.855)
CREAREA TABELELOR
SQL permite definirea de tabele noi. Acest lucru asigură flexibilitate în
procesare şi posibilitatea de dezvoltare a aplicaţiilor prin lărgirea tipului şi cantităţii
de date stocate.
Comanda specifică pentru adăugarea de tabele în baza de date este
„CREATE TABLE”. Prin această comandă se specifică numele tabelei care se
creează, numele, tipul şi caracteristicile coloanelor care i se ataşează.
84
Baze de date şi algoritmi pentru căi de comunicaţie
Pe lângă acestea există multe alte tipuri care au fost definite numai în câteva
implementări. Unele dintre cele mai întâlnite sunt TIME care stochează ora în
formatul 12:59:59.99 şi TIMESTAMP care stochează data şi ora.
Respectând în linii mari prescripţiile ANSI/ISO fiecare implementare a
încercat să satisfacă nevoilor specifice cărora trebuie să le răspundă.
Ca un exemplu Oracle7 suportă următoare tipuri:
Note:
1. Tipul LONG mai este numit şi MEMO în alte sisteme de gestiune. Se
foloseşte pentru stocarea de texte foarte lungi.
2. Tipul LONG RAW mai este numit şi BLOB (Binary Large OBject).
Poate servi pentru stocarea de date reprezentate binar precum
fotografii, grafice, sunet, imagini în mişcare etc. Acest tip de
date este cel mai des utilizat în sistemele multimedia.
Tipurile de date şi structura lor evoluează. Ele devin tot mai complexe pe
măsură ce noi concepte apar în informatică. În setul standard se includ tipuri de date
mulţime, tablouri de date, date de tip obiecte grafice, posibilitatea ca utilizatorul să-şi
definească propriile structuri şi tipuri de date care să poată fi utilizate ulterior pentru
stocare.
Un exemplu este dat de evoluţia tipurilor standard de date definite pentru
SQL99 comparativ cu tipurile de date definite în standardele anterioare.
85
Capitolul 5 – Algebra relaţională şi limbaje de baze de date
SQL99
Tipuri de date
Exacte Date
Aproximative Time
TimeStamp
Fix
Fix Variabil
Variabil
CLOB
Expresii de restricţie
Expresiile de restricţie sunt clauze ce forţează valorile introduse de utilizator
într-o coloană să respecte anumite reguli.
86
Baze de date şi algoritmi pentru căi de comunicaţie
Aceste reguli se definesc la crearea tabelei cu ajutorul unor cuvinte cheie
listate în continuare:
• DEFAULT
• NOT NULL
• UNIQUE
• CHECK
Regulile introduse prin aceste clauze au efect pe toată durata existenţei tabelei
sau până când tabela este alterată.
Verificarea unicităţii
Clauza UNIQUE permite verificarea faptului că valoarea unui câmp nu există
deja în tabelă. Aceasta garantează că toate valorile din câmp sunt diferite.
87
Capitolul 5 – Algebra relaţională şi limbaje de baze de date
Exemplu de utilizarea a restricţiilor
Prezentăm în continuare un exemplu de creare a unei tabele prin comanda
CREATE TABLE în care se utilizează clauzele de restricţie.
CREATE TABLE Pod(
ID char(9) NOT NULL UNIQUE
TipDrum char(2) NOT NULL DEFAULT "DN",
Drum char(4) NOT NULL,
Km integer(3) CHECK(Km>0),
M integer(3) CHECK(M>0)
AnContr integer check (AnConstr > 1850)
)
89
Capitolul 5 – Algebra relaţională şi limbaje de baze de date
Ştergerea componentelor bazei de date
Se poate renunţa la prezenţa unor tabele, indecşi şi viziuni atunci când acestea
devin inutile. Pentru aceasta se utilizează comanda DROP. Această comandă trebuie
bine gândită înainte de a fi utilizată pentru că efectele sale sunt definitive şi
ireversibile.
90
Baze de date şi algoritmi pentru căi de comunicaţie
ALTER TABLE NumeTabela
DROP COLUMN NumeColoana
ATRIBUIREA PRIVILEGIILOR
Prin comanda GRANT se pot acorda privilegii unuia sau mai multor
utilizatori asupra unui sau mai multor elemente din baza de date.
Comanda GRANT are formatul:
GRANT <listă de drepturi>
ON <listă de componente>
TO <listă de utilizatori>
[WITH GRANT OPTION]
RETRAGEREA PRIVILEGIILOR
Dacă drepturile acordate nu mai sunt necesare, ele pot fi retrase. Comanda
REVOKE asigură retragere drepturilor unui utilizator.
REVOKE
[GRANT OPTION FOR] <listă de drepturi>
ON <listă de componente>
FROM <listă de utilizatori>
Clauza WITH GRANT OPTION retrage utilizatorilor dreptul de a transmite
mai departe privilegiile primite prin comanda GRANT.
Lista de drepturi poate fi înlocuită cu cuvântul cheie ALL şi se retrag toate
privilegiile. Privilegiile retrase pentru o tabelă pot fi limitate la un număr de coloane
92
Baze de date şi algoritmi pentru căi de comunicaţie
prin asocierea listei de coloane la lista de drepturi. În locul listei de utilizatori se poate
utiliza cuvântul cheie PUBLIC şi privilegiile se retrag tuturor utilizatorilor.
CONTROLUL TRANZACŢIILOR
Sistemele de gestiune a bazelor de date trebuie să ofere mecanisme de
asigurarea a consistenţei datelor.
De exemplu, dacă se şterge o înregistrare dintr-o tabelă de inspecţii trebuie să
se şteargă şi înregistrările corespunzătoare dintr-o tabelă cu defectele constatate în
timpul inspecţiei. Totodată, dacă se introduce o valoare de apreciere pentru un defect
atunci trebuie să se reevalueze starea tehnică. Toate acestea şi multe altele se fac
automat prin controlul tranzacţiilor.
Un astfel de mecanism de control al tranzacţiilor se numeşte în SQL trigger
(declanşator).
Trigerii sunt funcţii a căror acţiune este iniţiată de evenimente care apar în
sistem. Se pot urmări patru categorii de evenimente:
• Crearea unei noi înregistrări;
• Ştergerea unei înregistrări existente;
• Actualizarea unei înregistrări existente;
• Citirea unei înregistrări existente.
Ultimul dintre evenimente este mai rar utilizat şi de aceea uneori nici nu este
implementat.
Un trigger se poate crea cu comanda CREATE TRIGGER care are sintaxa
următoare:
CREATE TRIGGER <nume>
{BEFORE | AFTER} {<eveniment>[OR ...]}
ON <tabela> FOR EACH { ROW | STATEMENT }
EXECUTE PROCEDURE <funcţie ( argumente )>
93
Capitolul 5 – Algebra relaţională şi limbaje de baze de date
argumente lista de argumente care se furnizează funcţiei.
unde:
nume reprezintă numele unui trigger deja definit.
Triggerul identificat prin nume care este ataşat tabelei specificate este
eliminat. Dacă numele său nu se regăseşte în baza de date se generează o eroare. Dacă
se specifică opţiunea RESTRICT se respinge executarea comenzii dacă triggerul are
ataşate obiecte dependente. Dacă se specifică opţiunea CASCADE toate obiectele
dependente se elimină automat.
5.6. BIBLIOGRAFIE
[85] *** – Mimer SQL - Reference Manual, Version 8.2; Mimer Information Technology AB,
Uppsala, Sweden 2000.
[86] Browne Allen, Balter Alison: Bazele Access 95; Editura Teora, Bucureşti 1998.
[87] CAE specification, Structured Query Language (SQL), Version 2. X/Open document
number: C449. ISBN: 1-85912-151-9.
[88] Din Akeel I.: Structured Query Language (SQL) – A practical introduction; Blackwell,
[89] ISO/IEC 9075:1992(E) Information technology–Database languages–SQL: International
Standard for the Database Language SQL; ISO 9075:1992.
[90] ISO/IEC 9075-1:1999(E) Information technology - Database languages – SQL; Part 1:
Framework (SQL / Framework); ISO 9075-1:1999.
[91] ISO/IEC 9075-2:1999(E) Information technology - Database languages – SQL; Part 2:
Foundation (SQL / Foundation); ISO 9075-2:1999.
94
Baze de date şi algoritmi pentru căi de comunicaţie
[92] ISO/IEC 9075-3:1999(E) Information technology - Database languages – SQL; Part 3:
Call-Level Interface (SQL / CLI); ISO 9075-3:1999.
[93] ISO/IEC 9075-4:1996(E) Database Language SQL - Part 4: Persistent Stored Modules
(SQL/PSM); ISO 9075-4:1996.
[94] ISO/IEC 9075-4:1999(E) Information technology - Database languages – SQL; Part 4:
Persistent Stored Modules (SQL / PSM); ISO 9075-4:1999.
[95] ISO/IEC 9075-5:1999(E) Information technology - Database languages – SQL; Part 5:
Host Language Bindings (SQL / Bindings); ISO 9075-5:1999.
[96] Luers Tom: Bazele Oracle7; Editura Teora, Bucureşti 1998.
[97] Perkins Jeff, Morgan Bryan: SQL fără profesor, în 14 zile; Editura Teora, Bucureşti
1998.
[98] Popa Gheorghe, et al.: Sisteme de gestiune a bazelor de date; Editura ALL, Bucureşti
1994.
95
Scînteie Rodian Baze de date şi algoritmi pentru căi de comunicaţie
ISBN 973-86343-3-4 Editura Societăţii Academice „Matei-Teiu Botez”
Iaşi 2003
96
Baze de date şi algoritmi pentru căi de comunicaţie
6.1. NECESARUL DE DATE