baze_date

71
1 Cristian Georgescu Mihaela Georgescu BAZE DE DATE

Transcript of baze_date

Page 1: baze_date

1

Cristian Georgescu Mihaela Georgescu

BAZE DE DATE

Page 2: baze_date

2

CUPRINS

1. Date, informaţii, cunoştinţe.................................................3

1.1. Locul şi rolul datelor în sistemul informatic .................................. 3 1.2. Locul şi importanţa informaţiei în sistemul informaţional ............ 4 1.3. Evoluţia organizării datelor în sistemul informatic........................ 6 1.4. Probleme rezolvate şi propuse ..................................................... 10

2. Organizarea datelor în fişiere ...........................................11 2.1. Noţiunea de fişier ......................................................................... 11

3. Organizarea datelor în baze de date ................................13 3.1. Conceptul de bază de date............................................................ 13 3.2. Sistemul de gestiune a bazelor de date......................................... 24 3.3. Baze de date relaţionale ............................................................... 32

3.3.1. Conceptele folosite pentru bazele de date relaţionale .......... 32 3.3.2. Operatorii relaţionali ............................................................ 43 3.3.3. Normalizarea bazelor de date relaţionale............................. 53

3.3.3.1. Formele normale ale unei baze de date relaţionale ...... 55 3.4. Modelele pentru proiectarea unei baze de date ............................ 56 3.5. Caracteristici ale sistemelor cu baze de date................................ 58 3.6. Probleme rezolvate şi propuse ..................................................... 61

4. Bibliografie..........................................................................70

Page 3: baze_date

3

1. Date, informaţii, cunoştinţe

1.1. Locul şi rolul datelor în sistemul informatic

Preluarea datelor în sistemul informatic poate începe din momentul şi de la locul generării lor şi este condiţionată direct de cerinţele de informare a sistemului deservit de sistemul informatic, de necesităţile de valorificare a informaţiei preluate din mediul extern sistemului informatic. Datele preluate în sistemul informatic din mediul extern trebuie să fie: reprezentative, reale, complete şi actuale. În utilizarea unui sistem informatic se aplică regula GIGO (Garbage In Garbage Out), care este echivalentă cu enunţul: pentru a furniza informaţii utile, sistemul informatic trebuie alimentat cu date de bună calitate.

Sistemul informatic se defineşte în raport cu sistemul informaţional al organizaţiei care cuprinde totalitatea informaţiilor vehiculate în întreprindere, la un moment dat, alături de suporţii de informaţie corespunzători, circuitul informaţional şi prelucrările efectuate asupra informaţiilor. Atunci când gestionarea informaţiilor în sistemul informaţional se face utilizând tehnologia informatică, sistemul se numeşte sistem informatic.

Într-un sistem informatic datele au un dublu rol. În primul rând ele sunt obiect al prelucrării (materie primă). Prelucrarea datelor într-un sistem informatic este un proces creator de valoare, care cuprinde:

- preluarea datelor din mediul exterior şi memorarea lor în memoria externă a sistemului de calcul;

- manevrarea şi reorganizarea datelor, prin ordonare, grupare, interclasare, selecţie (filtrare), modificarea suportului de memorare, etc.

- procesarea datelor, ce poate avea ca rezultat generarea de noi date, cu noi semnificaţii informaţionale;

- analiza şi evaluarea conţinutului informaţional al datelor; - prezentarea datelor într-o formă care să satisfacă necesităţile

informaţionale ale utilizatorului. Din acest punct de vedere, datele se caracterizează prin volum şi prin dinamică;

atât volumul datelor cât şi volumul modificărilor asupra lor sunt factori determinanţi pentru alegerea modului de organizare a datelor. În al doilea rând, datele sunt principala resursă a sistemului informatic, alături de celelalte resurse: personalul specializat, echipamentele electronice de calcul şi instrumentele logice (programele utilizate, metodele de analiză şi proiectare, metodele şi tehnicile de organizare şi prelucrare a datelor). Altfel spus, principalele resurse sunt reprezentate de: hardware, software şi dataware.

Page 4: baze_date

4

Valorificarea resursei de date se realizează prin prelucrările efectuate cu ajutorul programelor şi cu sprijinul factorului uman şi al componentei hardware. Este recunoscut că celelalte trei resurse ale sistemului informatic nu au valoare efectivă, în lipsa resursei de date.

Prelucrarea electronică a datelor nu trebuie să constituie un scop în sine. Înlocuirea sau, uneori, dublarea activităţii de înregistrare manuală a datelor prin înregistrarea lor folosind tehnologia informatică este inutilă dacă, în urma prelucrării electronice a datelor, nu se obţin efecte suplimentare, cum ar fi:

- înlăturarea unor operaţii manuale de prelucrare; - realizarea de prelucrări complexe în timp mai scurt sau pentru volume

de date atât de mari încât nu pot fi prelucrate manual; - creşterea gradului de accesibilitate şi de acurateţe; - reducerea volumului suporţilor de arhivare a datelor şi creşterea

siguranţei în stocarea şi prelucrarea lor, etc. Introducerea prelucrării automate a datelor adaugă timpi noi necesari operaţiilor specifice de prelucrare: proiectarea şi întreţinerea sistemului informatic, preluarea datelor, validarea şi corectarea erorilor apărute la preluare, prelucrări suplimentare pentru întreţinerea şi asigurarea datelor.

Un sistem informatic este eficient atunci când asigură, în aceste condiţii: - diminuarea timpilor necesari operării asupra datelor; - diminuarea semnificativă a operaţiilor manuale, slab productive; - un nivel de prelucrare a datelor performat; - înlăturarea barierelor generate de distanţele fizice, în cadrul sistemului; - reducerea costurilor implicate de gestionarea datelor; - o mai bună valorificare a datelor, în sprijinul activităţii întregii

organizaţii.

1.2. Locul şi importanţa informaţiei în sistemul informaţional

Nu orice prelucrare de date generează informaţii. O trăsătură a informaţiei este caracterul ei relativ: ceea ce poate constitui o informaţie pentru o persoană, poate să nu aibă nici o semnificaţie pentru alta. Mai mult, pornind de la acelaşi set de date, persoane diferite, prin prelucrări diferite, pot desprinde informaţii diferite.

Se consideră că sistemul informaţional al unei organizaţii cuprinde ansamblul mijloacelor şi procedurilor de identificare, preluare, memorare, prelucrare şi difuzare a informaţiei şi are ca obiectiv furnizarea de informaţii membrilor organizaţiei, într-o formă direct utilizabilă şi în timp util, asigurând suportul informaţional al activităţii acestora1.

1 Georgescu C. - "Analiza şi proiectarea sistemelor informatice", Editura Radical, Galaţi, 1999

Page 5: baze_date

5

Obiectivul general al dezvoltării sistemului informaţional şi al perfecţionării acestuia cu ajutorul unui sistem informatic este ridicarea eficienţei activităţii de bază. Realizarea unui sistem informatic poate determina reorganizarea sistemului informaţional care-l conţine, putând avea ca efecte:

- integrarea firească, naturală, a sistemului informatic în sistemul informaţional;

- perfecţionarea sistemului informaţional, prin ameliorarea naturii şi conţinutului informaţiei vehiculate în sistemul informaţional, îmbunătăţirea fluxurilor de informaţii, perfecţionarea prelucrărilor efectuate asupra informaţiei, prin modificarea naturii, locului sau a periodicităţii acestora, înlăturarea prelucrărilor repetate sau paralele asupra informaţiilor, etc.

Efectele perfecţionării sistemului informaţional pot fi: - reducerea caracterului birocratic al sistemul informaţional; - o mai bună alimentare cu informaţii la toate nivelurile organizatorice,

inclusiv la nivelul conducerii; - optimizarea prelucrărilor prin înlăturarea redundanţelor operaţionale

sau informaţionale; - evitarea situaţiilor de alterare, pierdere sau chiar distrugere a

informaţiei, etc. Obiectivul specific este asigurarea la timp a informaţiilor de calitate necesare

pentru activitatea de bază. Dacă datele sunt informaţii codificate pentru a fi memorate sau prelucrate într-

un sistem de calcul, informaţia este rezultatul prelucrării datelor în sistemul de calcul şi exprimării lor într-o formă inteligibilă pentru receptorul uman. Se poate spune că sistemul informaţional lucrează cu informaţii în timp ce sistemul informatic lucrează cu date.

Mai general, informaţia poate fi definită ca ansamblul de date care constituie suportul unui comportament, este comprehensibilă şi este utilizabilă pentru îndeplinirea unei activităţi, inclusiv un proces decizional1.

Informaţiile sunt destinate nivelurilor şi punctelor de informare sau de decizie, pentru sistemul dat şi, în cazul sistemelor ierarhizate, pentru nivelurile ierarhic superioare (ca suport pentru decizie) şi pentru cele inferioare (în cazul descentralizării procesului informaţional-decizional). Pentru nivelurile superioare ale ierarhiei, informaţia trebuie supusă unui proces de rafinare, prin concentrare şi sistematizare, pentru a fi furnizată într-o formă cât mai concisă şi cât mai expresivă. Circulaţia informaţiei către nivelurile inferioare ale ierarhiei este practicată în organizaţiile care au în vedere accesul liber la informaţie pentru membrii lor. În acest caz trebuie folosite metode cât mai eficiente de diseminare a informaţiei, pentru a se evita alterarea informaţiei transmise, prin învechire, trunchiere, modificare, etc. O bună soluţie este utilizarea reţelei de calculatoare, ca suport fizic al sistemului informatic, şi folosirea unui intranet de întreprindere, ca mediu de comunicare şi gestionare a informaţiei în timp real în cadrul organizaţiei. 1 Fotache M. - "Baze de date relaţionale", Editura Junimea, Iaşi, 1997

Page 6: baze_date

6

Informaţia furnizată de un sistem informatic este utilizată în cadrul activităţii unei organizaţii în scopul cunoaşterii, ca suport pentru decizie. Din acest punct de vedere, informaţia poate fi definită ca volumul de date necesar pentru a reduce incertitudinea, în vederea luării unei decizii.

În societatea contemporană, informaţia a devenit una dintre principalele resurse ale organizaţiilor economice, sociale, culturale, politice, etc. De exemplu în economie, conform afirmaţiei lui Peter Drucker, "resursa economică de bază nu mai este capitalul şi nici resursele naturale, nici munca. Ea este şi va fi cunoaşterea.[…] Valoarea este creată acum de productivitate şi inovaţie, amândouă fiind aplicări ale cunoaşterii în cadrul muncii."1

Dar cunoştinţele nu sunt altceva decât informaţii dobândite prin experienţă sau însuşite prin educaţie. La rândul lor, informaţiile sunt reflectări ale lumii reale în conştiinţa colectivă, în urma unui proces de acumulare şi prelucrare a unor date elementare.

Alvin Toffler demonstrează importanţa cunoaşterii în cadrul proceselor economice, concluzionând: "întrucât reduce nevoia de materii prime, muncă, timp, spaţiu şi capital, cunoaşterea devine resursa centrală a economiei avansate."2

Cunoaşterea se bazează pe informaţii. Corelat cu dezvoltarea explozivă a tehnologiei informatice din ultimele decenii, este de neconceput, astăzi, gestionarea informaţiilor fără a utiliza metodele şi instrumentele oferite de aceasta. Pentru a fi utilizate eficient, volumele mari de informaţii vehiculate în economie, societate, etc. trebuie gestionate corespunzător, păstrate atâta timp cât sunt necesare, prelucrate şi furnizate la locul unde sunt necesare şi în momentul când sunt solicitate.

1.3. Evoluţia organizării datelor în sistemul informatic

Organizarea datelor în cadrul unui sistem informatic se referă la modul de agregare a datelor în structuri specifice şi la legăturile logice care se definesc în interiorul şi între aceste structuri, în funcţie de necesităţile de prelucrare şi de stocare, în scopul utilizării eficiente a informaţiei care alimentează sistemul informatic.

Concret, organizarea datelor defineşte modul de structurare a datelor în colecţii, precum şi stabilirea legăturilor între elementele unei colecţii şi între colecţii3. În general, metodelor de organizare a datelor le sunt asociate tehnici specifice de prelucrare a acestor date, care se descriu odată cu metoda de organizare.

1 Peter Drucker - "Societatea postcapitalistă" , Editura Image, 1999 2 Alvin Toffler - "Powershift - puterea în mişcare", Editura Antet, 1995 3 Velicanu M.,Bodea C.,Lungu I.,Ioniţă C.,Bădescu G. - "Sisteme de gestiune a bazelor de date", Editura Petrion, Bucureşti, 2000

Page 7: baze_date

7

Un model de date tratează datele în ansamblu, având în vedere modul de organizare a lor şi modul în care vor fi utilizate în cadrul sistemului informatic. Obiectivul unui model de date este să reflecte cât mai bine lumea reală, într-o manieră adecvată reprezentării şi prelucrării datelor folosind tehnologia informatică, astfel încât să permită sistemului informatic să furnizeze informaţiile dorite. În consecinţă, pentru a proiecta un bun sistem informatic trebuie să se pornească de la un bun model de date iar modelele de date nu au valoare în lipsa unor modele de prelucrări corecte. Organizarea datelor poate fi abordată sub două aspecte: organizarea fizică a datelor şi organizarea logică a datelor. Organizarea fizică a datelor defineşte modul de utilizare a memoriei externe pentru memorarea datelor şi modalitatea de realizare a accesului la date, în memoria externă; organizarea fizică a datelor se referă la modul de organizare fizică a fişierelor în care se memorează datele. Organizarea logică a datelor defineşte modul de agregare a datelor, în funcţie de conţinutul lor informaţional şi de legăturile logice dintre ele, precum şi în funcţie de necesităţile de prelucrare a lor. Organizarea logică a datelor vizează criteriile de grupare a datelor şi legăturile logice dintre date. Modul de organizare a datelor în cadrul sistemelor informatice diferă, în funcţie de complexitatea acestor sisteme şi este influenţat de diferiţi factori:

- volumul şi dinamica datelor gestionate în sistemul informatic; - tipul de date gestionate de sistem: date statice (numerice, de tip text,

elemente grafice), date multimedia (imagini, imagini animate, elemente sonore), date interconectate (hipertext sau hipermedia), etc.

- complexitatea prelucrărilor efectuate asupra datelor în sistem; - gradul de împrăştiere teritorială a componentelor sistemului

informatic: sursele de date, resursele de prelucrare, utilizatorii informaţiilor furnizate de sistem;

- timpul de răspuns al sistemului informatic, siguranţa în funcţionare, gradul de accesibilitate al sistemului, ca indicatori ai calităţii şi eficienţei sale, etc.

În timp, s-a înregistrat o evoluţie a metodelor de organizare şi a tehnicilor de prelucrare a datelor datorată dezvoltării şi diversificării mijloacelor tehnice ce pot fi utilizate într-un sistem informatic, cum ar fi dispozitivele de stocare a datelor (prin creşterea capacităţii de stocare şi a vitezei de transfer, ca şi prin diversificarea dispozitivelor de stocare direct adresabile) şi echipamentele de preluare şi de generare a datelor în diverse moduri de reprezentare (date multimedia). Un exemplu în acest sens îl constituie creşterea capacităţii şi vitezei de prelucrare a sistemului de calcul şi creşterea capacităţii memoriei interne (operative) şi a memoriei externe (de arhivare) a sistemului de calcul.

Alte influenţe au apărut prin dezvoltarea componentelor software de bază (dezvoltarea componentei SGF a sistemelor de operare, sisteme de operare în timp real, sisteme de operare pentru reţele de calculatoare, etc.), dezvoltarea componentelor software dedicate gestionării automate a datelor (sistemele de gestiune a bazelor de date, aplicaţiile pentru gestionarea foilor de calcul

Page 8: baze_date

8

electronice, etc.) şi dezvoltarea şi perfecţionarea metodelor de realizare a unui sistem informatic prin utilizarea unor instrumente performante de proiectare (medii integrate de proiectare şi dezvoltare, utilizarea unor noi metode de proiectare: proiectarea obiectuală, proiectarea vizuală, proiectarea distribuită).

Evoluţia modurilor de organizare a datelor în sistemele informatice poate fi analizată în funcţie de principalii factori care au determinat-o.

1. Dezvoltarea dispozitivelor de memorie externă. Prin trecerea de la dispozitive care nu permit adresarea directă la dispozitive direct adresabile a fost posibilă diversificarea modurilor de organizare fizică a fişierelor, prin trecerea de la organizarea secvenţială la organizarea aleatorie, cu diferitele ei variante.

2. Evoluţia componentelor software care realizează gestionarea datelor în fişiere.

Într-o primă etapă, organizarea datelor în fişiere era gestionată, în mare măsură, în cadrul programului de aplicaţie; pentru definirea şi utilizarea unui fişier, era necesară atât descrierea structurii logice de organizare a datelor în fişier cât şi a structurii fizice de memorare a datelor pe suport; în aceste condiţii, modificarea structurii datelor sau a suporţilor de memorare impunea modificări în program şi recompilarea acestuia.

Prin dezvoltarea componentei SGF a sistemului de operare, gestionarea la nivelul fizic, al suportului de memorie externă, a datelor din fişier se realizează, în mare măsură, de către aceasta, în mod transparent pentru utilizator. Comenzile care se adresează SGF-ului pentru realizarea operaţiilor cu fişierele sunt generate în cadrul programului executabil de către compilatorul limbajului de programare utilizat pentru definirea aplicaţiei utilizator. În aceste condiţii, în programul de aplicaţie nu mai este necesară descrierea modului de organizare fizică a datelor pe suportul de memorie externă, ci este definită numai structura logică a datelor din fişier.

Prin scoaterea descrierii nivelului fizic de organizare a fişierelor în afara codului aplicaţiilor se realizează o independenţă a programelor faţă de caracteristicile fizice ale organizării datelor în fişiere (unitatea de memorie externă folosită pentru memorare, modul de realizare a alocării suportului, modul de realizare efectivă a accesului la date, etc.); această independenţă este numită independenţa fizică a datelor şi permite ca modificări ale configuraţiei hardware de memorare a datelor să nu influenţeze asupra programelor de aplicaţie ce lucrează cu datele respective.

3. Evoluţia cerinţelor de utilizare a aplicaţiilor informatice. Dacă aplicaţiile informatice nu fac decât să transpună procedurile manuale de prelucrare a datelor în proceduri automate, executate cu ajutorul tehnicii de calcul, modul de organizare a datelor copie, practic, metodele de organizare a informaţiei caracteristice sistemelor de prelucrare manuală şi mecanografică a datelor, adaptându-le, fără prea multe modificări conceptuale, la noul specific al prelucrării datelor cu ajutorul calculatorului electronic. Principalul element de organizare a datelor folosit, în acest caz, este fişierul. Modelul corespunzător prelucrării manuale a informaţiei este cel al fişelor cu înregistrări de aceeaşi natură, grupate în

Page 9: baze_date

9

dosare sau dulapuri cu documente de acelaşi tip sau al registrului de evidenţă cu acelaşi tip de informaţii, ordonate după un anumit criteriu.

Odată cu creşterea complexităţii aplicaţiilor şi a volumelor de date prelucrate, apare ca o necesitate abordarea unitară a datelor de către mai multe aplicaţii din cadrul unui sistem informatic. Chiar dacă aplicaţiile sunt proiectate independent, este preferabil ca mai mulţi utilizatori, prin intermediul unor aplicaţii diferite, să poată folosi în comun aceeaşi colecţie de date. Pentru aceasta, datele trebuie organizate astfel încât să poată satisface cerinţele de prelucrare ale fiecărui utilizator, respectiv ale fiecărei aplicaţii, fără să apară o redundanţă a informaţiei. Acest deziderat se poate realiza prin înlocuirea grupurilor de fişiere destinate unor aplicaţii particulare cu un sistem complex de elemente de date a căror organizare este determinată de legăturile logice intrinseci existente între acestea şi mai puţin de modul de prelucrare din cadrul fiecărei aplicaţii1.

Cerinţa de control şi minimizare a redundanţei în reprezentarea datelor, este numită cerinţă de integrare a fişierelor de date care se poate rezolva prin definirea unor legături între înregistrările fişierelor ale căror date sunt corelate logic între ele. Dacă aceste legături dintre date sunt definite în interiorul fişierelor, rezultă fişiere cu înregistrări înlănţuite, numite fişiere înlănţuite sau integrate. Fişierele integrate permit realizarea mai multor fişiere logice pe baza aceloraşi date fizice2.

Acest mod de organizare a datelor permite obţinerea unor imagini diferite ale datelor memorate în fişierele integrate şi reducerea riscului privind inconsistenţa datelor, ca urmare a reducerii redundanţei lor. Se poate realiza astfel o primă formă de abordare unitară a datelor în cadrul unui sistem informatic.

Pentru conceperea unui model unitar al datelor, pentru întregul sistem informatic, model care să permită satisfacerea nevoilor informaţionale ale tuturor aplicaţiilor din sistem, este însă necesară abordarea globală a proiectării sistemului informatic, începând cu proiectarea structurilor de date şi construind, în jurul acestor structuri, aplicaţiile particulare. Pentru a fi posibilă o astfel de abordare trebuie îndeplinite o serie de cerinţe.

Organizarea logică a datelor trebuie definită pornind de la conţinutul logic al datelor şi de la raporturile obiective care se stabilesc între aceste date, în cadrul sistemului informaţional, şi nu pornind de la necesităţile de prelucrare a datelor, care pot fi limitate la un anumit obiectiv, un anumit orizont de timp, sau un anumit grup de utilizatori.

În realizarea sistermelor informatice nu mai este posibilă proiectarea empirică a aplicaţiilor, ci este necesară utilizarea unor metode de proiectare, care să furnizeze instrumente de lucru care să permită abordarea globală a proiectării sistemului informatic. În acest scop au fost dezvoltate metode de proiectare a sistemelor informatice care folosesc ca instrument de lucru modele pentru descrierea realităţii de la care se porneşte şi a rezultatelor dorite (modele ale

1 Dollinger R. - "Baze de date şi gestiunea tranzacţiilor", Editura Albastră, Cluj-Napoca, 1998 2 Dollinger R. – op. cit.

Page 10: baze_date

10

fluxurilor informaţionale şi ale prelucrărilor din cadrul sistemului informaţional sau modele ale organizării datelor în cadrul sistemului informatic).

Pentru obţinerea unor performanţe reale este necesară realizarea unei dependenţe minime a aplicaţiilor faţă de modul de organizare logică a datelor, astfel încât o modificare în structura datelor să nu necesite modificarea tuturor aplicaţiilor construite în jurul acestor structuri de date. În acest scop a fost scoasă în afara programelor de aplicaţie şi descrierea organizării logice a datelor din fişiere, aceasta fiind memorată solidar cu datele la care se referă, într-o structură de date numită bază de date.

1.4. Probleme rezolvate şi propuse A. Indicaţi varianta corectă de răspuns, pentru întrebările următoare: 1. Reprezintă, în acelaşi timp, obiect al prelucrărilor şi principala resursă într-un

sistem informatic: a) informaţiile b) datele c) programele.

2. Totalitatea informaţiilor vehiculate în întreprindere, alături de suporţii de informaţie corespunzători, de circuitul informaţional şi de prelucrările efectuate asupra informaţiilor desemnează: a) sistemul de calcul b) sistemul informatic c) sistemul informaţional.

3. Într-un sistem informatic: a) orice prelucrare de date generează informaţii; b) datele reprezintă singura resursă a acestuia; c) este suficient ca datele preluate din mediul extern să fie complete şi reale; d) datele reprezintă principala resursă a acestuia.

4. Regula GIGO, aplicabilă în utilizarea unui sistem informatic, este echivalentă cu enunţul: a) pentru a furniza date utile, sistemul informatic trebuie alimentat cu

informaţii de bună calitate; b) dacă datele de intrare pentru un proces sunt incorecte, informaţiile furnizate

vor fi şi ele incorecte; c) pentru a proiecta un bun model de date, trebuie să se pornească de la un bun

sistem informatic; d) pentru a furniza informaţii utile, datele din sistem trebuie tratate în

ansamblu.

Răspunsuri: 1.b, 2.c, 3.d, 4.a, 4.b

Page 11: baze_date

11

2. Organizarea datelor în fişiere

2.1. Noţiunea de fişier

Principalul instrument de stocare şi manevrare a datelor în memoria externă este fişierul. Fişierul reprezintă o colecţie de date, unitară din punct de vedere structural, logic şi funcţional, organizată în scopul memorării datelor în memoria externă şi pentru manevrarea acestor date între diferiţi suporţi de memorie externă.

Fişierul este unitatea de bază pentru organizarea datelor pe un suport de memorie externă, din punctul de vedere al sistemului de operare. Din punctul de vedere al utilizatorului, fişierul este o grupare de informaţii omogene ca semnificaţie şi ca cerinţe de prelucrare. Pornind de la această definiţie, se poate face analogia dintre înregistrările unui fişier şi fişele cu înregistrări sau rândurile din registrul de evidenţă, fişierului găsindu-i corespondent dosarul, dulapul cu fişe sau registrul din sistemul de evidenţă manuală a informaţiei.

Un fişier este alcătuit din înregistrări, care reprezintă unitatea repetabilă din cadrul fişierului, în primul rând din punctul de vedere al prelucrării datelor. În funcţie de nivelul la care sunt gestionate înregistrările, acestea sunt de două tipuri: înregistrări fizice, numite şi blocuri de date, gestionate de SGF şi înregistrări logice, numite şi articole sau, simplu, înregistrări, gestionate de utilizator.

Înregistrarea fizică reprezintă unitatea de schimb între suportul de memorie externă pe care este memorat fişierul şi memoria internă. În timp ce stocarea datelor se realizează în memoria externă, prelucrarea lor are loc în memoria internă a sistemului de calcul. Din acest motiv, în timpul prelucrării datelor dintr-un fişier, au loc permanente schimburi de date între memoria internă şi memoria externă, în ambele sensuri. Aceste schimburi de date sunt gestionate de componenta specializată a sistemului de operare numită Sistem de Gestiune a Fişierelor (SGF). Dimensiunea înregistrării fizice depinde de tipul de memorie externă utilizat, de caracteristicile sistemului şi este controlată tot de SGF.

Înregistrarea logică sau articolul reprezintă nivelul de organizare a datelor în fişier, din punctul de vedere al utilizatorului. Criteriul de grupare a datelor în înregistrări logice, în cadrul fişierului, este determinat de conţinutul logic al datelor şi de formatul lor de memorare. Din această cauză, din punctul de vedere al utilizatorului, prelucrările efectuate asupra fişierului au caracter repetitiv la nivelul înregistrărilor logice. Înregistrările logice ale unui fişier pot fi considerate unităţile elementare de prelucrare ale unui fişier, din punctul de vedere al utilizatorului.

Articolele conţin, la rândul lor, date elementare, numite câmpuri ale articolului. Câmpurile sunt definite prin: tipul datei, domeniul valorilor posibile, lungimea reprezentării în memorie, poziţia în cadrul articolului. Toate aceste informaţii sunt identice la nivelul tuturor articolelor din fişier şi definesc formatul articolului din fişier. În funcţie de lungimea articolelor, fişierele se clasifică în :

Page 12: baze_date

12

- fişiere cu format fix: acele fişiere care au toate articolele de aceeaşi lungime;

- fişiere cu format variabil, care au articole de lungimi diferite; pentru a putea fi prelucrate articolele acestor fişiere de către SGF, trebuie cunoscută lungimea fiecărui articol; aceste informaţii se memorează în antetul articolului;

- fişiere cu format nedeterminat, pentru care lungimea articolelor nu este precizată, articolele fiind separate între ele prin caractere speciale, numite delimitatori de articol.

Page 13: baze_date

13

3. Organizarea datelor în baze de date

3.1. Conceptul de bază de date

O bază de date este un ansamblu unitar de date, structurate, corelate logic între ele şi memorate împreună cu descrierea formală a structurii lor şi a legăturilor logice dintre ele, a cărui gestionare este realizată de un sistem software unitar şi specializat, numit sistem de gestiune a bazei de date.

Termenul de bază de date a apărut în anii ’60, dar momentul consacrării termenului se consideră a fi în 1969, când se publică în raportul CODASYL (Conference On Data System Language) prezentarea conceptului de bază de date.

O bază de date poate fi privită ca o colecţie de date memorate în fişiere intercorelate şi definite logic sub formă de tabele, alcătuite din linii ce corespund înregistrărilor din fişiere şi din coloane ce corespund câmpurilor din înregistrări. Într-o bază de date, datele sunt structurate, neredundante, corelate logic, consistente, independente de orice program de aplicaţie, şi pot fi direct accesibile după mai multe criterii.

Într-o bază de date se memorează atât datele propriu-zise, cât şi informaţii ce conţin descrierea modului de memorare a acestor date: formatele de descriere a datelor, modul de organizare a lor, legăturile dintre date, etc. Datele despre datele unei baze de date se numesc metadate iar descrierea formală referitoare la structura datelor şi la legăturile dintre date se memorează în dicţionarul de date organizat tot sub formă de fişier. Pe baza informaţiilor memorate în dicţionarul de date se realizează independenţa logică a datelor, care înseamnă limitarea influenţei pe care modificarea organizării logice a datelor o poate avea asupra aplicaţiilor care utilizează aceste date.

Importanţa dicţionarului de date este dată de conţinutul şi rolul său în exploatarea datelor din baza de date. El cuprinde informaţii despre structura datelor, restricţiile la care se supun datele şi raporturile logice dintre date. Lucrul cu fişierele de date se derulează exclusiv prin consultarea acestui dicţionar de date.

O altă cerinţă la care răspunde o bază de date se referă la necesitatea de a putea gestiona datele astfel organizate independent de orice program de aplicaţie şi în mod unitar pentru întreaga bază de date. În acest scop s-au dezvoltat aplicaţii specializate în gestionarea bazelor de date numite Sisteme de Gestiune a Bazelor de Date (SGBD). Un SGBD este o componentă software complexă care, pe lângă serviciile de definire, generare şi exploatare a unei baze de date, prin consultare sau prin prelucrări asupra datelor, asigură gestionarea automată a accesului unitar la datele din baza de date, precum şi protecţia acestora faţă de accese nepermise sau faţă de alterări accidentale.

Page 14: baze_date

14

205 Ionescu P. 20 B

170 Vasilache I. 22 B

223 Popescu C. 19 F

291 Matei V. 21 F

111 Oprea N. 22 B

103 Ion A. 20 F

205 Ionescu P. 20 B

170 Vasilache I. 22 B

223 Popescu C. 19 F

291 Matei V. 21 F

111 Oprea N. 22 B

103 Ion A. 20 F

205205 Ionescu P.Ionescu P. 2020 BB

170170 Vasilache I.Vasilache I. 2222 BB

223223 Popescu C.Popescu C. 1919 FF

291291 Matei V.Matei V. 2121 FF

111111 Oprea N.Oprea N. 2222 BB

103103 Ion A.Ion A. 2020 FF

07 Informatica 56

17 Economie 42

14 Matematica 56

03 Contabilitate 70

10 Filosofie 28

07 Informatica 56

17 Economie 42

14 Matematica 56

03 Contabilitate 70

10 Filosofie 28

0707 InformaticaInformatica 5656

1717 EconomieEconomie 4242

1414 MatematicaMatematica 5656

0303 ContabilitateContabilitate 7070

1010 FilosofieFilosofie 2828

103111170205223291

103111170205223291

103103111111170170205205223223291291

Ion A.Ionescu P.Matei V.Oprea N.Popescu C.Vasilache I.

Ion A.Ionescu P.Matei V.Oprea N.Popescu C.Vasilache I.

Ion A.Ion A.Ionescu P.Ionescu P.Matei V.Matei V.Oprea N.Oprea N.Popescu C.Popescu C.Vasilache I.Vasilache I.

1714100703

1714100703

17171414101007070303

2842565670

2842565670

28284242565656567070

Marca N 3Nume C 20Varsta N 2Sex C 1

Marca N 3Nume C 20Varsta N 2Sex C 1

MarcaMarca NN 33NumeNume CC 2020VarstaVarsta NN 22SexSex CC 11

Cod C 2Den C 20Ore N 2

Cod C 2Den C 20Ore N 2

CodCod CC 22DenDen CC 2020OreOre NN 22

Cod -s N 3Adr -s N 15Cod -s N 3Adr -s N 15Cod -sCod -s NN 33Adr -sAdr -s NN 1515

Nume -s C 20Adr -n N 15Nume -s C 20Adr -n N 15Nume -sNume -s CC 2020Adr -nAdr -n NN 1515

Cod -m C 2Adr -c N 15Cod -m C 2Adr -c N 15Cod -mCod -m CC 22Adr -cAdr -c NN 1515

Cod -o N 2Adr -o N 15Cod -o N 2Adr -o N 15Cod -oCod -o NN 22Adr -oAdr -o NN 1515

Student 4 26 Marca

Materie 3 24 Cod

Student -Marca

2 6 Cod -s

Student -Nume

2 24 Nume -s

Materie -Cod

2 6 Cod -m

Materie -Ore

2 6 Cod -o

Struct.Student

3 23 Cheie -s

Struct.Materie

3 23 Cheie -m

Struct.Student -Materie

3 23 Cheie -sm

Struct.Student -Nume

3 23 Cheie -sn

Struct.Materie -Cod

3 23 Cheie -mc

Struct.Materie -Ore

3 23 Cheie -mo

Student 4 26 Marca

Materie 3 24 Cod

Student -Marca

2 Cod -s

Student -Nume

2 24 Nume -s

Materie -Cod

2 6 Cod -m

Materie -Ore

2 6 Cod -o

Struct.Student

3 23 Cheie -s

Struct.Materie

3 23 Cheie -m

Struct.Student -Materie

3 23 Cheie -sm

Struct.Student -Nume

3 23 Cheie -sn

Struct.Materie -Cod

3 23 Cheie -mc

Struct.Materie -Ore

3 23 Cheie -mo

StudentStudent 44 2626 MarcaMarca

MaterieMaterie 33 2424 CodCod

Student -MarcaStudent -Marca

22 Cod -sCod -s

Student -NumeStudent -Nume

22 2424 Nume -sNume -s

Materie -CodMaterie -Cod

22 66 Cod -mCod -m

Materie -OreMaterie -Ore

22 66 Cod -oCod -o

Struct.StudentStruct.Student

33 2323 Cheie -sCheie -s

Struct.MaterieStruct.Materie

33 2323 Cheie -mCheie -m

Struct.Student -Materie

Struct.Student -Materie

33 2323 Cheie -smCheie -sm

Struct.Student -Nume

Struct.Student -Nume

33 2323 Cheie -snCheie -sn

Struct.Materie -Cod

Struct.Materie -Cod

33 2323 Cheie -mcCheie -mc

Struct.Materie -Ore

Struct.Materie -Ore

33 2323 Cheie -moCheie -mo

Tabele de dateTabele de indexTabele de descriere

a stucturiiTabela tabelelor

Student

Materie

Student-Marca

Student-Nume

Materie-Cod

Materie-Ore

Struct. Student

Struct. Materie

Struct. Student-Marca

Struct. Student-Nume

Struct. Materie-Cod

Struct. Materie-Ore

7

Figura 3-1. Exemplu de organizare într-o bază de date FoxPro

Conţinutul unei baze de date poate fi împărţit în patru categorii de date (figura 4-1). 1. Datele utilizatorilor sunt memorate fizic în fişiere şi descrise logic sub

formă de tabele, cu câmpurile pe coloane şi înregistrările pe linii. Pentru fiecare tabelă de date se defineşte structura tabelei, care reprezintă o descriere completă a tuturor câmpurilor din tabelă, şi a proprietăţilor fiecărui câmp. Generarea unei noi tabele în baza de date se face întotdeauna prin definirea, mai întâi, a structurii tabelei, după care pot fi memorate datele propriu-zise din tabelă. Pentru fiecare tabelă de date se poate defini o tabelă de index, care permite accesul direct la înregistrările tabelei de date sau parcurgerea tabelei de date într-o anumită ordine. În acest caz, accesul la o înregistrare se face pe baza valorii unei combinaţii de câmpuri din tabela de date, numită cheie de indexare. Majoritatea SGBD-urilor permit definirea mai multor chei de indexare pentru o singură tabelă de date.

2. Metadatele bazei de date (dicţionarul de date) conţin descrierea structurii tabelelor de date ale bazei de date şi a legăturilor logice dintre date. Această descriere este memorată în tabele, numite tabele sistem. Exemple de metadate ale bazei de date, incluse în tabelele bazei de date sunt:

Page 15: baze_date

15

- tabelul tabelelor bazei de date care conţine, pentru fiecare tabelă de date a bazei de date, câte o linie cu câmpurile: nume tabelă, număr câmpuri din tabelă, lungimea totală a unei înregistrări din tabelă, numele cheii primare de indexare din tabelă, etc.;

- descrierea structurii unei tabele de date a bazei de date care conţine, pentru fiecare câmp al tabelei, câte o înregistrare cu: numele câmpului, tipul datei memorate în câmp, lungimea câmpului, valoarea implicită, etc.

3. Tabelele de index sunt definite cu rolul de a mări accesibilitatea datelor şi pentru a îmbunătăţi performanţele de exploatare ale bazei de date. Sunt structuri de date specializate, folosite pentru accelerarea accesului la date şi pentru a permite parcurgerea şi prelucrarea bazei de date într-o ordine dorită a înregistrărilor. Tabelele de index asociate unei tabele de date se memorează în fişiere numite fişiere de index, conform modului de organizare indexată a fişierelor. În funcţie de SGBD, pot fi definite:

- fişiere de index simplu, în care se memorează o singură tabelă de index asociată fişierului de date

- fişiere de index multiplu, în care se memorează mai multe tabele de index asociate aceluiaşi fişier de date. O tabelă de index conţine, pentru fiecare înregistrare a tabelei de date la care se referă, valoarea cheii de indexare şi adresa înregistrării (determinată de valoarea cheii primare, locaţia fizică pe suport, etc).

Tabelele de index sunt gestionate de SGBD (de exemplu, SGBD asigură actualizarea automată a tuturor tabelelor de index deschise odată cu tabelele de date, în cazul actualizării tabelelor de date).

4. Metadatele aplicaţiilor sunt descrieri structurate ale unor prelucrări asupra datelor din baza de date care se memorează solidar cu datele, în baza de date. Astfel de prelucrări pot avea în vedere controlul asupra datelor memorate în baza de date prin: calcularea automată a valorii unor câmpuri din baza de date, validarea datelor memorate în baza de date, verificarea şi asigurarea corectitudinii corelaţiilor logice dintre datele memorate în baza de date, etc. O altă categorie de prelucrări descrise prin metadatele aplicaţiilor memorate în baza de date au ca scop obţinerea unor imagini particulare a datelor din baza de date, imagini numite vederi ale bazei de date. Vederile definesc viziuni parţiale asupra bazei de date, conforme cu necesităţi particulare de prelucrare, prin intermediul unei cereri de interogare a bazei de date care realizează o descriere specifică a rezultatului dorit. Accesul la metadatele aplicaţiilor se face numai prin intermediul SGBD.

Page 16: baze_date

16

Figura 3-2. Componenţa unei baze de date

Caracteristic organizării datelor în baze de date este faptul că proiectarea unei

baze de date trebuie abordată global, pentru reflectarea întregului univers real modelat. Datele memorate într-o bază de date au ca scop reflectarea realităţii, a activităţii întregii organizaţii, prin prisma informaţiilor vehiculate în sistemul informaţional al organizaţiei.

Pentru a realiza o reprezentare completă şi cât mai corectă a realităţii pe care trebuie să o reflecte baza de date, se folosesc drept instrumente de lucru, pentru proiectarea bazei de date, modele ale bazei de date. Un model al bazei de date este o reprezentare schematică şi sintetică a conţinutului bazei de date. Pentru descrierea modului de organizare a datelor din baza de date, proiectarea unei baze de date trebuie să abordeze atât organizarea fizică a datelor cât şi organizarea logică a datelor. În perioada de definire şi dezvoltare a metodelor de organizare a datelor în baze de date şi de proiectare a primelor SGBD (anii '70), grupul ANSI-SPARC (grupul de normalizare Nord-American pentru sisteme informatice - Standard Planning And Requirement Committee) a fost însărcinat să studieze impactul utilizării bazelor de date asupra sistemelor informatice şi să definească un standard de proiectare pentru un SGBD. Rezultatul acestei cercetări este modelul de arhitectură funcţională a unui SGBD structurat pe trei niveluri funcţionale ale bazei de date (figura 4-3). Fiecărui nivel funcţional îi corespunde o schemă a structurii de date, un model privind prelucrările care se fac asupra datelor şi o componentă funcţională a SGBD care realizează prelucrările la acest nivel. Aceste niveluri funcţionale sunt:

- nivelul conceptual care reprezintă depozitarul semantic al bazei de date, caracterizat prin faptul că realizează o abstracţie a universului modelat, servind ca model de referire globală pentru viziunile particulare ale utilizatorilor, respectiv aplicaţiilor pe baza de date şi care furnizează cel mai bun model pentru organizaţie;

- nivelul extern, care cuprinde viziuni specifice, definite pentru manevrarea datelor în funcţie de necesităţile fiecărui grup de utilizatori ai bazei de date;

- nivelul intern, ce reflectă reprezentarea datelor pe suportul de memorie externă, modul de realizare a acestui nivel contribuind la eficacitatea transpunerii şi implementării nivelului conceptual, determinând astfel performanţele de utilizare a bazei de date.

În metodologia de proiectare a bazelor de date cele trei planuri de analiză a unei baze de date, care definesc trei modalităţi de abordare a realităţii pentru a realiza modelul bazei de date, sunt numite niveluri de abstractizare a datelor din

Page 17: baze_date

17

baza de date. Corespunzător celor trei niveluri de abstractizare, sunt definite cele trei modele ale bazei de date numite scheme: schema conceptuală (globală), schema externă (utilizator) şi schema internă (fizică). Aceste trei modele realizează descrierea bazei de date din trei puncte de vedere diferite, conform celor trei niveluri de abstractizare a datelor din baza de date.

Nivelul conceptual sau nivelul global de abstractizare a datelor reflectă imaginea globală a datelor din baza de date, prin prisma organizării logice a acestor date. Schema conceptuală rezultată trebuie să asigure satisfacerea tuturor cerinţelor informaţionale asupra bazei de date. Ea defineşte modul de organizare a datelor în baza de date din punct de vedere logic (organizarea datelor în entităţi logice, caracterizate de anumite proprietăţi şi corelări logice) şi realizează modelarea realităţii considerate, asigurând independenţa descrierii datelor faţă de echipamentul şi tehnologia de memorare folosite. Baza de date este descrisă prin intermediul unor structuri care alcătuiesc schema conceptuală. În definirea schemei conceptuale se porneşte de la baza de cunoştinţe a sistemului informaţional, care cuprinde: datele ce pot fi colectate din sistem şi restricţiile ce se aplică acestor date, cerinţele de integrare a datelor (corelaţiile logice dintre date), regulile de gestiune a datelor (metode şi algoritmi de prelucrare a datelor). Schema conceptuală integrează viziunile tuturor utilizatorilor asupra bazei de date, pentru a face posibilă utilizarea în comun a bazei de date de către aceştia. Odată definită, schema conceptuală trebuie confruntată cu universul real pentru sesizarea şi rezolvarea eventualelor lipsuri şi neconcordanţe. Datorită caracterului său global şi unitar, schema conceptuală trebuie gestionată de o singură persoană.

Nivelul extern (nivelul utilizator) de abstractizare a datelor defineşte logic segmente ale bazei de date, care reprezintă viziuni parţiale asupra ei, caracteristice unor anumiţi utilizatori, respectiv unor anumite aplicaţii care exploatează baza de date. Nivelul extern evidenţiază necesităţile informaţionale ale unui utilizator sau grup de utilizatori referitoare la un segment din baza de date prin intermediul unei sub-scheme sau scheme externe a bazei de date. Prin intermediul schemei externe, utilizatorul are o viziune (vedere) parţială asupra bazei de date (o viziune de ansamblu asupra întregii baze de date se asigură numai la nivelul schemei conceptuale). Schemele externe trebuie corelate cu schema conceptuală iar cerinţele informaţionale ale nivelului extern care nu sunt satisfăcute de schema conceptuală trebuie să determine o reconsiderare a schemei conceptuale. Informaţiile din schemele externe pot fi preluate ca atare din schema conceptuală sau pot fi obţinute din aceste informaţii, prin prelucrări specifice (calcule, combinări, ordonări, selecţii) generând imagini virtuale ale bazei de date, numite vederi. Vederile reprezintă unităţi logice virtuale ale bazei de date care au rolul de a oferi utilizatorilor, selectiv, anumite date ale bazei de date şi de a ascunde restul datelor din baza de date, pentru aceşti utilizatori.

Nivelul intern de abstractizare a datelor (nivelul fizic) reflectă modul de organizare a datelor pe suportul de memorie externă. Nivelul intern priveşte baza de date ca pe o colecţie de fişiere memorate pe diferite medii de memorie externă şi defineşte modalitatea prin care datele din baza de date sunt organizate în fişiere ale bazei de date. Structura bazei de date este definită, la acest nivel, prin schema

Page 18: baze_date

18

internă a bazei de date, care descrie fişierele utilizate şi modul lor de operare. Ea este gestionată de SGBD, prin motorul său. Definirea schemei interne a bazei de date se face automat, de componentele SGBD, în momentul generării bazei de date. Pentru definirea schemei interne, se precizează fişierele bazei de date, fişierele de index, tipurile de înregistrări utilizate, modul de acces la fişiere, unităţile de memorie externă folosite, etc. Interacţiunea utilizatorului cu nivelul intern se face prin intermediul SGBD, prin componenta sa (gestionarul BD) care colaborează cu sistemul de operare (SGF) pentru a asigura gestionarea fişierelor bazei de date.

Administrator

deintreprindrere

Administratorbaza de date

Administratorde aplicatie

Elaborareaschemei

conceptuale

Elaborareaschemeiinterne

Elaborareaschemeiexterne

Corespondenta

Program deaplicatie lanivel intern

Program deaplicatie lanivel extern

Programatorde sistem

Programatorde aplicatie

stocaj intern

Corespondenta

intern conceptualCorespondenta

conceptual extern

Figura 3-3. Arhitectura ANSI-SPARC

Conform metodologiei ANSI-SPARC, sunt delimitate 3 categorii de

administratori pentru baza de date. 1. Administratorul de întreprindere, care este responsabil de proiectarea

globală a bazei de date şi are o imagine de ansamblu a aplicaţiilor prezente şi a perspectivelor de dezvoltare a bazei de date. El este cel care defineşte schema conceptuală a bazei de date, schemă care este independentă de aplicaţiile particulare şi care trebuie să includă toate schemele externe,

Page 19: baze_date

19

definite pentru a deservi toţi utilizatorii şi pentru a satisface toate aplicaţiile existente.

2. Administratorii de aplicaţie sunt responsabili cu dezvoltarea schemelor externe pentru diverse aplicaţii care lucrează cu baza de date şi pentru a oferi grupurilor de utilizatori diferite vederi asupra bazei de date.

3. Administratorul bazei de date este cel care defineşte schema internă a bazei de date, care implementează şi întreţine baza de date din punctul de vedere al organizării ei pe nivelul fizic.

Metodologia de concepere a unei baze de date porneşte de la necesitatea realizării, mai întâi, a schemei conceptuale, care se confruntă cu schemele externe şi din care, în final, derivă schema internă.

Un alt model al arhitecturii funcţionale a unui SGBD este modelul CODASYL, elaborat cu ocazia Conferinţei de normalizare a limbajelor pentru baze de date (Conference on Data Systems Language) din 1971.

NIVELUL

FUNCŢIONAL

AL SGBD

COMPONENTA

SGBD FUNCŢIA

SGBD SCHEMA

DE DATE GESTIONARUL

SCHEMEI

NIVEL

EXTERN subsistemul de

programare

asigură nivelul de descriere a aplicaţiilor şi a bazei de date

schema externă

administratorul aplicaţiei

NIVEL CONCEPTUAL

subsistemul run-time

implementează nivelul logic de descriere a

datelor

schema conceptuală

administratorul întreprinderii

NIVEL INTERN motorul SGBD

implementează nivelul fizic de

descriere a datelor

schema internă

administratorul datelor din BD

Figura 3-4. Modelul CODASYL

Acest model descrie funcţionarea unui SGBD printr-o schemă care pune în evidenţă cele trei niveluri de abstractizare a datelor în baza de date, cele trei scheme care modelează baza de date precum şi cele trei componente funcţionale ale SGBD care operează asupra bazei de date, utilizând cele trei categorii de informaţii codificate în baza de date: datele, metadatele şi programele, cu care operează pe rând, ca de exemplu în următorul model de prelucrări pentru consultarea bazei de date:

1. Utilizatorul formulează cererea de acces la datele din baza de date cu ajutorul instrumentelor oferite de subsistemul de programare, pornind de la o schemă externă proprie.

Page 20: baze_date

20

2. Subsistemul run-time consultă dicţionarul de date pentru a identifica datele cerute, conform schemei conceptuale, determină coordonatele logice ale datelor: tabelul, linia şi coloanele dorite, după care transmite comanda de acces la date către gestionarul bazei de date inclus în motorul SGBD.

3. Gestionarul bazei de date analizează comanda, consultă structura fizică a bazei de date şi generează comanda adresată gestionarului fişierelor, pentru accesul fizic la date; accesul la date se face conform regulilor de integritate a bazei de date memorate în dicţionarul de date şi a drepturilor de acces ale utilizatorului la date, verificate de această componentă a motorului SGBD.

4. Schimbul de date între memoria externă şi memoria internă se face sub controlul sistemului de operare, la nivel de bloc, în memoria tampon (buffer) a bazei de date.

5. Gestionarul bazei de date selectează din buffer numai datele solicitate (operaţia de deblocare) şi face transformările definite prin corespondenţa dintre schema conceptuală şi schema externă, furnizând utilizatorului numai rezultatele solicitate, prin intermediul subsistemului run_time.

6. În orice fază a execuţiei, SGBD avertizează utilizatorul în cazul derulării anormale a operaţiilor.

Pe parcursul utilizării ei, conţinutul bazei de date suferă modificări permanente,

în timp ce schema bazei de date rămâne relativ constantă. Ansamblul datelor stocate în baza de date, la un moment dat, reprezintă o realizare a bazei de date. În timp, baza de date înregistrează diferite realizări succesive.

Trecerea de la o realizare la alta a unei baze de date poartă numele de tranziţie. O tranziţie poate să fie produsă de modificarea conţinutului unei tabele a bazei de date, de modificarea structurii unei tabele a bazei de date, de adăugarea unei noi tabele în baza de date, etc. Oricare dintre aceste operaţii se realizează sub controlul SGBD, în conformitate cu descrierea datelor din dicţionarul de date, respectând restricţiile şi corelările logice dintre date. Acest mod de realizare a tranziţiilor garantează integritatea şi consistenţa bazei de date, conform restricţiilor impuse şi memorate în baza de date.

Realizarea unei tranziţii înseamnă, deci, executarea unei secvenţe de operaţii elementare cu datele din baza de date, operaţii concretizate fizic prin citiri şi scrieri în tabelele bazei de date şi prelucrări ale acestor date în memoria internă. De exemplu, adăugarea unei noi înregistrări într-o tabelă de date trebuie să fie urmată imediat (şi transparent pentru utilizator) de actualizarea tabelelor de index corespunzătoare fiecărei chei de indexare definite pentru tabela respectivă.

Se consideră asigurată consistenţa bazei de date atunci când s-a executat complet întregul set de operaţii elementare necesar pentru realizarea unei tranziţii. În caz contrar, pentru a evita pierderea consistenţei bazei de date, SGBD dispune de mijloace prin care să refacă imaginea iniţială a bazei de date, corespunzătoare realizării de la care a pornit tranziţia, sau măcar să semnaleze apariţia unei inconsistenţe în baza de date. Se consideră că o bază de date este consistentă atunci când ea reflectă corect universul real pe care îl modelează. Consistenţa unei baze de date este garantată de respectarea tuturor constrângerilor semantice impuse

Page 21: baze_date

21

asupra datelor, numite restricţii de integritate şi memorate în baza de date. Siguranţa unei baze de date se referă la toleranţa acesteia faţă de defecte şi la capacitatea de recuperare după apariţia unui defect1.

Se numeşte tranzacţie unitatea logică de prelucrare asupra unei baze de date care include setul complet de operaţii elementare care trebuie executat în vederea realizării unei tranziţii, pentru asigurarea consistenţei şi siguranţei bazei de date. Derularea unei tranzacţii se poate realiza cu succes sau cu incident. În cazul în care tranzacţia se derulează cu succes, de la prima la ultima operaţie, atunci ea se încheie printr-o operaţie de validare a tranzacţiei (commit). Validarea tranzacţiei are un dublu efect: indică SGBD faptul că rezultatele tranzacţiei sunt corecte, deci pot fi reflectate în baza de date, devenind vizibile altor tranzacţii şi indică faptul că efectele tranzacţiei sunt ireversibile în baza de date (ele nu mai pot fi anulate prin operaţia de rollback). În cazul apariţiei unor incidente în timpul tranzacţiei (de exemplu nu poate fi accesată o tabelă a bazei de date), efectul tranzacţiei poate fi anulat printr-o operaţie de abandonare a tranzacţiei. La abandonare, execuţia tranzacţiei este oprită şi se reface imaginea iniţială a bazei de date (rollback).

Pentru a asigura consistenţa şi siguranţa bazei de date, o tranzacţie trebuie să satisfacă cele patru condiţii definite prin acronimul ACID (Atomicitate, Consistenţă, Izolare, Durabilitate)2.

Atomicitatea unei tranzacţii se referă la caracterul unitar al operaţiilor cu baza de date pe care le presupune tranzacţia; condiţia de atomicitate impune ca o tranzacţie să fie validată numai după executarea completă a operaţiilor pe care le presupune. O tranzacţie întreruptă prematur trebuie tratată de SGBD pentru a fi încheiată, fie prin continuare, dacă este posibil, fie prin abandonare, cu anularea efectelor execuţiei sale.

Consistenţa unei tranzacţii se referă la necesitatea ca modificările efectuate în baza de date să fie făcute cu respectarea regulilor de integritate a bazei de date, pentru a garanta consistenţa bazei de date. Asigurarea consistenţei unei tranzacţii prin verificarea respectării regulilor de integritate nu poate fi realizată integral, în mod automat, numai de către SGBD. O parte dintre verificări trebuie să fie proiectate în mod explicit în aplicaţia care a generat tranzacţia.

Izolarea unei tranzacţii se referă la principiul de execuţie a tranzacţiei prin care rezultatele unei tranzacţii devin accesibile în baza de date pentru alte tranzacţii numai după validarea tranzacţiei respective. În caz contrar, dacă o altă tranzacţie ar putea utiliza rezultatele modificărilor parţiale realizate de tranzacţie şi dacă această tranzacţie ar fi abandonată, cu refacerea imaginii iniţiale a bazei de date, atunci şi tranzacţia care a folosit rezultatele parţiale ar trebui abandonată. Un astfel de proces ar putea genera un lanţ de abandonuri (efectul domino), de o lungime nedeterminată, greu de controlat şi care ar putea conduce la pierderea consistenţei bazei de date.

Durabilitatea tranzacţiei este proprietatea prin care se garantează că o tranzacţie validată este ireversibilă. După validarea tranzacţiei, SGBD permite reflectarea 1 Dollinger R. - op. cit. 2 idem.

Page 22: baze_date

22

rezultatelor tranzacţiei în baza de date, pentru a deveni accesibile şi altor tranzacţii. Dacă după validarea tranzacţiei apare un incident care să împiedice consemnarea în baza de date a rezultatelor tranzacţiei validate, SGBD dispune de mijloace pentru a relua procesul de scriere în baza de date a rezultatelor tranzacţiei, după înlăturarea incidentului. De obicei, SGBD foloseşte, în acest scop, metoda jurnalizării tuturor operaţiilor efectuate în timpul unei tranzacţii; jurnalul este folosit de procedurile SGBD de refacere a imaginii bazei de date, în caz de incident.

Respectarea proprietăţilor de atomicitate şi de consistenţă asigură caracteristica definitorie a tranzacţiei, faptul că generează o realizare consistentă a bazei de date. Respectarea proprietăţilor de izolare şi de durabilitate ale tranzacţiilor garantează imposibilitatea apariţiei efectului domino în cazul desfăşurării unor tranzacţii concurente asupra bazei de date.

Siguranţa bazei de date este realizată prin operaţia de rollback, dacă defectul în baza de date apare în timpul desfăşurării unei tranzacţii. Pentru a contracara incidentele care pot altera baza de date între două tranzacţii succesive se foloseşte metoda jurnalizării tranzacţiilor efectuate asupra bazei de date; în acest fel se poate restabili în orice moment imaginea bazei de date anterioară producerii defectului, pornind de la o imagine de siguranţă a bazei de date şi refăcând asupra acestei imagini toate tranzacţiile efectuate până în momentul apariţiei incidentului care a alterat baza de date.

Consistenţa bazei de date este asigurată de respectarea restricţiilor de integritate. Restricţiile de integritate ale unei baze de date sunt definite prin intermediul unor reguli de integritate a bazei de date. Regulile de integritate pot fi: implicite (restricţiile privind valorile admisibile ale datelor sunt determinate implicit de tipul de dată care le este asociat) sau explicite (liste de valori sau intervale în care poate lua valori un câmp din baza de date). Regulile explicite pot fi definite şi prin intermediul unor secvenţe de cod care pot fi generate de proiectantul aplicaţiei (de exemplu rutinele de validare, definite pentru un câmp din baza de date sau pentru o întreagă linie dintr-o tabelă a bazei de date) sau de componenta de proiectare a SGBD, în mod automat (de exemplu regulile de integritate referenţială implicit generate de SGBD la definirea unei baze de date relaţionale, în funcţie de opţiunile proiectantului bazei de date).

Un exemplu de rutine de validare generate automat de SGBD pentru implementarea unor restricţii de integritate sunt cele care asigură respectarea regulii de integritate referenţială pentru o bază de date relaţională. Într-o bază de date relaţională se stabilesc legături logice între perechi de înregistrări din tabele diferite care au în comun seturi de câmpuri ce formează perechi de forma (cheie primară, cheie străină). Tabela care conţine cheia străină se numeşte tabelă fiu, iar tabela în care cheia respectivă este cheie primară se numeşte tabelă părinte. Regula de integritate referenţială impune condiţia ca fiecare valoare a cheii străine să se regăsească printre valorile cheii primare. Pentru asigurarea respectării regulii de integritate referenţială, SGBD oferă următoarele variante de validare automată a actualizării unei înregistrări în una din cele două tabele:

Page 23: baze_date

23

- în cazul adăugării unei noi înregistrări în tabela fiu, adăugarea poate fi interzisă (restrict) dacă în tabela părinte nu există o înregistrare a cărei cheie primară să aibă valoarea cheii străine din înregistrarea care se adaugă;

- în cazul ştergerii unei înregistrări din tabela părinte, dacă există înregistrări în tabela fiu a căror cheie străină are aceeaşi valoare cu cheia primară a înregistrării care se şterge, ştergerea este interzisă (restrict) sau se realizează ştergerea în cascadă (cascade), adică se şterge înregistrarea din tabela părinte şi toate înregistrările corespunzătoare din tabela fiu;

- în cazul modificării cheii primare a unei înregistrări din tabela părinte, dacă există înregistrări în tabela fiu a căror cheie străină are aceeaşi valoare cu cheia primară care se modifică, modificarea este interzisă (restrict) sau se realizează modificarea în cascadă (cascade), adică se modifică înregistrarea din tabela părinte şi toate înregistrările corespunzătoare din tabela fiu.

Unul dintre avantajele gestionării datelor prin intermediul unui SGBD este faptul că se poate asigura un anumit nivel de libertate în realizarea modificărilor asupra modului de organizare a datelor care să nu afecteze modul de utilizare a lor. Acest lucru este posibil datorită modelului de organizare a SGBD pe trei niveluri de abstractizare a datelor. Posibilitatea modificării descrierii datelor pe un nivel de abstractizare, fără a afecta descrierile de pe celelalte niveluri defineşte gradul de autonomie a datelor din baza de date. Se delimitează două niveluri de autonomie a datelor în baza de date: 1. Autonomia fizică asigură faptul că se poate modifica schema internă fără a

afecta celelalte niveluri (nivelurile logice de descriere a bazei de date). Autonomia fizică are următoarele caracteristici: - se foloseşte pentru ameliorarea performanţelor de lucru cu baza de date

(dimensiunea fişierelor, viteza de acces la date) prin modificarea suportului de memorie externă folosit, a organizării fizice a datelor pe suport, a platformei de calcul utilizate, etc.;

- este necesară pentru a asigura portabilitatea1 bazei de date de la o platformă la alta;

- este asigurată prin interacţiunea SGBD cu sistemul de operare, în primul rând cu sistemul de gestiune a fişierelor;

2. Autonomia logică permite modificarea schemei conceptuale sau a schemei externe a bazei de date fără a fi necesară rescrierea programelor de aplicaţie care lucrează cu baza de date. Autonomia logică are următoarele trăsături: - este necesară când se extinde sfera informaţională acoperită de sistemul

informatic, se dezvoltă o nouă aplicaţie sau apar noi informaţii ce trebuie prelucrate în aplicaţiile existente;

- deşi în general noi categorii de date presupun şi noi prelucrări, nu este obligatorie modificarea aplicaţiilor existente pentru implementarea noilor

1 Portabilitatea unei componente software reprezintă posibilitatea de a utiliza acea componentă pe sisteme de calcul diferite sau sub sisteme de operare diferite

Page 24: baze_date

24

categorii de date pentru că prelucrări noi referitoare la aceste date pot fi memorate şi în baza de date, în componenta de metadate ale aplicaţiilor;

- este asigurată prin intermediul dicţionarului de date care este consultat de SGBD în vederea accesării bazei de date.

3.2. Sistemul de gestiune a bazelor de date

SGBD este un sistem de programe care permit interacţiunea cu baza de date pentru creare, actualizare şi consultare, asigurând gestionarea unitară a datelor din baza de date şi acţionând ca o interfaţă între baza de date şi utilizatorii ei. În cealaltă direcţie, SGBD colaborează cu sistemul de operare pentru realizarea funcţiilor sale, de exemplu intracţiunea cu sistemul de gestiune a fişierelor.

O bază de date nu poate fi utilizată decât prin intermediul unui SGBD. În plus, un SGBD este proiectat în concordanţă cu modul de organizare a datelor specific unui anumit model de bază de date. În consecinţă, orice SGBD trebuie să îndeplinească un set de funcţii minimale, la care se adaugă funcţii specifice tipului de bază de date pe care o gestionează: 1. SGBD permite generarea bazei de date prin oferirea limbajului de descriere a

structurii bazei de date (limbajul de descriere a datelor - LDD) şi prin generarea automată a schemei interne a bazei de date, pe baza acestei descrieri.

2. SGBD realizează actualizarea datelor din baza de date, cu respectarea restricţiilor de integritate memorate în baza de date, asigurând astfel menţinerea consistenţei bazei de date.

3. Utilizând dicţionarul de date pentru accesul la baza de date, SGBD asigură autonomia logică a datelor faţă de programele de aplicaţie.

4. SGBD asigură posibilitatea accesului multicriterial la datele din baza de date prin intermediul cheilor de indexare, a filtrelor, a operaţiei de ordonare a datelor, a memorării legăturilor dintre date, etc. În felul acesta se asigură proprietatea bazei de date de a oferi utilizatorilor imagini multiple ale datelor pe care le memorează.

5. Un SGBD proiectat pentru a funcţiona în regim multiutilizator trebuie să asigure protecţia datelor faţă de accesele concurente la baza de date. În acest scop, actualizările bazei de date se realizează prin intermediul tranzacţiilor.

6. Cum bazele de date sunt concepute pentru a permite prelucrarea unui volum mare de date, gestiunea datelor impune nu numai structurarea lor riguroasă, ci şi optimizarea procedurilor de acces la date şi de prelucrare a lor, asigurată tot de SGBD, în scopul creşterii performanţelor de acces la date.

7. SGBD oferă instrumente cât mai accesibile pentru consultarea bazei de date. Aceste instrumente se adresează, în primul rând, utilizatorilor neprofesionişti şi constau în limbaje de interogare a bazei de date, limbaje neprocedurale, descriptive şi cât mai apropiate de limbajul uman, susţinute, eventual, şi de elemente de interfaţă prietenoasă, de tipul interfeţelor grafice sau ale generatoarelor automate de cereri de interogare.

Page 25: baze_date

25

8. Pentru actualizarea bazei de date şi pentru definirea aplicaţiilor cu baza de date, SGBD oferă utilizatorilor profesionişti instrumente de proiectare (limbaje de manevrare a datelor din baza de date - LMD), generatoare automate de cod sau chiar medii de proiectare a sistemului informatic ce utilizează baza de date.

9. SGBD poate asigura confidenţialitatea datelor din baza de date prin atribuirea de drepturi de acces utilizatorilor şi identificarea acestora prin intermediul unui sistem de parole, prin implementarea unor mecanisme de criptare a datelor din baza de date şi prin intermediul vederilor asupra bazei de date, care oferă utilizatorilor imagini parţiale ale bazei de date, conform schemelor externe definite de aceşti utilizatori.

10. SGBD asigură integritatea bazei de date, prin gestionarea unor proceduri automate sau definite de proiectantul bazei de date care să permită refacerea imaginii bazei de date în cazul alterării conţinutului ei în urma unor incidente. În acest scop, SGBD realizează automat copii de siguranţă care permit executarea procedurilor de refacere (rollback) sau se poate defini explicit o procedură completă de asigurare a bazei de date. Spre exemplu, se realizează salvarea periodică a bazei de date pe un suport sigur de memorie externă, se realizează jurnalizarea actualizărilor bazei de date, prin memorarea pe un suport sigur de memorie externă a tuturor tranzacţiilor efectuate de la ultima salvare a bazei de date şi în caz de incident se restaurează ultima realizare a bazei de date salvată, după care se refac tranzacţiile efectuate ulterior acestei salvări, prin consultarea jurnalului.

11. SGBD asigură autonomia fizică a datelor faţă de programele de aplicaţie. Ca urmare, este posibilă reorganizarea fizică a bazei de date atunci când este necesar fără a afecta aplicaţiile cu baza de date. De exemplu se realizează ştergerea fizică a înregistrărilor marcate logic pentru ştergere, se poate modifica modul de memorare a bazei de date în memoria externă, se poate modifica sistemul de operare sau configuraţia hardware care suportă baza de date.

12. SGBD permite monitorizarea activităţii cu baza de date, pentru ameliorarea performanţelor de exploatare a bazei de date, în scopul minimizării timpului de răspuns, utilizării optime a memoriei, asigurării unei bune adaptabilităţi a bazei de date faţă de solicitările utilizatorilor şi a unei bune protecţii a datelor.

Principalele componente ale unui SGBD sunt: motorul SGBD, subsistemul instrumentelor de proiectare şi subsistemul de execuţie (subsistemul run-time).

Motorul SGBD este un intermediar între subsistemul de proiectare şi subsistemul run-time al bazei de date, pe de o parte, şi datele din baza de date, pe de altă parte, pentru realizarea accesului fizic la datele din baza de date. Motorul SGBD este implicat în gestionarea tranzacţiilor la nivelul unei baze de date, regăsirea datelor pe baza informaţiilor de adresare din fişierele de index, salvarea şi restaurarea datelor, blocarea şi deblocarea datelor în cazul operaţiilor fizice la nivelul memoriei externe. Acţiunile motorului SGBD, în cadrul bazei de date, sunt realizate unitar, respectând restricţiile impuse de legăturile dintre date şi de regulile de integritate ale bazei de date, definite în dicţionarul de date. Motorul SGBD asigură şi interfaţa funcţională pentru operarea modificărilor în structura bazei de

Page 26: baze_date

26

date, formulate prin comenzi ale limbajului de descriere a datelor. El gestionează unitar operaţiile la nivel fizic asupra bazei de date, prin funcţiile îndeplinite de componentele sale: gestionarul bazei de date şi gestionarul fişierelor:

Figura 3-5. Locul motorului SGBD

Gestionarul bazei de date traduce comenzile primite, de transformare a datelor

sau metadatelor din baza de date, în comenzi de acces fizic la fişierele bazei de date, executabile sub controlul SGF. El realizează transformarea comenzilor elementare care alcătuiesc tranzacţia şi vizează lucrul cu fişierele bazei de date în comenzi adresate gestionarului fişierelor şi componentei SGF a sistemului de operare şi asigură ca orice modificare a datelor din baza de date să fie făcută numai cu respectarea regulilor de integritate memorate în dicţionarul de date, identifică abaterile de la aceste reguli şi le semnalează. Gestionarul bazei de date realizează blocarea bazei de date, de obicei la nivel de fişier sau de înregistrare, pentru a asigura izolarea tranzacţiei necesară în cazul acceselor concurente la baza de date şi asigură integritatea bazei de date, prin gestionarea procedurilor automate de siguranţă care trebuie să permită restabilirea stării bazei de date anterioare producerii unui accident. Pentru asigurarea securităţii datelor din baza de date gestionarul bazei de date verifică drepturile de acces la date şi permite executarea procedurilor de criptare.

Gestionarul fişierelor realizează, alături de SGF, transferurile de date cu memoria externă.

Componentele amintite ale motorului bazei de date acţionează asupra celorlalte componente ale bazei de date:

- fişierele de date, care reprezintă suportul informaţional propriu-zis al bazei de date;

- metadatele sau dicţionarul de date, care memorează informaţii despre structura bazei de date şi legăturile dintre date şi care este consultat în toate operaţiile de acces la datele bazei de date;

- fişierele de index, care permit mărirea vitezei de acces la date şi oferă imagini multiple ale datelor din baza de date.

Page 27: baze_date

27

Subsistemul instrumentelor de proiectare al unui SGBD dispune de un set de instrumente software specializate pentru proiectarea şi generarea bazei de date, respectiv a aplicaţiilor care descriu modul de utilizare a bazei de date. Această componentă a SGBD permite definirea structurii tabelelor din baza de date, a machetelor de interfaţă cu utilizatorul, a formatului rapoartelor şi cererilor de interogare a bazei de date. Ea poate include:

- limbajul de descriere a datelor (LDD); - limbaje de manevrare a datelor (LMD); - limbaje de interogare a bazei de date (LI); - editoare pentru codul aplicaţiilor; - generatoare automate de cod, pentru definirea interfeţelor

utilizator, a rapoartelor, a meniurilor aplicaţiilor, etc.; - sistem de asistenţă on-line pentru autodocumentarea utilizatorului

(componentă de tip Help) etc.

Figura 3-6. Componenta run-time şi componenta de proiectare

Pentru a defini structura unei baze de date se folosesc instrumentele oferite de o interfaţă specializată, care utilizează un limbaj propriu: limbajul de descriere a datelor. Prin interpretarea acestor descrieri este generat ansamblul de tabele numit dicţionar de date, care conţine descrieri ale datelor din baza de date, numite şi metadatele bazei de date. Metadatele bazei de date sunt consultate de componentele SGBD înaintea oricărei operaţii asupra datelor din baza de date. Modulele de lucru cu limbajul de descriere a datelor traduc şi execută instrucţiuni ale limbajului de descriere a datelor pentru a genera dicţionarul de date. Ele sunt incluse în subsistemul de proiectare al SGBD. Funcţiile asigurate de limbajul de descriere a datelor sunt:

- descrierea organizării logice a datelor în baza de date, prin definirea tabelelor de date şi a câmpurilor din tabele;

Page 28: baze_date

28

- definirea regulilor sintactice de reprezentare a datelor, prin tipul datelor şi prin formatele de reprezentare;

- definirea restricţiilor semantice la care se supun datele şi care asigură corectitudinea datelor bazei de date (plaja de valori, formule de calcul pentru datele derivate din date de bază, rutine de validare a datelor, etc);

- specificarea legăturilor logice dintre datele bazei de date; - definirea cheilor de indexare asociate tabelelor bazei de date; - definirea procedurilor de criptare, dacă este cazul; - definirea cheilor de confidenţialitate (parole de acces la date).

Limbajele de manevrare a datelor permit descrierea operaţiilor asupra datelor din baza de date, din punctul de vedere al utilizatorilor. Manevrarea datelor este termenul generic pentru desemnarea operaţiilor executate asupra datelor din baza de date care constă, în detaliu, din:

- adăugarea, prin scrierea de noi date în tabelele de date; - modificarea, prin schimbarea valorii datelor existente; - ştergerea datelor din tabele ale bazei de date; - prelucrarea datelor, prin operaţii specifice de tipul ordonării,

interclasării, filtrării sau combinării datelor, în aceeaşi tabelă sau între tabele ale bazei de date;

- consultarea, adică extragerea unor date din tabele ale bazei de date, în scopul vizualizării sau prelucrării lor.

Un limbaj de manevrare a datelor permite operarea asupra datelor atât la nivel logic, prin comenzile utilizatorului, preluate de componenta run-time, folosind descrierea datelor conform schemei şi sub-schemelor bazei de date cât şi la nivel fizic, prin descrierea şi implementarea unor algoritmi performanţi de acces la datele din memoria externă.

După modalitatea de formulare a cererii de identificare a datelor în baza de date, limbajele de manevrare a datelor se clasifică în două categorii: limbaje procedurale şi neprocedurale. Limbaje procedurale sunt acele limbaje pentru care utilizatorul trebuie să precizeze datele pe care doreşte să le acceseze şi modul în care se obţin aceste date din baza de date. Utilizatorul furnizează o secvenţă de operaţii executabile într-o succesiune bine precizată şi care se constituie într-o procedură. Limbaje neprocedurale sunt limbajele în care succesiunea instrucţiunilor din program nu influnţează decât în mică măsură succesiunea executării lor. Utilizatorul precizează ce date doreşte doar prin descrierea acestor date, fără a preciza şi metoda de identificare a lor în baza de date. Limbajele neprocedurale nu necesită descrierea modului de realizare a accesului la date pentru că folosesc proceduri standard de acces la date. Modul de formulare a cererilor într-un limbaj neprocedural este mai apropiat limbajului uman, motiv pentru care limbajele neprocedurale sunt mai accesibile. Limbajele procedurale sunt limbaje imperative, în timp ce limbajele neprocedurale sunt limbaje declarative.

În cadrul limbajelor de manevrare a datelor se includ şi limbajele de interogare a bazei de date (LI) care permit căutarea şi identificarea datelor în baza de date.

Page 29: baze_date

29

Limbajele de interogare se adresează utilizatorului curent al bazei de date, de obicei neinformatician, motiv pentru care sunt concepute ca limbaje evoluate, apropiate de limbajul uman, şi sunt definite ca limbaje neprocedurale.

Un limbaj de manevrarea datelor poate să utilizeze un limbaj propriu, autonom sau un limbaj de programare standard. Conform acestui criteriu, un SGBD poate fi: autonom sau cu limbaj gazdă. SGBD este autonom atunci când limbajul de manevrare a datelor are un limbaj de programare propriu şi cu limbaj gazdă, când limbajul de manevrare a datelor nu are un limbaj propriu iar comenzile sale sunt implementate prin instrucţiuni scrise în limbajul gazdă al SGBD.

În funcţie de tipul de SGBD, generarea codului executabil pentru comenzile limbajului de manevrare a datelor se realizează diferit. Pentru SGBD autonome sunt următoarele variante de transformare a comenzilor limbajului de manevrare a datelor în cod executabil:

- la execuţia comenzilor, prin interpretarea fiecărei instrucţiuni în limbajul de manevrare a datelor şi executarea ei imediată (limbajul de manevrare a datelor este unul de tip interpretativ);

- prin compilarea comenzilor în limbajul de manevrare a datelor şi generarea unui cod executabil ce va fi executat de motorul SGBD (limbajul de manevrare este de tip compilativ);

- când SGBD posedă interfaţă pentru un alt limbaj de programare, se poate realiza traducerea comenzilor formulate în acel limbaj în secvenţe de cod scrise în limbajul de manevrare a datelor şi translatarea acestora cu compilatorul propriu, pentru generarea unui cod executabil.

Pentru SGBD cu limbaj gazdă transformarea comenzilor limbajului de manevrare a datelor în cod executabil se poate face:

- prin îmbogăţirea compilatorului limbajului gazdă cu comenzile limbajului de manevrare a datelor, acesta generând cod adresat motorului SGBD, care va realiza accesul la date;

- prin intermediul unui program pre-compilator, care transformă programele sursă care includ instrucţiuni ale limbajului de manevrare a datelor în programe sursă în limbajul gazdă, care sunt apoi compilate cu compilatorul limbajului gazdă;

- prin intermediul unor subprograme în care comenzile limbajului de manevrare a datelor sunt apeluri la subprograme scrise în limbajul gazdă, subprograme aduse apoi în format executabil.

Subsistemul de execuţie (run-time) permite procesarea (execuţia) aplicaţiilor

sau cererilor de consultare a bazei de date, formulate utilizând instrumentele subsistemului de proiectare, prin consultarea dicţionarului de date şi generarea tranzacţiilor. Aceasta este componenta care asigură autonomia logică a datelor din baza de date, intermediind operaţiile cu baza de date prin consultarea descrierii organizării logice a datelor memorată în structura bazei de date. Orice operaţie de actualizare sau de consultare a bazei de date se realizează prin identificarea formatelor de descriere a datelor din dicţionarul de date şi conectarea acestor

Page 30: baze_date

30

descrieri la schema internă a bazei de date. Această operaţie este realizată de componenta de excuţie a SGBD. De asemenea, pentru a opera cu o vedere a bazei de date, componenta run-time consultă interfaţa dintre schema externă a bazei de date şi schema conceptuală, interfaţă care cuprinde regulile de derivare care definesc vederea. Comenzile, formulate într-un limbaj de manevrare a datelor sau într-un limbaj de interogare a bazei de date, sunt traduse de modulul translator specializat, fiind transformate apoi, prin intermediul procesorului de consultare a bazei de date, în instrucţiuni elementare de lucru cu baza de date care alcătuiesc tranzacţii şi care sunt adresate gestionarului bazei de date, parte a motorului SGBD. În plus, la nivelul componentei run-time, se realizează şi o optimizare a modului de execuţie a comenzilor de consultare a bazei de date, pentru a mări viteza de acces la baza de date. În cadrul componentei run-time unele SGBD dispun de interfeţe pentru alte medii de prelucrare a datelor, care permit ca prin comenzi scrise într-un limbaj exterior, nespecific SGBD, să se poată realiza accesul la datele bazei de date.

Un obiectiv principal al unui SGBD este de a crea un mediu favorabil utilizatorilor pentru a lucra cu datele din baza de date. Alături de componentele software, funcţionarea unei baze de date este de neconceput în absenţa factorului uman care, după modul de interacţiune cu baza de date, se poate grupa în două categorii: administratorii (administratorul de întreprindere, administratorii de aplicaţie, administratorul bazei de date) şi utilizatorii.

Figura 3-7. Utilizatorii bazei de date

În mod generic, persoana responsabilă pentru asigurarea condiţiilor optime de

utilizare a bazei de date este numită administratorul bazei de date. Acesta trebuie să cunoască schema internă a bazei de date, fiind responsabil de implementarea şi funcţionarea în condiţii optime a bazei de date. Funcţiile administratorului bazei de date sunt:

Page 31: baze_date

31

- definirea arhitecturii bazei de date conform schemei conceptuale, fie prin utilizarea interactivă a limbajului de descriere a datelor, fie prin executarea unor proceduri automate de configurare a bazei de date;

- definirea modului de implementare a bazei de date în memoria externă (organizarea bazei de date în memoria externă) şi a modurilor de acces la date, prin intermediul limbajului de descriere a datelor;

- gestionarea modificărilor apărute în descrierea bazei de date, la nivelul schemei conceptuale, sau în implementarea în memoria externă a bazei de date (modificări privind suportul de memorare sau modul de organizare a datelor pe suport);

- implementarea restricţiilor privind integritatea bazei de date (acestea se fac la nivelul schemei conceptuale şi nu la nivelul schemei externe, pentru că se referă la întreaga bază de date şi nu la părţi ale bazei de date, ce corespund schemelor externe);

- definirea procedurilor de eroare, în cazul nerespectării regulilor de integritate a datelor;

- autorizarea accesului la date, prin acordarea de chei de acces şi priorităţi de acces la utilizatori sau grupuri de utilizatori;

- definirea procedurilor privind asigurarea drepturilor de acces la baza de date;

- asigurarea legăturii cu utilizatorii, în scopul transferului reciproc de informaţii privind modul de lucru cu baza de date; de asemenea îi avizează pe utilizatori cu privire la modificările apărute în modul de lucru cu baza de date;

- definirea strategiei de asigurare a bazei de date, prin operaţii periodice de salvare a bazei de date şi prin jurnalizarea tranzacţiilor; în acest scop, administratorul bazei de date stabileşte calendarul de salvări ale bazei de date precum şi procedurile de salvare/restaurare corespunzătoare;

- monitorizarea performanţelor bazei de date, pentru îmbunătăţirea parametrilor de exploatare, mai ales a timpului de răspuns la cereri de acces la date şi a vitezei de prelucrare a datelor din baza de date.

După natura interacţiunilor cu baza de date şi gradul lor de specializare în domeniu, utilizatorii bazei de date pot aparţine uneia dintre următoarele categorii:

- utilizatori profesionişti (informaticieni), de exemplu: administratorul bazei de date, administratorul de intreprindere, administratorii de aplicaţii, precum şi proiectanţii de aplicaţii;

- utilizatori neinformaticieni, care pot fi: utilizatorii curenţi (intensivi) ai bazei de date, adică cei care efectuează operaţii de rutină asupra bazei de date folosind de obicei aplicaţii dedicate, de exemplu pentru actualizarea bazei de date sau pentru consultări sistematice ale bazei de date şi utilizatorii ocazionali, care interacţionează cu baza de date prin intermediul limbajului de interogare a bazei de date pentru a obţine informaţii, ca răspuns la întrebări ocazionale, de obicei neanticipate.

Page 32: baze_date

32

3.3. Baze de date relaţionale

3.3.1. Conceptele folosite pentru bazele de date relaţionale

Un pas înainte în tehnica organizării datelor în baze de date a fost făcut atunci când accesul la date a putut fi descris într-o manieră neprocedurală iar operarea efectivă asupra datelor s-a putut realiza prin secvenţe de cod scoase în afara codului de aplicaţie. În acest caz, accesul la date este standardizat şi funcţiile de acces la date sunt incluse în funcţiile SGBD. Modelul care stă la baza unei astfel de organizări a datelor este modelul relaţional.

În anii '80 s-a înregistrat o perfecţionare a modului de proiectare şi a condiţiilor care permit utilizarea optimă a SGBDR1, astfel încât anii '90 marchează o dezvoltare a activităţii de proiectare de SGBDR. Multe dintre aceste SGBD-uri nu reuşesc să atingă performanţele solicitate unui SGBDR. Aşa cum calitatea determinată de organizarea datelor în baze de date nu poate fi asigurată decât sub controlul unui SGBD, calitatea unui SGBDR nu poate fi asigurată decât în condiţiile în care acesta respectă specificaţiile modelului relaţional de organizare a bazei de date.

Pentru a limpezi puţin lucrurile şi pentru a reglementa activitatea de proiectare şi dezvoltare de SGBDR, Edgar Codd, cercetător la laboratoarele IBM din San Jose (California), a încercat să sistematizeze şi să prezinte sub o formă unitară sistemul minimal de reguli pe care trebuie să le respecte un SGBD pentru a putea gestiona o bază de date relaţională. Modelul relaţional a fost formulat şi publicat pentru prima oară în 1969 de către Edgar Codd. Acesta a publicat începând din 1970 lucrările sale de referinţă privitoare la modelul relaţional pentru organizarea datelor în baze de date. Pornind de la un număr de 13 reguli, în 1986, Codd a ajuns să publice până la 100 de reguli, în 1990. Pentru a constitui, totuşi, un instrument funcţional, se consideră că cele 13 reguli definite iniţial sunt suficiente pentru a aprecia dacă, şi măsura în care, un SGBD este relaţional. Cele 13 reguli ale lui Codd sunt enunţate în continuare.

Regula 0. Regula de bază - afirmă că pentru a fi relaţional un SGBD trebuie să gestioneze datele din baza de date exclusiv prin utilizarea mecanismelor relaţionale care sunt prezentate în următoarele 12 reguli. SGBD gestionează datele din baza de date prin intermediul componentelor sale:

- LDD pentru definirea schemei relaţionale a bazei de date; - LMD pentru definirea cererilor de manevrare a datelor din baza de

date; - componenta run-time pentru interpretarea cererilor de manevrare a

datelor; - gestionarul bazei de date pentru asigurarea integrităţii şi consistenţei

bazei de date;

1 Sistem de Gestiune a Bazelor de Date Relaţionale

Page 33: baze_date

33

- motorul, pentru a interfaţa cererile de acces la date cu implementarea fizică a bazei de date.

Observaţie: se constată că, practic, nici o implementare de SGBDR nu respectă această regulă, deoarece toate SGBD-urile care se consideră relaţionale conţin şi caracteristici nerelaţionale.

Regula 1. Regula reprezentării logice a datelor - afirmă că într-o bază de date relaţională toate datele trebuie să fie organizate logic într-un singur fel, sub formă de relaţii memorate în tabele; acest lucru permite ca toate datele din baza de date să fie prelucrate la fel, chiar dacă sunt date sau metadate. Observaţie: în opinia lui Codd, un SGBD care nu respectă regula 1 nu este relaţional.

Regula 2. Regula garantării accesului la date - afirmă că într-o bază de date relaţională orice dată trebuie să poată fi identificată prin tripleta formată din: numele tabelei, valoarea cheii primare, numele coloanei din tabelă. Pentru a respecta această regulă, în orice tabelă a bazei de date trebuie să se respecte ca reguli de integritate regula unicităţii cheii şi regula entităţii1.

Regula 3. Regula reprezentării valorilor necunoscute sau neacceptate - afirmă că într-o bază de date relaţională trebuie să se poată utiliza o valoare, notată convenţional cu null, pentru a face distincţia explicită între datele cărora nu li se atribuie valoare (pentru că nu este cunoscută sau pentru că nu este acceptabilă) şi cele care au primit o valoare, fie ea şi 0 sau şirul vid. Această condiţie este necesară pentru implementarea regulii entităţii şi a regulii integrităţii referenţiale2.

Regula 4. Regula dicţionarului de date - afirmă că descrierea bazei de date relaţionale trebuie să fie organizată logic la fel cu baza de date astfel încât asupra metadatelor să se poată opera ca şi asupra datelor din baza de date. În acest scop, metadatele sunt organizate şi ele în tabele, fapt care permite accesarea metadatelor prin intermediul aceloraşi mecanisme folosite pentru accesarea datelor. De exemplu, în acest fel vor putea fi generate noi tabele sau va putea fi modificată structura unei tabele în mod programatic, în etapa de execuţie a aplicaţiilor (etapa run-time). În plus, acest mod unitar de organizare logică a întregului conţinut al bazei de date face ca manevrarea bazei de date să nu depindă de conţinutul ei, deci să poată fi realizată standardizarea accesului la conţinutul bazei de date; consecinţa acestei standardizări este scoaterea metodelor de acces la baza de date în afara aplicaţiilor şi gestionarea lor unitară de către componentele SGBD.

Regula 5. Regula limbajului de cereri - afirmă că un SGBD relaţional trebuie să ofere cel puţin un limbaj de manevrare a datelor de nivel înalt, care să permită efectuarea următoarelor operaţii: definirea tabelelor de date şi a tabelelor virtuale din baza de date, manevrarea datelor, definirea restricţiilor de integritate, autorizarea accesului la baza de date, definirea tranzacţiilor. Un astfel de limbaj de cereri pentru baze de date relaţionale este limbajul SQL (Structured Query Language).

1 vezi mai departe în capitolul curent 2 idem

Page 34: baze_date

34

Regula 6. Regula de actualizare a tabelelor virtuale - afirmă că într-o bază de date relaţională tabelele virtuale (vederile) trebuie să poată fi actualizate. O tabelă virtuală reflectă automat modificările efectuate asupra datelor pe care le prezintă, având în vedere faptul că în baza de date nu se memorează conţinutul efectiv al vederii, în momentul generării ei, ci este memorată numai descrierea modului în care se poate obţine vederea. Prin intermediul acestei interfeţe între baza de date şi vedere se pot realiza şi transferurile de valori în sens invers, de la tabela virtuală către tabela fizică, dar numai în cazul în care destinaţia datelor în baza de date nu este ambiguă.

Regula 7. Regula limbajului de nivel înalt - afirmă că pentru a fi relaţional un SGBD trebuie să posede un limbaj de nivel înalt care să permită realizarea operaţiilor de actualizare a bazei de date la nivelul unei relaţii, aşa cum un limbaj de interogare permite operaţia de consultare a bazei de date.

Regula 8. Regula independenţei fizice a datelor - afirmă că aplicaţiile care utilizează o bază de date relaţională nu trebuie să fie influenţate de modificarea modului de memorare a datelor în memoria externă sau de modul de acces fizic la date. Această proprietate este garantată de respectarea autonomiei fizice a datelor din baza de date.

Regula 9. Regula independenţei logice a datelor - afirmă că aplicaţiile care utilizează o bază de date relaţională nu trebuie să fie afectate de modificarea schemei relaţionale a bazei de date. Modificarea organizării logice a datelor fără afectarea programelor de aplicaţie este posibilă datorită autonomiei logice a datelor din baza de date relaţională.

Regula 10. Regula independenţei mecanismului pentru integritatea datelor - afirmă că un SGBD relaţional trebuie să asigure independenţa mecanismului de integritate a bazei de date prin memorarea restricţiilor de integritate în afara codului de aplicaţie, solidar cu datele din baza de date. În acest fel SGBDR asigură verificarea automată a respectării regulilor de integritate la actualizarea bazei de date independent de modul de proiectare a aplicaţiilor utilizator.

Regula 11. Regula independenţei datelor faţă de distribuirea geografică a lor - afirmă că în cazul utilizării unei baze de date relaţionale în care datele sunt distribuite SGBD trebuie să asigure gestionarea datelor distribuite într-o manieră transparentă pentru utilizator şi fără să afecteze cumva programele de aplicaţie. Nu trbuie să fie necesară modificarea codului de aplicaţie atunci când datele sunt stocate pe staţii diferite dintr-o reţea de calculatoare.

Regula 12. Regula limbajului procedural (de nivel scăzut) - afirmă că dacă un SGBDR acceptă un limbaj procedural, de obicei de nivel scăzut, care să permită prelucrarea tabelelor din baza de date la nivel de tuplu şi nu de relaţie, acest limbaj nu trebuie utilizat în vederea ocolirii funcţiilor SGBDR de asigurare a integrităţii şi consistenţei bazei de date. El trebuie să respecte aceleaşi reguli şi restricţii de lucru cu baza de date relaţională pe care le implementează SGBD prin componentele sale.

Regulile lui Codd oferă criterii de analiză şi de clasificare a diferitelor SGBDR, în funcţie de modul în care acestea le respectă. Indiferent de măsura în care respectă regulile lui Codd, cerinţele considerate minimale pentru un SGBDR sunt:

Page 35: baze_date

35

- organizarea în relaţii a datelor din baza de date; - între tabelele bazei de date să nu existe pointeri gestionaţi în mod

explicit de utilizatori; - dintre operatorii relaţionali să fie implementaţi operatorul de selecţie,

de proiecţie şi de uniune naturală1. Un SGBD este considerat complet relaţional dacă este un SGBDR minimal şi,

în plus: - asigură toate operaţiile de bază ale algebrei relaţionale; - asigură regula entităţii, regula unicităţii cheii precum şi restricţia

referenţială. Toate aceste caracteristici care definesc un SGBDR vor fi prezentate în continuare.

Modelul relaţional a pornit de la un concept matematic: noţiunea de relaţie din teoria mulţimilor şi de la un model teoretic fundamentat matematic: modelul algebrei relaţionale. Avantajele utilizării acestui model matematic pentru dezvoltarea unui model de organizare a datelor într-o bază de date sunt următoarele:

- oferă un instrument de studiu teoretic al proprietăţilor logice ale bazelor de date relaţionale, care are avantajul că permite proiectantului bazelor de date să ia o decizie privind cea mai bună cale de proiectare a unei baze de date relaţionale precum şi calea optimă de utilizare a ei, pornind de la proprietăţile teoretice ale modelului de organizare a datelor folosit; pe aceste proprietăţi teoretice se bazează şi metodele de proiectare a sistemelor informatice ce utilizează baze de date relaţionale;

- deşi iniţial el a fost considerat doar un instrument teoretic pentru studiul proprietăţilor bazelor de date, pe măsura dezvoltării accelerate a performanţelor echipamentelor de calcul electronic s-a constatat că modelul relaţional poate fi implementat ca o soluţie viabilă de organizare a datelor şi de proiectare a unui SGBD corespunzător; acest model oferă o manieră simplă de formalizare a structurii bazei de date şi un sistem de reguli clare privind modul de organizare a datelor în baza de date;

- operarea asupra datelor din baza de date se realizează prin intermediul operaţiilor interne mulţimii relaţiilor; acest lucru face posibilă formalizarea matematică a acestor operaţii, implementarea lor în funcţiile SGBD şi gestionarea lor automată, sub controlul componentelor specializate ale SGBD (motorul SGBD); în felul acesta este posibilă standardizarea şi optimizarea operaţiilor de acces la datele din baza de date relaţională, modelul relaţional al bazei de date asigurând în totalitate independenţa fizică a datelor din baza de date;

- dezvoltarea unor limbaje de manevrare a datelor neprocedurale, care implementează setul de operaţii interne ale modelului matematic prin intermediul unor cereri ce pot fi formulate descriptiv şi nu procedural, a permis deschiderea SGBD relaţionale către categoria utilizatorilor

1 vezi subcapitolul următor

Page 36: baze_date

36

neinformaticieni, fapt pentru care majoritatea SGBD-urilor comerciale dezvoltate în ultimii ani se bazează pe modelul de date relaţional;

- analiza teoretică a modului de organizare şi a proprietăţilor bazei de date relaţionale, pornind de la un model fundamentat matematic, garantează calitatea algoritmilor implementaţi în definirea modelului de organizare a datelor în bazele de date relaţionale şi în generarea componentelor de gestiune a datelor din SGBD-ul relaţional;

- SGBD-ul relaţional a putut să fie dezvoltat unitar, ca un sistem independent de platforma de calcul pe care funcţionează, pornind de la conceptele şi modelele matematice folosite; acest lucru a permis dezvoltarea de variante de SGBD-uri portabile precum şi a tehnicilor de conectare prin date a bazelor de date relaţionale gestionate de SGBD-uri diferite (interconectivitatea aplicaţiilor dezvoltate pe baze de date relaţionale).

Deşi criticat pentru unele imperfecţiuni ale sale şi preluat cu destulă dificultate la început, modelul relaţional s-a impus în faţa celor anterioare (ierarhic şi reţea) fiind adoptat în anii '80 de majoritatea cercetătorilor şi programatorilor din domeniu, ca cel mai bun model disponibil la acea vreme pentru baze de date. Această utilizare pe scară largă a modelului relaţional se menţine încă şi se datorează, în primul rând, proprietăţilor sale principale:

- simplitatea definirii sale, dublată de o mare rigurozitate din punct de vedere matematic;

- independenţa faţă de sistemul de calcul, fapt care a permis o mare răspândire şi o rapidă dezvoltare a variantelor sale;

- deschiderea accentuată către utilizatorii neinformaticieni, inclusiv prin mijloacele mult îmbunătăţite de asigurare a consistenţei, integrităţii şi siguranţei bazei de date.

Simplitatea modelului constă în faptul că este uşor de înţeles atât de specialişti cât şi de utilizatori. Datele şi legăturile dintre date sunt reprezentate explicit utilizând o structură logică ce poartă numele de relaţie.

Independenţa faţă de sistemul de calcul constă tocmai în definirea sistemului relaţional pornind de la abstractizarea matematică ce a făcut ca acest sistem să fie mai întâi fundamentat teoretic, independent de implementările particulare ulterioare.

Accesibilitatea în faţa utilizatorilor neinformaticieni este asigurată, în primul rând, de folosirea limbajelor de interogare, care sunt limbaje neprocedurale, descriptive, apropiate de modalitatea naturală de formulare a unei cereri.

În modelul relaţional datele din baza de date sunt organizate în relaţii. Noţiunea de relaţie se defineşte matematic drept o submulţime a produsului cartezian a unei liste finite de mulţimi, numite domenii. Un element al relaţiei, numit tuplu, este definit, conform definiţiei produsului cartezian de mulţimi, ca un set ordonat de elemente aparţinând domeniilor. Numărul domeniilor, care nu trebuie să fie neapărat distincte, defineşte aritatea sau gradul relaţiei. În cadrul unei relaţii, un domeniu se identifică printr-un nume (numit atribut şi notat cu A) şi se particularizează prin setul de valori ale acestui atribut (a1, a2, a3, …).

Page 37: baze_date

37

Mulţimea tuturor atributelor unei relaţii R defineşte schema relaţiei care se notează cu R(A1,A2,…,An). Cu un exces de notaţie se poate simboliza la fel atât relaţia cât şi schema acestei relaţii, ceea ce pune în evidenţă numele relaţiei, aritatea ei (n în exemplul dat) şi mulţimea atributelor sale.

Prin urmare, o relaţie de aritate n este o mulţime de tupluri de câte n elemente fiecare, în care fiecare element al unui tuplu aparţine, respectiv, câte unuia dintre cele n domenii şi reprezintă o valoare a atributului care desemnează acel domeniu. Cum tuplurile sunt elemente ale unei mulţimi, din proprietăţile unei mulţimi rezultă următoarele proprietăţi ale tuplurilor unei relaţii:

- nu contează ordinea de apariţie a tuplurilor în relaţie; bazat pe această proprietate, ordinea tuplurilor în relaţie poate fi modificată pentru a obţine o reprezentare convenabilă a relaţiei;

- două tupluri diferite ale relaţiei trebuie să difere între ele; în consecinţă, un tuplu al unei relaţii se poate identifica prin conţinutul său (valorile pe care le înregistrează, pentru toate atributele relaţiei); această proprietate se află la originea conceptului de cheie a unei relaţii.

O relaţie mai poate fi definită şi cu ajutorul funcţiilor. Se numeşte relaţie mulţimea funcţiilor diferite, definite fiecare pe mulţimea atributelor şi cu valori în mulţimea determinată de reuniunea domeniilor, astfel încât pentru fiecare funcţie valoarea funcţiei pentru un atribut să aparţină domeniului definit de atributul respectiv. Din definiţia cu funcţii a relaţiei rezultă că nu contează ordinea în care apar atributele relaţiei ci contează numai ca această ordine să fie aceeaşi pentru toate funcţiile care definesc relaţia. Pentru a realiza o corespondenţă între cele două definiţii ale relaţiei, unui tuplu al relaţiei din definiţia cu mulţimi îi corespunde mulţimea valorilor unei funcţii din definiţia cu funcţii a relaţiei, cu condiţia ca ordinea atributelor să fie aceeaşi în relaţiile descrise de ambele definiţii.

Se numeşte cheie a unei relaţii atributul sau mulţimea de atribute ale relaţiei ale căror valori la nivelul unui tuplu identifică unic acel tuplu în cadrul relaţiei şi care nu include o submulţime proprie (inclusă strict) de atribute cu aceeaşi proprietate. Din definiţia cheii unei relaţii rezultă că prin înlăturarea oricărui atribut din cheie setul de atribute rămas nu mai are proprietatea de identificare unică a tuplului relaţiei; în consecinţă, este necesar ca fiecare atribut al cheii să aibă atribuită o valoare în orice tuplu, pentru ca valoarea cheii să permită identificarea unică a fiecărui tuplu. În legătură cu cheia unei relaţii se fac următoarele observaţii:

- orice relaţie are cel puţin o cheie; la limită, cheia este formată din toate atributele relaţiei;

- în general, pentru o relaţie se identifică mai multe chei ale relaţiei; acestea se numesc chei candidat;

- dintre toate cheile unei relaţii se alege una singură, de obicei cea care conţine numărul minim de atribute, şi se desemnează drept cheie primară a relaţiei; celelalte chei candidat se numesc chei alternante;

- cheia primară este folosită pentru identificarea, în mod unic, a fiecărui tuplu al relaţiei;

- cheia unei relaţii are un caracter atomic, adică ea trebuie abordată integral: sau se atribuie valori tuturor atributelor cheii şi atunci ea poate identifica

Page 38: baze_date

38

un tuplu din relaţie, sau toate atributele au valoare nedeterminată şi cheia nu poate referi nici un tuplu.

Modelul relaţional defineşte o structură de date organizate în relaţii, unde o relaţie corespunde unui grup de entităţi omogene (obiecte ale lumii înconjurătoare având aceleaşi proprietăţi) sau unui set unitar de legături între entităţi. Mulţimea relaţiilor formează baza de date relaţională iar mulţimea schemelor relaţiilor defineşte schema bazei de date relaţionale.

De exemplu, datele referitoare la exemplarele consultate de cititorii unei biblioteci, în toate sălile de lectură, pot fi memorate în relaţiile definite de următoarele scheme de relaţie:

Cititor(Nr-leg, CNP, nume, prenume, adresă, telefon) Exemplar(Cod_ex, Cota, preţ) Carte(Cota, ISBN, titlu, autori) Sala( Număr_sală, tip, capacitate) Consultă(Nr-leg, Cod_ex, Cota, Număr_sală, data, ora, stare)

Relaţiile Cititor, Sala, Carte şi Exemplar definesc seturile corespunzătoare de

entităţi omogene. Relaţia Consultă defineşte legătura dintre relaţiile corespunzătoare entităţilor Cititor, Exemplar şi Sala. Trebuie spus că pentru stabilirea corectă a relaţiilor şi a cheilor acestora este obligatorie precizarea semanticii atributelor şi a legăturilor logice dintre atribute.

O clasificare a regulilor de integritate ale bazei de date are în vedere importanţa lor pentru asigurarea consistenţei bazei de date; din acest punct de vedere se identifică setul minimal de reguli de integritate. De exemplu, în cazul bazelor de date relaţionale, regulile de integritate minimale sunt:

- regula unicităţii cheii: valoarea cheii primare pentru fiecare înregistrare a unei tabele a bazei de date trebuie să fie unică;

- regula entităţii: toate câmpurile ce fac parte din cheia primară a unei tabele trebuie să aibă atribuite valori în orice înregistrare din tabelă;

- regula integrităţii referenţiale: orice valoare atribuită unei chei străine, într-o tabelă, trebuie să se regăsească în tabela în care cheia respectivă este cheie primară1.

În fiecare relaţie se stabilesc cheile candidat şi se desemnează cheia primară a relaţiei; în legătură cu cheia primară a unei relaţii se fac următoarele observaţii:

- cheia primară diferă de cheile alternante numai din punct de vedere operaţional: cheia primară este folosită de SGBD pentru identificarea unică a tuplurilor unei relaţii şi pentru operaţiile de căutare în cadrul unei relaţii din baza de date;

- cheia primară este stabilită de proiectantul bazei de date şi este comunicată SGBD la generarea bazei de date, de exemplu prin intermediul LDD;

1 Velicanu M.,Bodea C.,Lungu I.,Ioniţă C.,Bădescu G. - "Sisteme de gestiune a bazelor de date", Editura Petrion, Bucureşti, 2000

Page 39: baze_date

39

- cheia primară este folosită pentru identificarea, în mod unic, a fiecărui tuplu al relaţiei; în acest scop, asupra cheii primare trebuie impuse ca restricţii regula unicităţii cheii şi regula entităţii; restricţia privind unicitatea valorii cheii primare la nivelul relaţiei semnifică faptul că nu este permis ca într-o relaţie să existe două tupluri având aceeaşi valoare pentru atributele cheii primare; regula entităţii impune restricţia privind neacceptarea valorilor nedefinite pentru atributele cheii primare în nici un tuplu al relaţiei;

- odată definită ca şi cheie primară, SGBD verifică respectarea restricţiei de unicitate a cheii şi a regulii entităţii de către această cheie;

- prin convenţie, în modelul de descriere a relaţiilor, cheile primare sunt subliniate.

Se defineşte drept cheie străină a unei relaţii mulţimea atributelor relaţiei care au proprietatea că domeniile pe care le definesc se regăsesc în altă relaţie, ca domenii pe care este definită cheia primară a relaţiei respective. Prin intermediul cheilor străine se realizează definirea legăturilor logice dintre perechi de relaţii, într-o bază de date relaţională. În acest scop, cheia străină trebuie să îndeplinească următoarele restricţii:

- nu există două tupluri ale unei relaţii care să difere numai prin valoarea cheii străine

- restricţia referenţială, care cere ca în cadrul fiecărui tuplu al relaţiei în care apare, cheia străină să aibă: fie valoare nedeterminată, fie valoarea cheii primare a unui tuplu din relaţia de care este legată logic prin această cheie.

Pentru a asigura consistenţa bazei de date relaţionale, SGBD trebuie să poată asigura respectarea restricţiei referenţiale.

În modelul relaţional legăturile dintre relaţii se pot defini în două moduri: - prin propagarea cheilor de la o relaţie la alta, în cazul unor legături

binare de tip unu-la-unu sau unu-la-mai-mulţi; - prin definirea unei noi relaţii, în cazul unor legături binare de tip mai-

mulţi-la-mai-mulţi sau în cazul unor legături care implică mai mult de două relaţii.

În cazul unei legături binare de tip unu-la-unu, unui tuplu din prima relaţie îi poate corespunde un singur tuplu din a doua relaţie. În cazul unei legături binare de tip unu-la-mai-mulţi, unui tuplu din prima relaţie îi pot corespunde mai multe tupluri din a doua relaţie. Tuplul din prima relaţie se identifică prin cheia primară a acestei relaţii. Definirea legăturii logice prin propagarea cheii primare se realizează prin adăugarea, în a doua relaţie, a atributelor cheii primare din prima relaţie, definind astfel în a doua relaţie o cheie străină care corespunde cheii primare din prima relaţie. Dacă se impune restricţia referenţială cheii străine, atunci se poate identifica orice legătură logică între un tuplu din prima relaţie (tuplu referit prin cheia primară) şi tupluri din a doua relaţie (tupluri care referă cheia primară prin intermediul valorii cheii străine). Atributele prin care se stabileşte legătura între cele două relaţii aparţin unor domenii compatibile, adică domenii echivalente semantic şi ale căror mulţimi de valori nu sunt disjuncte. De exemplu, legătura

Page 40: baze_date

40

unu-la-mai-mulţi dintre relaţia Cititor şi relaţia Exemplar, cu privire la cărţile împrumutate de fiecare cititor la un moment dat, se defineşte prin intermediul cheii primare din relaţia Cititor care devine cheie străină în relaţia Exemplar, conform următoarelor scheme de relaţie:

Cititor(Nr-leg, CNP, nume, prenume, adresă, telefon) Exemplar(Cod_ex, Cota, preţ, Nr-leg, data_i)

Se pot determina cărţile împrumutate de un cititor prin selectarea din relaţia

Exemplar a tuturor tuplurilor pentru care valoarea atributului Nr_leg este egală cu valoarea Nr_leg a cititorului. Se poate determina şi data la care a fost împrumutat fiecare exemplar, din valoarea atributului data_i al relaţiei Exemplar. Modelul definit permite evidenţa tuturor exemplarelor împrumutate, fără să se memoreze şi istoricul acestor împrumuturi. Invers, legătura unu-la-mai-mulţi dintre relaţia Exemplar şi relaţia Cititor cu privire la toţi cititorii care au împrumutat o carte se defineşte prin intermediul cheii primare din relaţia Exemplar care devine cheie străină în relaţia Cititor, conform următoarelor scheme de relaţie:

Cititor(Nr_leg, CNP, nume, prenume, adresă, telefon, Cod_ex, Cota, data_i) Exemplar(Cod_ex, Cota, preţ)

Se pot determina toţi cititorii care au împrumutat o carte, prin selectarea din

relaţia Cititor a tuturor tuplurilor pentru care valoarea atributelor Cod_ex şi Cota sunt egale fiecare cu valoarea ce identifică unic cartea dorită. Se observă că, pentru a putea preciza data când cititorul a împrumutat exemplarul, trebuie adăugat în relaţia Cititor atributul data_i. În această variantă, în cazul unui cititor care împrumută de mai multe ori acelaşi exemplar se va memora numai data ultimului împrumut.

Legătura reflexivă se defineşte ca legătura logică între tupluri ale aceleiaşi relaţii. Acest tip de legătură poate fi tratată ca un caz particular al legăturii binare, prin introducerea, încă o dată, în schema relaţiei a atributelor care definesc cheia primară a relaţiei, de această dată pentru definirea cheii străine. Legătura reflexivă se modelează astfel: cheia străină a relaţiei este cheia tuplului care referă iar cheia primară a relaţiei este cheia tuplului referit. Şi în acest caz, cheia străină trebuie să respecte restricţia referenţială. De exemplu, legătura dintre bibliotecarul şef de secţie şi bibliotecarii subordonaţi se implementează prin relaţia:

Bibliotecar(Marca, nume, prenume, marca_c)

Se pot determina toţi subordonaţii unui bibliotecar prin selectarea din relaţia

Bibliotecar a tuplurilor pentru care atributul marca_c are valoarea egală cu valoarea mărcii bibliotecarului considerat. Marca_c este cheie străină în relaţia Bibliotecar şi, prin intermediul ei, se modelează legătura reflexivă. Restricţia referenţială se aplică astfel: în cazul în care un bibliotecar nu este subordonat nimănui, atributul marca_c corespunzător nu va avea atribuită nici o valoare. În caz contrar, valoarea

Page 41: baze_date

41

atributului marca_c trebuie să fie egală cu una dintre valorile atributului Marca din relaţia Bibliotecar.

Legătura de tip mai-mulţi-la-mai-mulţi dintre două relaţii nu se mai poate defini prin metoda propagării cheilor ci se defineşte prin intermediul unei noi relaţii. Prin intermediul acestei noi relaţii se modelează, practic, două relaţii de tip unu-la-mai-mulţi care se tratează împreună, adică noua relaţie trebuie să permită identificarea fiecărei perechi de legături unu-la-mai-mulţi care defineşte câte o legătură mai-mulţi-la-mai-mulţi. În acest scop, noua relaţie trebuie să conţină toate atributele corespunzătoare cheilor primare ale celor două relaţii, atribute care determină cheia primară a noii relaţii. De exemplu, legătura de tip mai-mulţi-la-mai-mulţi dintre relaţia Cititor şi relaţia Exemplar care ilustrează faptul că un cititor poate imprumuta la un moment dat mai multe exemplare şi că un exemplar poate fi împrumutat, în timp, la mai mulţi cititori, se descrie prin definirea noii relaţii Împrumută, conform următoarelor scheme de relaţie:

Cititor(Nr_leg, CNP, nume, prenume, adresă, telefon) Exemplar(Cod_ex, Cota, preţ) Împrumută(Nr_leg, Cod_ex, Cota,data_i)

Se pot determina toţi cititorii care au împrumutat un exemplar, prin selectarea

din relaţia Împrumută a tuplurilor care au valoarea dorită pentru atributul Cod_ex şi pentru atributul Cota. Se observă că în acest caz se poate preciza, cu privire la fiecare cititor, data la care a împrumutat exemplarul. Se pot determina toate cărţile împrumutate de un cititor, prin selectarea din relaţia Împrumută a tuplurilor în care valoarea atributului Nr_leg este egală cu valoarea Nr_leg a cititorului. În acest caz se poate preciza data împrumutului fiecărui exemplar. Nici în acest exemplu nu este modelat cazul în care un cititor împrumută de mai multe ori acelaşi exemplar. În cazul în care cele două relaţii au atribute comune în cheile lor primare, aceste atribute participă de două ori la formarea cheii primare a noii relaţii, câte o dată pentru fiecare dintre cheile primare din care provin.

Legăturile de ordin mai mare decât doi pot fi modelate prin intermediul unei noi relaţii. De exemplu, o legătură de ordin n > 2 poate fi privită ca un set de n legături binare tratate unitar, prin intermediul unei noi relaţii, a cărei cheie primară se obţine prin compunerea cheilor primare ale tuturor celor n relaţii. În acest scop, noua relaţie trebuie să conţină atributele tuturor cheilor primare ale celor n relaţii, atribute care alcătuiesc cheia primară a noii relaţii. În cazul în care, între cele n relaţii, există unele care au atribute comune în cheile lor primare, aceste atribute participă la formarea cheii primare a noii relaţii de un număr de ori egal cu numărul cheilor primare în alcătuirea cărora intră. De exemplu, datele referitoare la exemplarele consultate de cititorii bibliotecii în sălile de lectură pot fi obţinute din relaţiile definite de următoarele scheme de relaţie:

Cititor(Nr_leg, CNP, nume, prenume, adresă, telefon) Exemplar(Cod_ex, Cota, preţ) Sala( Număr_sală, tip, capacitate)

Page 42: baze_date

42

Consultă(Nr_leg, Cod_ex, Cota, Număr_sală, data, ora) Se poate determina ce cititori se află într-o sală, la un moment dat, prin

selectarea din relaţia Consultă a tuplurilor în care valoarea atributului Număr_sală este egală cu numărul sălii dorite şi în care valorile atributelor data şi ora sunt cele dorite. Tuplurile selectate conţin identificatorul pentru toţi cititorii şi toate exemplarele consultate de fiecare cititor, în acea sală, în momentul considerat. Pentru a determina toate exemplarele consultate de un anumit cititor, într-o sală, se selectează tuplurile din relaţia Consultă care au atributul Nr_leg egal cu valoarea Nr_leg a cititorului şi valoarea atributului Număr_sală egală cu numărul sălii dorite; se observă că se obţine, pentru fiecare exemplar consultat de cititor, data şi ora când au fost consultate ultima dată.

În concluzie, se poate spune că o bază de date relaţională reprezintă o mulţime de relaţii semantic legate între ele, două câte două, prin seturi de atribute comune ce definesc cheia primară, respectiv cheia străină, pentru fiecare pereche de relaţii. Într-o bază de date relaţională, o relaţie se poate reprezenta printr-un tabel, în care:

- fiecare linie (rând) reprezintă un tuplu care pentru o relaţie n-ară este un ansamblu de n elemente;

- fiecare coloană reprezintă un domeniu, numărul de domenii ale relaţiei determinând aritatea sau gradul relaţiei;

- sunt respectate următoarele reguli: o fiecare rând al tabelului trebuie să fie diferit de celelalte

(tupluri distincte); o ordinea rândurilor în tabel nu este predefinită şi poate fi

modificată; o coloanele tabelului sunt identificate prin nume distincte

reprezentând atributele relaţiei; o pentru fiecare coloană a tabelului, realizările sunt de

acelaşi fel, constituind un domeniu; o nu contează ordinea de apariţie a coloanelor în tabel; o orice tuplu al relaţiei este identificat unic prin intermediul

valorii unui atribut sau a unei combinaţii de atribute care formează cheia primară pentru relaţia definită de tabelă.

Definirea modelului schemei conceptuale pentru o bază de date relaţională presupune definirea schemei bazei de date, formată din schemele tuturor relaţiilor care alcătuiesc baza de date (care includ şi definirea legăturilor logice dintre aceste relaţii) şi a restricţiilor care definesc regulile de integritate ale bazei de date. Un model relaţional de baze de date se caracterizează prin trei elemente principale: 1. structura datelor, care presupune definirea unor domenii şi a relaţiilor n-are; 2. integritatea datelor, prin impunerea unor restricţii privitoare la valorile ce pot fi

înregistrate într-un tuplu şi într-o relaţie; 3. corelarea datelor, prin precizarea legăturilor logice care acţionează asupra

datelor şi a naturii acestor legături.

Page 43: baze_date

43

3.3.2. Operatorii relaţionali Pe mulţimea relaţiilor, în accepţiune matematică, se definesc operaţii, prin

intermediul unor operatori interni acestei mulţimi. Se numeşte operator intern pentru o mulţime operatorul ai cărui operanzi aparţin mulţimii respective, rezultatul furnizat fiind tot din mulţime. Pentru mulţimea relaţiilor, operatorii interni se numesc operatori relaţionali.

Aceste operaţii sunt folosite pentru formalizarea limbajului de cereri al SGBDR. Ele sunt implementate, integral sau parţial, în funcţiile de manevrare a datelor ale SGBDR şi sunt oferite utilizatorilor bazei de date relaţionale prin intermediul comenzilor limbajului de manevrare a datelor sau a limbajului de interogare ale SGBDR.

Operatorii relaţionali ce stau la baza limbajelor de manevrare a datelor din bazele de date relaţionale se împart în două categorii, după modul în care sunt definiţi: de bază şi derivaţi. În funcţie de categoria de operatori relaţionali pe care îi utilizează, limbajele de cerere pentru bazele de date relaţionale pot fi: limbaje bazate pe algebra relaţională şi limbaje bazate pe calculul predicatelor.

În cadrul algebrei relaţionale, definite pe mulţimea relaţiilor cu un număr finit de tupluri, se definesc un set de operaţii de bază, realizate cu operatori relaţionali numiţi operatori de bază. Pornind de la operaţiile de bază, pot fi definite şi alte operaţii, numite operaţii derivate.

Limbajul de manevrare a datelor bazat pe operaţiile algebrei relaţionale este un limbaj procedural. O cerere de consultare a bazei de date se transformă într-o succesiune de operaţii ale algebrei relaţionale care se aplică relaţiilor din baza de date. Fiind operaţii interne, rezultatul furnizat de fiecare operaţie este tot o relaţie, fapt care permite înlănţuirea acestor operaţii.

Se numeşte limbaj complet un limbaj de manevrare a datelor care implementează tot setul operatorilor de bază din algebra relaţională. Operaţiile de bază definite în algebra relaţională sunt:

1. Reuniunea relaţiilor. 2. Diferenţa relaţiilor. 3. Produsul cartezian al relaţiilor. 4. Proiecţia unei relaţii. 5. Selecţia unei relaţii.

Operaţiile derivate din operaţiile de bază sunt: 1. Intersecţia relaţiilor. 2. Câtul relaţiilor. 3. Uniunea relaţiilor. 4. Uniunea naturală a relaţiilor. 5. Uniunea externă a relaţiilor.

Reuniunea se defineşte între două relaţii care au aceeaşi schemă definită pentru

aceleaşi domenii. Rezultatul reuniunii celor două relaţii este o relaţie cu aceeaşi schemă, definită pentru aceleaşi domenii, care conţine toate tuplurile celor două

Page 44: baze_date

44

relaţii, considerate o singură dată. Schema reuniunii relaţiilor R(A1,A2,…,An) şi S(A1,A2,…,An) este: (R U S)(A1,A2,…,An). Dacă se consideră relaţiile R şi S cu aceeaşi schemă R(vocale, consoane, cifre), S(vocale, consoane, cifre), rezultatul reuniunii R U S va fi următorul:

a x 4a x 4 e f 2 e y 6e y 6 ∪ o h 5 i z 8i z 8 e f 2

o h 5

=

Diferenţa se defineşte între două relaţii care au aceeaşi schemă definită pentru aceleaşi domenii. Rezultatul diferenţei celor două relaţii este o relaţie cu aceeaşi schemă, definită pentru aceleaşi domenii, care conţine toate tuplurile din prima relaţie ce nu aparţin celei de-a doua relaţii. Schema diferenţei relaţiilor R(A1,A2,…,An) şi S(A1,A2,…,An) este (R \ S)(A1,A2,…,An). Spre exemplificare se consideră relaţiile R şi S cu aceeaşi schemă, R(vocale, consoane, cifre), S(vocale, consoane, cifre); rezultatul diferenţei R \ S va fi:

a x 4

\e y 6 a x 4

e y 6h 5 i z 8

i z 8o

=

Produsul cartezian se defineşte între două relaţii R(A1,A2,…,Ar), de aritate r şi

S(B1,B2,…,Bs), de aritate s, care au schema definită pentru domenii oarecare. Rezultatul produsului cartezian al celor două relaţii este o relaţie de aritate r+s care conţine toate tuplurile ce pot fi formate prin concatenarea unui tuplu din R cu câte un tuplu din S. Schema produsului cartezian dintre relaţiile R(A1,A2,…,Ar) şi S(B1,B2,…,Bs) este (RxS)(A1,A2,…,Ar,B1,B2,…,Bs). Pentru exemplificare, fie relaţiile R(vocale,consoane,cifre) şi S(par,impar); produsul cartezian va fi o relaţie cu schema (R x S) (vocale,consoane,cifre, par,impar).

a x 46 3

a x 4 6 3

e y 68 1

e y 6 6 3

i z 8i z 8 6 3a x 4 8 1e y 6 8 1i z 8 8 1

=X

Page 45: baze_date

45

Dacă schemele relaţiilor R şi S au atribute comune, atunci în schema produsului cartezian apar de două ori aceleaşi atribute. Pentru a nu produce confuzii, atributele respective pot fi calificate cu numele relaţiei din care provin sau pot fi redenumite.

Proiecţia se defineşte pentru o relaţie R(A1,A2,…,Ar) de aritate r şi pentru o submulţime de atribute din schema acestei relaţii P={P1,P2,…,Pi} cu i < r şi P ⊂ A pentru A={A1,A2,…,Ar} . Rezultatul proiecţiei relaţiei după această subschemă de atribute este relaţia de aritate i, cu schema P, care conţine toate tuplurile cu proprietatea că provin din tuplurile relaţiei R prin înlăturarea valorilor atributelor din A \ P. Schema relaţiei rezultată prin proiecţia relaţiei R(A1,A2,…,Ar) după atributele din P={P1,P2,…,Pi} este de forma:

(∏P R ) ( P1,P2,…,Pi).

Fie relaţia R(vocale,consoane,cifre) şi mulţimea P={vocale,cifre}. Schema relaţiei rezultate prin proiecţie este (∏P R ) (vocale,cifre), exemplificată astfel:

a x 4 a 4

R= e y 6 , vocale ,cifre(R) = e 6

i z 8 i 8

Selecţia se defineşte pentru o relaţie R(A1,A2,…,Ar) de aritate r şi pentru o

expresie logică e aplicată asupra tuplurilor relaţiei. Rezultatul selecţiei relaţiei R în raport cu această expresie este o relaţie având aceeaşi schemă şi care conţine toate tuplurile din R pentru care expresia e este adevărată. Schema relaţiei rezultate prin selecţia relaţiei R(A1,A2,…,Ar) pentru expresia e este de forma:

(σ eR)(A1,A2,…,Ar).

Expresia e poate fi definită şi pe un subdomeniu al schemei relaţiei. Expresia e se defineşte cu ajutorul operatorilor de comparare sau al celor logici. Pentru relaţia R(vocale,consoane,cifre) şi expresia vocale < consoane1 rezultatul selecţiei este următorul:

1 Compararea caracterelor se va face pe baza valorilor din codul ASCII.

Page 46: baze_date

46

a x 4a x 4

R= e b 6 , vocale <consoane(R) =i m 8

i m 8 Intersecţia se defineşte între două relaţii care au aceeaşi schemă definită pentru

aceleaşi domenii. Rezultatul intersecţiei celor două relaţii este o relaţie cu aceeaşi schemă definită pentru aceleaşi domenii care conţine toate tuplurile care aparţin, în acelaşi timp, ambelor relaţii. Schema intersecţiei relaţiilor R(A1,A2,…,An) şi S(A1,A2,…,An) este: (R ∩ S)(A1,A2,…,An). Intersecţia este o operaţie derivată din diferenţă, deoarece: (R ∩ S)(A1,A2,…,An) = (R\(R \ S))(A1,A2,…,An). Dacă se consideră relaţiile R şi S cu aceeaşi schemă R(vocale, consoane, cifre), S(vocale, consoane, cifre), rezultatul intersecţiei R ∩ S va fi următorul:

a x 4e y 6

e y 6 ∩o h 5

e y 6

i z 8=

Câtul se defineşte între două relaţii Q(A1,A2,…,Aq), de aritate q şi

S(B1,B2,…,Bs), de aritate s care îndeplinesc condiţiile: q > s, s ≠ 0 şi schema relaţiei Q include strict schema relaţiei S, adică B ⊂ A, pentru B={B1,B2,…,Bs} şi A={A1,A2,…,Aq}. Rezultatul câtului celor două relaţii este o relaţie de aritate q-s, cu schema definită pentru A \ B, care conţine toate tuplurile de q-s elemente care, completate cu câte un tuplu din S, determină un tuplu din Q. Schema relaţiei obţinute din câtul dintre relaţiile Q(A1,A2,…,Aq) şi S(B1,B2,…,Bs) este de forma: (Q / S)(P1,P2,…,Pq-s), unde, dacă P={ P1,P2,…,Pq-s }, atunci P=A\B. Câtul este operaţia inversă produsului cartezian, în sensul că: (R x S)/R = S şi (R x S)/S = R. Pentru relaţiile Q(vocale,consoane,cifre,par,impar) şi S(vocale,consoane,cifre) câtul Q / S va fi:

a x 4 6 3

a x 46 3

e y 6 6 3

e y 6 =8 1

i z 8 6 3

i z 8a x 4 8 1e y 6 8 1i z 8 8 1

/

σ

Page 47: baze_date

47

Uniunea se defineşte între două relaţii R(A1,A2,…,Ar), de aritate r şi S(B1,B2,…,Bs), de aritate s, pentru condiţia c(i,j). Rezultatul uniunii celor două relaţii este o relaţie de aritate r+s, cu schema definită pentru A U B, unde A={A1,A2,…,Ar} şi B={B1,B2,…,Bs}, care conţine toate tuplurile produsului cartezian al relaţiilor R şi S pentru care este îndeplinită condiţia c(ai,bj), unde ai este valoarea atributului Ai din tuplu şi bj este valoarea atributului Bj din tuplu. Schema relaţiei obţinute prin uniunea dintre relaţiile R(A1,A2,…,Ar) şi S(B1,B2,…,Bs) este de forma:

(R),(||jic

>< S)(A1,A2,…,Ar,B1,B2,…,Bs).

Operaţia de uniune mai este numită join. În cazul în care condiţia c(i,j) este de forma ai=bj, atunci uniunea poartă numele de echiuniune. În cazul în care se consideră proiecţia uniunii, după atributele primei relaţii, atunci operaţia poartă numele de semi-uniune stângă şi schema ei relaţională este de forma:

(R|),(||jic

>< S)(A1,A2,…,Ar).

În cazul în care se consideră proiecţia uniunii, după atributele celei de-a doua relaţii, atunci operaţia poartă numele de semi-uniune dreaptă şi schema ei relaţională este de forma:

(R),(||jic

>< |S)( B1,B2,…,Bs).

Uniunea este o operaţie obţinută prin aplicarea selecţiei pentru expresia e=c(ai,bj) asupra produsului cartezian al relaţiilor R şi S:

(R),(||jic

>< S)(A1,A2,…,Ar,B1,B2,…,Bs)= (σ e (R x S))( A1,A2,…,Ar,B1,B2,…,Bs).

Plecând de la relaţiile R(vocale,consoane,cifre) şi S(par,impar) se obţine

uniunea în doi paşi prin intermediul operaţiilor de bază produs cartezian şi selecţie. Pasul 1. Se face produsul cartezian R(vocale,consoane,cifre) x S(par,impar) = T(vocale,consoane,cifre,par,impar)

Page 48: baze_date

48

a x 46 3

a x 4 6 3

e y 68

=

e y 6 6 3

i z 8

i z 8 6 3

a x 4 8 1

e y 6 8 1

i z 8 8 1

1X

Pasul 2. Se realizează selecţia asupra relaţiei T după condiţia cifre<par1, adică se filtreaza tuplurile relaţiei T conform condiţiei cifre<par:

Rezultatul obţinut este:

a x 46 3

a x 4 6 3

e y 6 ⊗8 1

a x 4 8 1

i z 8

cifre<par

e y 6 8 1

=

Uniunea naturală (natural join) se defineşte între două relaţii R(A1,A2,…,Ar), de aritate r şi S(B1,B2,…,Bs), de aritate s, care au o submulţime de atribute comune

1 Compararea caracterelor se va face pe baza valorilor din codul ASCII.

a x 4 6 3

e y 6 6 3

i z 8 6 3

a x 4 8 1

e y 6 8 1

i z 8 8 1

a x 4 6 3

a x 4 8 1

e y 6 8 1

=parcifre<

σ

Page 49: baze_date

49

în schema lor relaţională. Fie A={A1,A2,…,Ar}, B={B1,B2,…,Bs} şi P=A ∩ B, cu P={P1,P2,…,Pp}, mulţimea atributelor comune celor două relaţii. Uniunea naturală a relaţiilor R şi S este obţinută din mulţimea tuplurilor produsului cartezian dintre R şi S , pentru care atributele comune din cele două relaţii au valori egale, asupra căreia se realizează o proiecţie, după atributele mulţimii (A U B).

Rezultatul uniunii naturale a celor două relaţii este o relaţie de aritate r+s-p, cu schema definită pentru (A U B) = {A'1,A'2,…,A'r+s-p}. Schema relaţiei obţinute prin uniunea naturală dintre relaţiile R(A1,A2,…,Ar) şi S(B1,B2,…,Bs) este de forma:

(R ||>< S)( A'1,A'2,…,A'r+s-p).

Uniunea naturală este o operaţie obţinută prin aplicarea proiecţiei pentru (A U B) asupra selecţiei după valorile egale ale atributelor din P asupra produsului cartezian al relaţiilor R şi S :

(R ||>< S)( A'1,A'2,…,A'r+s-p)= (∏(AUB) (σ e(P) (R x S)))( A'1, …,A'r+s-p).

Pasul 1. Se realizează produsul cartezian R(vocale,consoane,cifre) x S(cifre,par) = T(vocale,consoane,cifre, cifre,par).

a x 46 4

e y 6 ⊗8 2

i z 8

a x 4 6 4

e y 6 6 4

i z 8 6 4

a x 4 8 2

e y 6 8 2

i z 8 8 2

=

Pasul 2. Se determină condiţia pentru selecţie. R = { vocale,consoane,cifre} şi S = {cifre,par} sunt mulţimile atributelor celor două relaţii. Intersecţia lor {vocale,consoane,cifre} ∩ {cifre,par} = {cifre} va furniza atributul după care se va face selecţia. Condiţia pentru selecţie va fi ca valorile pentru atributul cifre din R să fie egale cu valorile pentru atributul cifre din S, notată cu ajutorul operatorului de calificare . (punct) astfel:

Page 50: baze_date

50

R . cifre = S . cifre ,

pentru orice tuplu selectat.

Pasul 3. Se face selecţia asupra produsului cartezian obţinut: T(vocale, consoane, cifre, cifre, par).

Pasul 4. Se realizează proiecţia asupra relaţiei rezultate din selecţia de la pasul 3 după submulţimea de atribute R U S = {vocale,consoane,cifre,par} astfel:

Rezultatul final al operaţiei de uniune naturală va fi:

a x 46 4 e y 6 4

e y 6 ⊗8 2 i z 8 2

i z 8

=

Uniunea externă (outer join) se defineşte între două relaţii R(A1,A2,…,Ar), de aritate r şi S(B1,B2,…,Bs), de aritate s, care au o submulţime de atribute comune în schema lor relaţională. Uniunea externă este o relaţie având aceeaşi schemă cu uniunea naturală a celor două relaţii şi conţine, pe lângă tuplurile uniunii naturale şi tuplurile relaţiilor R sau/şi S pentru care nu este îndeplinită condiţia ca atributele

a x 4 6 4

e y 6 6 4

i z 8 6 4

a x 4 8 2

e y 6 8 2

i z 8 8 2

=e y 6 6 4

i z 8 8 2S.cifreR.cifre=σ

∏ par) cifre, consoane, (vocale,e y 6 4

i z 8 2=

e y 6 6 4

i z 8 8 2

Page 51: baze_date

51

comune din cele două relaţii să aibă valori egale. Tuplurile care se adaugă uniunii naturale sunt selectate după cum urmează: 1. Pentru operaţia de uniune externă stângă (left outer join) se adaugă numai

tuplurile din relaţia R. Se obţine din uniunea naturală, plus tuplurile din prima relaţie care nu au corespondent în a doua.

a x 46 4

e y 6 4

e y 6 |⊗8 2

i z 8 2

i z 8 a x 4 null

=

2. Pentru operaţia de uniune externă dreaptă (right outer join) se adaugă numai

tuplurile din relaţia S. Se obţine din uniunea naturală, plus tuplurile din a doua relaţie care nu au corespondent în prima.

a x 4 6 4 e y 6 4

e y 6 ⊗ | 8 2 i z 8 2

i z 8 7 6 null null 7 6

=

3. Pentru operaţia de uniune externă completă (full outer join) se adaugă şi

tuplurile din relaţia R şi tuplurile din relaţia S. Se obţine din uniunea naturală, plus tuplurile din prima relaţie care nu au corespondent în a doua şi tuplurile din a doua relaţie care nu au corespondent în prima .

a x 4 6 4e y 6 4

e y 6 |⊗| 8 2i z 8 2

i z 8 7 6a x 4 null

null null 7 6

=

A doua categorie de operatori interni pentru mulţimea relaţiilor sunt operatorii oferiţi de calculul relaţional. Calculul relaţional operează asupra relaţiilor prin intermediul operaţiilor specifice calculului predicatelor. Asupra unei relaţii se aplică un predicat (o condiţie) care determină mulţimea tuplelor care definesc relaţia rezultată. Predicatele se referă la proprietăţile pe care trebuie să le îndeplinească elementele bazei de date. În funcţie de natura elementelor asupra cărora se formulează condiţiile, calculul relaţional se împarte în:

Page 52: baze_date

52

- calculul relaţional pe tupluri; - calculul relaţional pe domenii.

O cerere de consultare a bazei de date formulate în termenii calculului relaţional trebuie să realizeze o descriere a rezultatului dorit, prin prisma proprietăţilor elementelor relaţiei implicate. Aceste elemente sunt fie tupluri fie domenii ale relaţiei. Prin natura operaţiilor cu care lucrează, calculul relaţional oferă o modalitate declarativă de formulare a cererilor; de aceea, limbajele de manevrare a datelor care se bazează pe calculul relaţional sunt limbaje neprocedurale. Încă din 1970, Edgar Codd sugera "adoptarea unui model relaţional de organizare a datelor care să permită dezvoltarea unui sub-limbaj universal de gestiune a datelor, care să fie bazat pe calculul predicatelor". Utilitatea unui limbaj "universal" de cerere este motivată de necesitatea dezvoltării de SGBD portabile, precum şi de necesitatea comunicării şi a conectării prin date a diferitelor variante de SGBD. Posibilitatea realizării unui astfel de limbaj pentru accesul la baze de date relaţionale este asigurată de faptul că, prin intermediul operatorilor relaţionali, accesul la baza de date este standardizat şi nu depinde decât de mecanismele de operare cu relaţiile bazei de date prin intermediul acestor operatori. Utilizarea calculului relaţional pentru formularea limbajului de cerere imprimă caracterul neprocedural acestui limbaj, fapt care îi măreşte accesibilitatea chiar şi pentru utilizatorii neinformaticieni.

Calculul relaţional pe tupluri a fost introdus de Edgar Codd. Enunţurile cu care operează sunt expresii definite asupra unui tuplu, folosind atomi şi operatori. Atomii sunt enunţuri cu valoare de adevăr de forma:

- "t este un tuplu al relaţiei R"; - "comp(t[i],u[j])" , unde comp este un operator de comparare (egalitate,

inegalitate, mai mare, mai mic), t şi u sunt tupluri iar t[i] şi u[j] reprezintă elementul i din tuplul t, respectiv elementul j din tuplul u;

- "comp(t[i],c)" , similar cu enunţul precedent, cu c constantă. Expresiile se construiesc iterativ, pornind de la atomi, prin aplicarea operatorilor:

- conectori (şi, sau, non); - cuantificatori (existenţial, universal).

Calculul relaţional pe domenii operează tot cu expresii, dar acestea sunt definite pe domenii; mai precis, utilizează valori ale atributelor ce definesc domeniile. Corespunzător, accepţiunea noţiunii de atom devine:

- "(a1,a2,…,ar) este un tuplu al relaţiei R", în care R este o relaţie de aritate r;

- "comp(ai,bj)", ca la calculul relaţional pe tupluri, dar ai este o valoare a atributului Ai iar bj este o valoare a atributului Bj;

- "comp(ai,c)", ca mai sus, cu c este o constantă. Expresiile se construiesc în aceeaşi manieră, utilizând aceiaşi operatori. Formalizând şi fundamentând aceste operaţii cu un aparat teoretic matematic, se demonstrează că orice expresie din calculul relaţional pe tupluri poate fi

Page 53: baze_date

53

transformată într-o expresie echivalentă din calculul relaţional pe domenii şi într-o expresie echivalentă din algebra relaţională1.

Concluzia este că, pentru a defini un limbaj relaţional de manevrare a datelor, pot fi utilizaţi oricare dintre operatorii relaţionali prezentaţi. Este unul dintre motivele pentru care există astăzi o multitudine de SGBDR şi de limbaje de cerere corespunzătoare lor. Diferenţa se simte, în primul rând, la gradul de accesibilitate al limbajului generat iar mai apoi la nivelul de resurse necesare.

3.3.3. Normalizarea bazelor de date relaţionale Pentru proiectarea unei baze de date relaţionale trebuie definită schema bazei

de date, care este formată din schemele relaţiilor bazei de date. În acest scop, se determină domeniile pe care vor fi definite relaţiile, modul de grupare a lor pentru delimitarea fiecărei relaţii, legăturile logice din interiorul fiecărei relaţii şi dintre relaţii. Schema unei relaţii defineşte numele relaţiei şi mulţimea atributelor acelei relaţii. Prin intermediul schemei unei relaţii se defineşte modul de grupare a datelor în interiorul relaţiei şi se determină regulile care vor guverna relaţia, definind restricţiile la care se supun datele şi legăturile logice dintre datele acelei relaţii. Legăturile logice dintre relaţii sunt definite prin intermediul domeniilor compatibile care determină atributele comune ale relaţiilor. De modul în care sunt grupate domeniile în relaţii depinde complexitatea legăturilor care se definesc între relaţii. Cazurile extreme sunt: definirea unei singure relaţii care include în schema ei atributele tuturor domeniilor identificate sau definirea numărului maxim de relaţii posibile care să permită modelarea legăturilor dintre şi din interiorul fiecărei relaţii. În cazul utilizării unei relaţii prea cuprinzătoare, apar probleme legate de redundanţa datelor, care antrenează apariţia anomaliilor de actualizare a relaţiei (anomalia de adăugare, anomalia de ştergere şi anomalia de modificare). De exemplu, utilizarea relaţiei:

Exemplar(Cod_ex, Cota, preţ, nr_leg, CNP, nume, prenume, adresă, telefon, data)

permite evidenţa tuturor operaţiilor de împrumut curente, realizate de fiecare cititor. Astfel, pentru fiecare exemplar gestionat în bibliotecă, se generează câte un tuplu al relaţiei iar în fiecare tuplu se memorează datele cititorului, de fiecare dată când un cititor împrumută acest exemplar, precizându-se şi data împrumutului. La returnarea exemplarului împrumutat, tuplul corespunzător este actualizat cu data returnării şi sunt şterse datele despre cititorul care a returnat exemplarul. Inconvenientele apar la operaţiile de actualizare a datelor relaţiei:

- se constată, de exemplu, redundanţa datelor relativă la atributele nume şi prenume cititor, a căror valoare se repetă pentru fiecare exemplar de carte împrumutat de acelaşi cititor;

1 Bâscă O. - "Baze de date", Editura ALL, Bucureşti, 1997

Page 54: baze_date

54

- anomalia de adăugare se poate exemplifica prin faptul că nu se poate lua în evidenţă un nou cititor decât dacă acesta împrumută o carte;

- anomalia de ştergere, inversa anomaliei de adăugare, apare atunci când cititorul nu mai are împrumutată nici o carte (la returnarea ultimei cărţi); în tuplul corespunzător sunt înlăturate datele sale personale şi cititorul dispare din relaţie;

- anomalia de modificare se referă, de exemplu, la faptul că modificarea numelui unui cititor ar trebui făcută în toate tuplurile în care apare, pentru menţinerea consistenţei relaţiei.

Se poate reduce redundanţa şi implicit înlătura anomaliile pe care le generase, de exemplu prin definirea următoarelor două relaţii:

Cititor(Nr-leg, CNP, nume, prenume, adresă, telefon) Exemplar(Cod_ex, Cota, preţ, nr_leg, data)

Se constată că redundanţa a fost înlăturată din relaţia Exemplar prin definirea

relaţiei Cititor, care conţine atributele legate de cititor. Inconvenientul care apare acum este că, dacă se doreşte să se cunoască numele tuturor cititorilor care au împrumutat o anumită carte trebuie să se cupleze cele două relaţii, prin intermediul atributului nr_leg. Operaţia de cuplare a două relaţii (natural join) este o operaţie costisitoare, deoarece implică realizarea produsului cartezian al celor două relaţii. Teoretic, schema bazei de date se realizează pornind de la identificarea grupelor de entităţi omogene şi a proprietăţilor lor care determină atributele ce definesc relaţiile respective. În practică este de multe ori dificilă determinarea atributelor care caracterizează fiecare grupă de entităţi şi delimitarea acestor atribute pentru a defini relaţiile care caracterizează entităţile şi relaţiile care descriu legătura dintre entităţi. În plus, în definirea schemei bazei de date trebuie să se ţină cont de rezolvarea următoarei dileme: cu cât numărul relaţiilor este mai mic, cu atât creşte riscul apariţiei redundanţelor şi cu cât numărul relaţiilor este mai mare, cu atât scade posibilitatea înregistrării de redundanţe în baza de date dar devin tot mai costisitoare cererile de consultare a bazei de date care implică accesul la datele din mai multe relaţii, deoarece acestea se realizează utilizând operaţia de cuplare (join) între relaţii.

În concluzie, apare necesitatea definirii unei metode de optimizare a schemei bazei de date relaţionale, pentru înlăturarea redundanţelor şi a anomaliilor pe care le generează acestea dar şi pentru a permite definirea tuturor legăturilor care există în realitate, între grupuri diferite de entităţi. Metoda se numeşte normalizarea relaţiilor din baza de date relaţională şi este un proces iterativ, în care se porneşte de la o schemă a bazei de date, determinată empiric, şi se aplică transformări succesive asupra schemelor de relaţie care o alcătuiesc.

Normalizarea se bazează pe formalizarea legăturilor logice, numite dependenţe, ce există între atributele unei relaţii şi pe analiza acestor dependenţe. Dependenţele care se definesc între atributele unei relaţii au fost împărţite în trei categorii:

Page 55: baze_date

55

- dependenţe funcţionale; - dependenţe multivaloare; - dependenţe de uniune.

3.3.3.1. Formele normale ale unei baze de date relaţionale Existenţa, în cadrul relaţiilor, a dependenţelor funcţionale este naturală. De

exemplu, dependenţa funcţională a fiecărui atribut faţă de cheia primară a relaţiei. Dependenţele (de orice fel) reprezintă constrângeri semantice referitoare la realitatea modelată. Ele constituie informaţii suplimentare asociate relaţiei, informaţii care nu pot fi înglobate în reprezentarea relaţiei prin metodele utilizate până acum (atribute, restricţii de integritate, chei, etc.). Dependenţele nu pot fi demonstrate, ele pot fi doar verificate prin confruntare cu realitatea şi pot fi considerate ca ipoteze de lucru privind realitatea modelată având implicaţii în modelarea corectă a realităţii. Stabilirea dependenţelor este o decizie de proiectare, la fel ca stabilirea relaţiilor şi a atributelor din baza de date. Stabilirea corectă a dependenţelor determină calitatea modelului obţinut. Dependenţele definite pentru schema unei relaţii pot fi considerate constrângeri de integritate a datelor pentru relaţia respectivă iar implementarea lor în baza de date relaţională se face prin normalizarea relaţiei respective.

Normalizarea relaţiilor din baza de date este procesul prin care se determină schema optimă a bazei de date, din punctul de vedere al modelării legăturilor existente în cadrul relaţiilor şi între relaţii şi pentru reducerea redundanţei în baza de date. Procesul de normalizare a relaţiilor bazei de date este unul iterativ, de transformare în forme normale succesive, până la atingerea ultimei forme normale. Această transformare se face prin descompunerea câte unei relaţii (nenormalizate) în relaţii echivalente, până când toate relaţiile obţinute sunt normalizate. Se porneşte de la identificarea atributelor relaţiei care se normalizează şi a dependenţelor care există între aceste atribute; în funcţie de natura dependenţelor identificate se determină forma normală în care se încadrează relaţia; prin aplicarea regulilor de normalizare, se transformă relaţia iniţială într-un set de relaţii echivalente, care aparţin unei forme normale superioare, şamd.

Edgar Codd a definit primele trei forme normale. Acestea pot fi determinate pe baza dependenţelor funcţionale din cadrul relaţiei. A treia formă normală a fost ulterior redefinită de Codd şi Boyce.

Ultimele două forme normale sunt definite de Fagin. A patra formă normală se defineşte pe baza dependenţelor multivaloare iar a cincea formă normală, pe baza dependenţelor de uniune.

Formele normale impun condiţii din ce în ce mai restrictive asupra relaţiilor. O relaţie aflată pe un anumit nivel de normalizare satisface restricţiile impuse de toate formele normale de pe nivelurile inferioare şi din acest motiv, formele normale se definesc în secvenţa dată de nivelul lor.

Page 56: baze_date

56

3.4. Modelele pentru proiectarea unei baze de date

Proiectarea unei baze de date se abordează în mod unitar, pornind de la universul real care se modelează, în scopul definirii schemei conceptuale a datelor. În acest scop este necesară identificarea datelor care vor forma baza de date şi a caracteristicilor definitorii ale acestor date. Se porneşte de la caracteristicile intrinseci ale datelor şi se determină legăturile logice dintre ele, conform fenomenelor reale şi nu după necesităţile de prelucrare a datelor în sistemul informatic.

În figura 4-8 este reprezentat modelul de proiectare a unei baze de date, incluzând paşii care conduc la realizarea celor trei scheme, intercorelate logic, ce definesc în final baza de date. Pentru a realiza o abordare unitară şi o proiectare eficientă a bazei de date, se folosesc metode de proiectare care utilizează ca instrumente de lucru modelele de date. De obicei se utilizează metode unitare de proiectare a întregului sistem informatic, în cadrul cărora sunt definite metode pentru proiectarea structurilor de date din sistemul informatic.

Universul real Utilizatori

Baza de cunoştinţe

1. Analiză

Schema conceptuală

2. Abstractizare

Schema externă

4. Corelare

3. Formulare cerinţe 5. Confruntare

Schema internă 6. Generare

7. Implementare

Figura 3-8. Proiectarea unei baze de date

Proiectarea unei baze de date este activitatea care se referă la definirea

structurii bazei de date. De calitatea acestei etape depinde corectitudinea şi completitudinea datelor din baza de date, precum şi fiabilitatea şi eficienţa în exploatare a bazei de date. Activitatea de proiectare a unei baze de date include:

- etapa de modelare a structurii bazei de date; - etapa de definire a bazei de date, utilizând LDD al SGBD ales;

Page 57: baze_date

57

- etapa de încărcare a datelor de test şi de testare a corectitudinii structurii definite;

- etapa de menţinere a bazei de date pe perioada exploatării ei, etapă care include rezolvarea eventualelor erori apărute în exploatarea bazei de date, îmbunătăţirea performanţelor de exploatare a bazei de date, dezvoltări ulterioare, etc.

Chiar şi în condiţiile organizării datelor într-o bază de date şi a utilizării unui SGBD pentru gestionarea datelor, fapt care determină independenţa logică a datelor faţă de programele de aplicaţie, este necesară corelarea structurilor de date cu algoritmii de prelucrare care vor fi utilizaţi de aplicaţii; de exemplu:

- numărul şi conţinutul cheilor de indexare ale tabelelor de date se determină şi în funcţie de prelucrările care vor fi realizate asupra datelor

- modul de utilizare a datelor determină operaţiile permise asupra datelor şi, mai ales, operaţiile nepermise, care definesc constrângerile pornind de la care se generează regulile de integritate a bazei de date.

Această corelare se face în faza de definire a modelelor de date şi a modelelor de prelucrări, care vor descrie schematic structura viitoarei aplicaţii informatice. În plus, modelul schemei conceptuale a bazei de date trebuie să ţină seama de schemele externe ale bazei de date, specifice diferitelor aplicaţii cu baza de date. Procesul de modelare a bazei de date este unul iterativ, care necesită confruntări repetate şi succesive ale schemei conceptuale a bazei de date cu schemele externe, pe de o parte, şi cu realitatea care se modelează, pe de altă parte. Obiectivul este definirea unei baze de date care să răspundă într-un mod eficient tuturor necesităţilor de date ale aplicaţiilor dezvoltate în jurul ei.

Nivelul conceptual de abstractizare a datelor în baza de date trebuie să îndeplinească următoarele obiective:

- să definească imaginea globală a datelor din sistemul informaţional modelat;

- să asigure satisfacerea tuturor cerinţelor informaţionale ale sistemului informatic proiectat;

- să asigure independenţa descrierii datelor faţă de nivelul fizic de organizare a bazei de date.

Autonomia fizică a datelor din baza de date este asigurată tot de SGBD, datorită funcţiilor sale privind gestionarea accesului la datele din baza de date. În acest scop SGBD este proiectat să opereze asupra unui anumit model teoretic de organizare a datelor în baza de date, model care determină modul de organizare fizică a datelor şi modul de acces la datele din baza de date. Acest model teoretic defineşte tipul de SGBD utilizat. De exemplu, un SGBD relaţional va opera logic cu operaţiile algebrei relaţionale asupra unor date organizate în relaţii. Pe baza modelului teoretic de operare asupra relaţiilor se dezvoltă componenta care gestionează accesul fizic la date, ce aparţine motorului SGBD.

Orice SGBD are la bază un model de organizare şi manevrare a datelor care constituie fundamentul teoretic al construirii acestui SGBD, pentru realizarea

Page 58: baze_date

58

funcţiei de gestionare automată a datelor1. Este necesar deci ca alegerea tipului de model de date utilizat pentru proiectarea bazei de date să fie în concordanţă cu tipul de SGBD care va fi ales pentru gestionarea bazei de date.

Nivelul conceptual se descrie printr-un model de organizare logică a datelor care precizează conţinutul logic al datelor, natura datelor şi legăturile dintre date, la nivelul întregii baze de date.

Un model este un instrument teoretic ce permite o reprezentare a lumii reale adecvată anumitor necesităţi. Mai specific, un model este o formă de reprezentare abstractizată a lumii reale, folosind concepte şi notaţii proprii, pentru a furniza:

- o metodă pentru descrierea formală a realităţii; - un instrument de comunicare (un limbaj comun pentru utilizatorii

modelului). Un model de date trebuie să permită identificarea conţinutului informaţional al

unei colecţii de date privite în ansamblu şi să reprezinte formalizat aceste date, într-o manieră compatibilă cu modul de reprezentare şi cu modul de tratare a datelor într-un sistem de calcul. Fiind vorba de o abstractizare a lumii reale, un model de date se concentrează pe aspectele esenţiale ale sistemului modelat.

3.5. Caracteristici ale sistemelor cu baze de date

Caracteristicile sistemelor informatice în care datele sunt organizate în baze de date se definesc din mai multe puncte de vedere.

Din punctul de vedere al modalităţii de proiectare a sistemului informatic se caracterizează prin faptul că:

- proiectarea se face utilizând metode specifice de proiectare a sistemelor informatice;

- proiectarea bazei de date se realizează unitar, prin abordarea în ansamblu a datelor, pentru a reflecta universul real;

- aplicaţiile se dezvoltă după ce a fost proiectată baza de date; - fiecare aplicaţie foloseşte o parte din datele organizate în baza de date; - pentru dezvoltarea aplicaţiilor se folosesc serviciile oferite de SGBD.

Din perspectiva modului de definire a datelor se constată că: - datele sunt grupate în baza de date după criterii intrinseci, care au în vedere

conţinutul şi legăturile logice dintre date; - fiecare dată este definită o singură dată în baza de date, cu toate

proprietăţile ei. Ca mod de realizare a prelucrărilor asupra datelor se constată următoarele

trăsături comune: - toate prelucrările asupra datelor din baza de date se desfăşoară sub

controlul SGBD; - toate operaţiile de acces la datele din baza de date se realizează prin

intermediul SGBD;

1 Dollinger R. – op.cit.

Page 59: baze_date

59

- prelucrările asupra datelor pot fi condiţionate de legăturile definite explicit între datele din baza de date;

- prelucrările asupra datelor din baza de date se realizează într-o aplicaţie şi efectul lor este reflectat în toate aplicaţiile care utilizează acele date.

Efectele organizării datelor într-o bază de date gestionată de SGBD sunt: - aceleaşi date pot fi valorificate diferit de aplicaţii diferite, pentru că o bază

de date poate oferi în orice moment imagini multiple asupra datelor pe care le memorează;

- datele sunt tratate unitar, prin intermediul funcţiilor de descriere a datelor şi a funcţiilor de acces la date oferite de SGBD;

- descrierea modului de organizare logică a datelor este memorată în afara programelor de aplicaţie, determinând autonomia logică a datelor.

Avantajele utilizării bazelor de date ca mod de organizare a datelor într-un sistem informatic sunt:

- obţinerea unei redundanţe reduse şi controlate a datelor, datorită memorării datelor pentru întregul sistem informatic într-o singură structură de date, capabilă să satisfacă necesităţile informaţionale ale oricărei aplicaţii;

- consistenţa datelor, determinată de faptul că datele sunt corelate logic între ele şi sunt tratate unitar de SGBD, conform acestor corelări logice;

- tratarea unitară a datelor prin intermediul funcţiilor asigurate de SGBD, funcţii care nu depind de aplicaţii ci numai de modul de definire a bazei de date;

- prin instrumentele de consultare a bazei de date oferite de SGBD: - pot fi obţinute imagini multiple asupra datelor din baza de date - baza de date poate fi consultată uşor, chiar şi de neinformaticieni;

- prin instrumentele oferite de SGBD pentru gestionarea datelor din baza de date:

- se poate realiza protecţia datelor faţă de accesul partajat la baza de date: orice utilizator are acces la date prin intermediul dicţionarului de date şi al funcţiilor SGBD, fără ca partajarea datelor între mai mulţi utilizatori să provoace inconsistenţa acestor date;

- se poate asigura implementarea unor drepturi de acces la date, în scopul realizării securităţii datelor în faţa acceselor nedorite;

- structurile de date sunt mai flexibile, uşor adaptabile la modificări ale mediului modelat, asigurând astfel o reflectare mai bună a realităţii şi o adaptabilitate mai bună în faţa modificărilor ce pot să apară în sistemul modelat;

- autonomia logică a datelor are ca efect faptul că se ameliorează procesul de dezvoltare şi de întreţinere a aplicaţiilor, în partea de programare a lor.

Ca o paralelă între modul de organizare a datelor în fişiere independente şi în

baze de date, din punctul de vedere al posibilităţilor de explorare a datelor, se poate spune că:

Page 60: baze_date

60

- un fişier este o colecţie de date care poate fi partajată de mai mulţi utilizatori care au o imagine unică asupra datelor; imagini multiple asupra datelor pot fi obţinute numai prin operaţii suplimentare asupra fişierului: sortare, filtrare, etc.

- o bază de date este un ansamblu de date format din mai multe fişiere ce pot fi partajate de mai mulţi utilizatori, oferindu-le acestora imagini diferite asupra datelor.

Page 61: baze_date

61

3.6. Probleme rezolvate şi propuse A. Indicaţi varianta corectă de răspuns, pentru întrebările următoare: 1. Inconsistenţa datelor se referă la faptul că:

a) aceeaşi dată se poate regăsi în mai multe fişiere b) aceeaşi dată se poate înregistra cu valori sau formate diferite în fişiere

diferite c) aceeaşi dată poate fi actualizată diferit, la momente diferite.

2. Redundanţa datelor se referă la faptul că: a) aceeaşi dată se poate regăsi în mai multe fişiere b) aceeaşi dată se poate înregistra cu valori sau formate diferite în fişiere

diferite c) aceeaşi dată poate fi actualizată diferit, la momente diferite.

3. Una dintre afirmaţiile următoare nu se referă la o bază de date: a) reprezintă un ansamblu de date structurate, coerente, neredundante,

independente de orice program de aplicaţie b) este o colecţie de date care poate fi partajată între mai mulţi utilizatori care

au o imagine unică asupra datelor c) este un ansamblu de date care pot fi partajate între mai mulţi utilizatori,

cărora le poate oferi imagini diferite asupra datelor. 4. Una dintre următoarele afirmaţii nu se referă la dicţionarul de date al unei baze

de date: a) cuprinde informaţii despre structura datelor şi restricţiile la care se supun

datele b) intermediază accesul la fişierele de date c) cuprinde ansamblul datelor stocate în baza de date, la un moment dat

5. Care dintre componentele SGBD asigură verificarea integrităţii bazei de date, conform restricţiilor de integritate definite: a) componenta de proiectare a SGBD b) componenta de execuţie a SGBD c) motorul bazei de date?

6. Pentru a caracteriza o tabelă de index asociată unei tabele a bazei de date, una dintre afirmaţii este eronată: a) este o tabelă în care se memorează, pentru fiecare înregistrare a tabelei la

care este asociată, valoarea cheii de indexare şi adresa înregistrării respective

b) este o tabelă în care se memorează descrierea structurii tabelei la care este asociată

c) este o tabelă gestionată de SGBD, care permite accesul direct sau ordonat la înregistrările tabelei la care este asociată.

7. Care componentă a SGBD permite definirea structurii bazei de date:

Page 62: baze_date

62

a) limbajul de descriere a datelor b) limbajul gazdă al SGBD c) limbajul de manevrare a datelor?

8. Nivelul extern de abstractizare a datelor dintr-o bază de date se referă la: a) modul de organizare a datelor în memoria externă b) imaginea bazei de date din punctul de vedere al unui utilizator sau al unei

aplicaţii c) imaginea globală a bazei de date, conform universului real care se

modelează. 9. Una dintre afirmaţiile următoare nu se referă la tuplurile unei relaţii:

a) numărul lor determină aritatea relaţiei b) ordinea lor în relaţie nu contează şi poate fi modificată c) fiecare tuplu al relaţiei trebuie să fie atomic, adică diferit de celelalte.

10. Autonomia logică a datelor într-o bază de date se referă la faptul că: a) stuctura datelor din baza de date poate fi modificată fără a influenţa

programele de aplicaţie b) datele din baza de date pot fi modificate fără modificarea programelor de

aplicaţie c) locaţia în memoria externă a fişierelor de date poate fi modificată fără a

influenţa programele de aplicaţie. 11. Termenul de manevrare a datelor din baza de date nu se referă la:

a) definirea structurii datelor din baza de date b) actualizarea, prin adăugare, ştergere sau modificare, a datelor din baza de

date c) consultarea datelor din baza de date.

12. Una dintre afirmaţiile următoare nu se referă la domeniile unei relaţii: a) numărul lor determină aritatea relaţiei b) ordinea lor în relaţie nu contează şi poate fi modificată c) fiecare domeniu al relaţiei trebuie să fie atomic, adică diferit de celelalte.

13. Procedura roll-back se execută: a) în cazul alterării bazei de date între două tranzacţii b) în cazul imposibilităţii încheierii cu succes a unei tranzacţii c) în cazul acceselor concurente, în actualizare, a mai multor utilizatori ai bazei

de date d) pentru anularea efectelor execuţiei parţiale a unei tranzacţii.

14. Alegeţi varianta corectă: a) validarea tranzacţiei indică faptul că efectele acesteia sunt ireversibile în

baza de date b) execuţia unei tranzacţii poate fi oprită în caz de incident dar nu se mai poate

reface imaginea iniţială a bazei de date c) tranzacţia este unitatea fizică de prelucrare asupra unei baze de date d) tranzacţia reprezintă trecerea de la o realizare a bazei de date la alta.

15. Include setul complet de operaţii elementare care trebuie executate în vederea efectuării trecerii de la o realizare la alta a unei baze de date: a) tranzacţia;

Page 63: baze_date

63

b) tabela de index; c) tranziţia; d) regula de integritate referenţială.

16. Un SGBD: a) asigură definirea, generarea şi exploatarea unei baze de date, neputând-o

proteja faţă de accesele nepermise; b) permite numai gestionarea accesului la date; c) este o interfaţă software între utilizator şi baza de date; d) este o componentă software complexă ce permite generarea şi gestionarea

bazelor de date. 17. Conform metodologiei ANSI-SPARC, este responsabil cu dezvoltarea

schemelor externe: a) administratorul bazei de date; b) administratorul de aplicaţie; c) administratorul de întreprindere; d) utilizatorul.

18. Un SGBD poate asigura confidenţialitatea datelor din baza de date astfel: a) prin salvarea periodică a bazei de date pe un suport sigur de memorie

externă b) utilizând criptarea datelor din baza de date c) prin folosirea unui sistem de parole de acces la baza de date d) prin asigurarea procedurii de roll-back.

19. Gradul de autonomie a datelor din baza de date: a) realizează o separare a datelor din punct de vedere conceptual b) se defineşte în legătură cu descrierea datelor pe diferite niveluri de

abstractizare c) defineşte în mod logic scheme ale bazei de date, pentru diferite niveluri de

abstractizare a datelor d) defineşte măsura în care se poate modifica descrierea datelor pentru un nivel

de abstractizare, fără a afecta descrierile de pe celelalte niveluri. 20. Izolarea unei tranzacţii presupune :

a) accesul se realizează numai dintr-o vedere a bazei de date b) baza de date este protejată pentru a nu fi afectă de un virus c) tranzacţia nu a fost aprobată de LMD d) baza de date este accesibilă numai după validarea tranzacţiei.

21. Un SGBD asigură posibilitatea accesului multicriterial la datele din baza de date: a) prin intermediul cheilor de indexare b) prin intermediul tranzacţiilor c) prin intermediul operaţiei de editare a datelor d) prin intermediul tabelei legăturilor dintre date.

22. Se asigură autonomia logică a datelor într-o bază de date dacă: a) actualizarea datelor din baza de date respectă restricţiile de integritate

memorate în baza de date b) pentru accesul la baza de date se utilizează dicţionarul de date

Page 64: baze_date

64

c) actualizările bazei de date se realizează prin intermediu tranzacţiilor d) la consultarea bazei de date se foloseşte un limbaj de interogare.

23. Care dintre următoarele afirmaţii despre cheia străină sunt adevărate? a) realizează definirea legăturilor logice dintre relaţii; b) în fiecare tuplu în care apare trebuie să aibă fie valoare nedeterminată fie

valoarea cheii primare din altă relaţie; c) într-o relaţie nu este permis să existe două tupluri având aceeaşi valoare

pentru atributele acestei chei; d) se defineşte ca mulţimea atributelor relaţiei care au proprietatea că

domeniile pe care le definesc se regăsesc în altă relaţie. 24. Alegeţi varianta corectă:

a) atât limbajele procedurale cât şi cele neprocedurale de manevrare a datelor sunt limbaje imperative;

b) limbajele neprocedurale sunt limbaje descriptive iar cele procedurale sunt imperative;

c) limbajele procedurale sunt limbaje descriptive iar cele neprocedurale sunt imperative

d) limbajele procedurale folosesc proceduri standard de acces la date. 25. Într-o bază de date sunt definite cu rolul de a accelera accesul la date:

a) tabelele sistem; b) tabelele de index; c) tabelele de structură; d) metadatele.

26. Reflectă imaginea globală a datelor din baza de date: a) nivelul extern; b) nivelul logic; c) nivelul conceptual; d) nivelul intern.

27. Unităţi logice virtuale ale bazei de date cu rol de a oferi selectiv, spre consultare, anumite date ale bazei de date şi de a ”ascunde” restul datelor din baza de date: a) tabelele de index; b) vederile; c) fişierele de index; d) fişierele partiţionate.

28. Într-o bază de date relaţională, o relaţie se poate reprezenta printr-un tabel în care: a) fiecare rând reprezintă un domeniu; b) ordinea rândurilor în tabel nu este predefinită şi poate fi modificată; c) pentru fiecare coloană a tabelului, realizările sunt de acelaşi fel; d) fiecare rând se poate identifica unic prin conţinutul său.

29. Portabilitatea unei componente software constă în: a) posibilitatea de a utiliza acea componentă pe platforme de calcul diferite b) posibilitatea de reproiectare a acelei componente fără alterarea structurilor

de date

Page 65: baze_date

65

c) posibilitatea de a utiliza acea componentă sub sisteme de operare diferite d) posibilitatea de modificare a suportului de memorie externă folosit pentru

stocarea datelor. 30. Nivelul conceptual de abstractizare a datelor din baza de date trebuie să

îndeplinească următoarele obiective: a) să asigure satisfacerea tuturor cerinţelor informaţionale ale sistemului

informatic proiectat b) să reflecte reprezentarea datelor pe suportul de memorie externă c) să definească imaginea globală a datelor din sistemul informaţional modelat d) să protejeze baza de date de accesul utilizatorilor neautorizaţi.

31. Consistenţa bazelor de date se referă la: a) respectarea constrângerilor semantice b) actualizarea automată a tabelelor de index c) includerea metadatelor în dicţionarul de date d) derularea tranzacţiei conform regulilor de integritate.

32. Printre funcţiile unui SGBD se numără: a) generarea bazei de date, asigurarea autonomiei logice a datelor faţă de

programele de aplicaţie şi actualizarea datelor din baza de date; b) optimizarea procedurilor de acces la date, asigurarea integrităţii bazei de

date şi gestionarea schimburilor de date între memoria internă şi memoria externă;

c) asigurarea integrităţii datelor şi a protecţiei acestora faţă de accesele concurente la baza de date;

d) actualizarea datelor din baza de date şi definirea strategiei de asigurare a bazei de date.

33. Alegeţi varianta corectă: a) validarea tranzacţiei are ca efect faptul că efectele acesteia sunt ireversibile

în baza de date; b) execuţia unei tranzacţii poate fi oprită în caz de incident dar nu se mai poate

reface imaginea iniţială a bazei de date; c) tranzacţia este unitatea fizică de prelucrare asupra unei baze de date; d) nu se poate pune problema anulării efectului unei tranzacţii în cazul apariţiei

unor incidente. 34. Alegeţi varianta corectă:

a) metodologia de concepere a unei baze de date porneşte de la necesitatea realizării, mai întâi, a schemei interne;

b) schema conceptuală derivă din schema internă; c) prin intermediul schemei externe, utilizatorul are o viziune parţială asupra

bazei de date; d) prin intermediul schemei externe, utilizatorul are o viziune globală asupra

bazei de date. 35. Gestionarul bazei de date este o componentă a:

a) subsistemului instrumentelor de proiectare al unui SGBD; b) subsistemului de execuţie; c) motorului SGBD;

Page 66: baze_date

66

d) nici o variantă nu este corectă. 36. Care dintre următoarele afirmaţii despre tupluri sunt false:

a) nu contează ordinea de apariţie a tuplurilor într-o relaţie; b) un tuplu al unei relaţii se poate identifica prin conţinutul său; c) este o submulţime a produsului cartezian a unei liste finite de mulţimi,

numite domenii d) se poate repeta de un număr nedeterminat de ori într-o relaţie.

37. Dimensiunea unei clase de asociaţii descrie: a) numărul maxim de entităţi dintr-o clasă de entităţi care pot participa la o

asociaţie din clasa de asociaţii b) numărul minim de entităţi dintr-o clasă de entităţi care pot participa la o

asociaţie din clasa de asociaţii c) numărul de clase de entităţi care participă la definirea clasei de asociaţii d) numărul minim de asociaţii din clasa de asociaţii la care participă o entitate

din clasa de entităţi. 38. Efectul unei tranzacţii este ireversibil dacă :

a) tranzacţia se încheie cu roll-back b) tranzacţia se încheie cu succes c) sunt folosite vederi ale bazei de date d) tranzacţia se încheie cu commit.

39. Există o relaţie de incluziune între: a) LDD şi LMD; b) LI şi LDD; c) metadate şi dicţionarul de date; d) fişiere de index şi motorul BD.

40. Prin implementarea mecanismelor de criptare a datelor din baza de date se asigură: a) integritatea datelor din baza de date b) posibilitatea accesului selectiv la date c) confidenţialitatea datelor din baza de date d) protejarea datelor din baza de date faţă de accesele concurente.

41. Motorul SGBD asigură: a) gestionarea unitară a operaţiilor la nivel fizic asupra bazei de date b) gestionarea unitară a operaţiilor la nivel logic asupra bazei de date c) verificarea respectării restricţiilor de integritate ale bazei de date d) optimizarea operaţiilor de acces la baza de date.

42. O relaţie poate avea mai multe: a) chei candidat b) chei străine c) chei primare d) chei alternante.

43. Alegeţi varianta corectă: a) schimburile de date între memoria internă şi memoria externă sunt

gestionate de SGBD;

Page 67: baze_date

67

b) stocarea datelor, în vederea prelucrării lor ulterioare, se realizează în memoria internă a sistemului de calcul;

c) blocurile de date (înregistrări logice) sunt gestionate de SGF iar articolele (înregistrări fizice), de utilizator;

d) câmpurile unui fişier sunt formate din date elementare numite articole; e) schimburile de date între memoria internă şi memoria externă sunt

gestionate de SGF. 44. Impune ca modificările efectuate în baza de date să fie realizate cu respectarea

regulilor de integritate a bazei de date: a) atomicitatea; b) consistenţa; c) durabilitatea; d) coerenţa; e) izolarea; f) integritatea.

45. O realizare a bazei de date reprezintă: a) obţinerea unei vederi a bazei de date b) actualizarea tabelelor de index odată cu actualizarea datelor c) ansamblul datelor stocate în baza de date la un moment dat d) validarea automată a unei tranzacţii în baza de date.

46. Se numără printre nivelurile de abstractizare a datelor din baza de date: a) nivelul intern numit şi nivel utilizator; b) nivelul extern numit şi nivel fizic; c) nivelul global numit şi nivel intern; d) nivelul extern numit şi nivel utilizator.

47. Subsistemul instrumentelor de proiectare a SGBD permite: a) definirea structurii bazei de date b) definirea formatului rapoartelor şi a cererilor de interogare a bazei de date c) procesarea aplicaţiilor şi a cererilor de consultare a bazei de date d) generarea tranzacţiilor cu baza de date.

48. Un domeniu se identifică prin: a) tuplu b) relaţie c) cheie d) atribut e) identificator.

49. Alegeţi varianta corectă: a) SGBD asigură accesul multicriterial la datele din baza de date prin

intermediul regulilor de integritate; b) instrumentele oferite de SGBD pentru consultarea bazei de date sunt

rezervate utilizatorilor profesionişti; c) SGBD asigură şi autonomia logică şi autonomia fizică a datelor faţă de

programele de aplicaţie; d) variantele a) şi b) sunt corecte; e) variantele a) şi c) sunt corecte.

Page 68: baze_date

68

50. Limbajele de interogare a bazei de date: a) fac parte dintre limbajele de descriere a datelor; b) permit căutarea, identificarea şi vizualizarea datelor din baza de date; c) sunt limbaje imperative; d) sunt limbaje neprocedurale.

51. Metodologia de proiectare a unei baze de date porneşte de la necesitatea realizării mai întâi a: a) schemei interne b) schemei funcţionale c) schemei conceptuale d) schemei relaţionale.

52. Orice tuplu al relaţiei se identifică unic prin intermediul valorii unui set de atribute care formează: a) cheia compusă b) cheia străină c) cheia candidat d) cheia unică e) cheia primară f) cheia alternantă.

53. Efectul domino poate să apară în cazul în care, pe durata derulării unei tranzacţii, nu se respectă: a) atomicitatea; b) consistenţa; c) durabilitatea; d) coerenţa; e) izolarea; f) integritatea.

54. Prin proiecţia unei relaţii se obţine: a) aceeaşi relaţie cu un număr mai mic de tupluri; b) o nouă relaţie cu un număr mai mic de atribute; c) o nouă relaţie având aceeaşi schemă ca relaţia iniţială; d) o nouă relaţie cu un număr mai mic de tupluri.

55. Numărul regulilor lui Codd care se referă la independenţa datelor din baza de date este: a) una b) două c) trei d) patru e) cinci.

56. Care enunţuri sunt adevărate: a) uniunea este o operaţie derivată a algebrei relaţionale; b) uniunea este o operaţie unară definită pe mulţimea relaţiilor; c) uniunea este echivalentă cu operaţia de selecţie compusă cu operaţia de

produs cartezian;

Page 69: baze_date

69

d) uniunea este echivalentă cu operaţia de proiecţie compusă cu operaţia de produs cartezian.

57. Pentru ca un SGBD să fie considerat relaţional, trebuie să fie implementaţi cel puţin următorii operatori relaţionali: a) de proiecţie b) de reuniune c) de produs cartezian d) de selecţie e) de uniune.

58. Care dintre următoarele afirmaţii este adevărată: a) dependenţa funcţională directă implică dependenţa funcţională totală; b) dependenţa funcţională tranzitivă implică dependenţa funcţională parţială; c) dependenţa funcţională totală implică dependenţa funcţională directă; d) dependenţa funcţională parţială implică dependenţa funcţională tranzitivă.

59. Sunt operaţii ale algebrei relaţionale care permit obţinerea unei relaţii având o altă schemă de relaţie decât operanzii: a) proiecţia b) reuniunea c) produsul cartezian d) selecţia e) uniunea.

Page 70: baze_date

70

4. Bibliografie Andone I.,Ţugui A. - "Baze de date inteligente în managementul firmelor",

Editura Dosoftei, Iaşi,1997 Bâscă O. - "Baze de date", Editura ALL, Bucureşti, 1997 Boian F.M. - "Sisteme de operare interactive", Editura Libris, Cluj-Napoca,

1994 Chuang T.T., Yada S.B. “The developement of an adaptive decision support

system” Decision support systems 24, 1998 Dollinger R. - "Baze de date şi gestiunea tranzacţiilor", Editura Albastră,

Cluj-Napoca, 1998 Drucker P. - "Societatea postcapitalistă" , Editura Image, 1999 Finkelstein R. - “Computerworld”, “On-Line Analitycal Procesing” , dec.

1994 Fotache M. - "Baze de date relaţionale", Editura Junimea, Iaşi, 1997 Georgescu C. - "Analiza şi proiectarea sistemelor informatice", Editura

Radical, Galaţi, 1999 Georgescu C. - "Abordarea relaţională şi obiectuală în analiza sistemelor

informatice", Editura Didactică şi Pedagogică, Bucureşti, 2002 Georgescu M. - "Tehnici de organizare şi medii de gestionare a datelor",

Editura Fundaţiei Universitare "Dunărea de Jos", Galaţi, 2000 Georgescu M. - "Structuri de date şi baze de date", Editura PAX AURA

MUNDI, Galaţi, 2002 Gerrity T.P.Jr - “The Design of Man-Machine Decision Systems: An

Aplication to Portofolio Management”,Prentice Hall, NJ Hackateron R., - BYTE v2, ”Data warehouse”, Mar.1996 Knuth D. E. - "Tratat de programarea calculatoarelor", Editura Tehnică,

Bucureşti, 1974 Little J.D.C. - “Models and Managers: The Concept of a Decision Calculus”,

Addison-Wesley,Workingam,1975 Mayer M. K - “Future trends in model management systems: parallel and

distributed extensions” Decision Support System, 22, 1998 Morton M. S. - “Management Decision Systems: Computer-Bassed Support

for Decision Making”, Information Systems Rev.143,1971 Morton M. S., Keen G. W. - “Decision Support Systems: An Organizational

Perspective”,Spring Rev. 1989 Muhanna W., Pick R.A. - “Meta-modeling concepts and tools for model

management: a system approch” ,Manage. Sci. 40 sept. 1994 Parsaye K. - “Surveying Decision Support: New Realms of Analysis”

Information Discovery Inc.,1992 Pascu C.,Pascu A. - "Totul despre…SQL", Editura Tehnică, Bucureşti, 1994

Page 71: baze_date

71

Popa Ghe.,Ştefănescu A.,Stanciu V.,Ivancenco V.,Mareş V.- "SGBD", Editura All, Bucureşti, 1994

Raden N. - “Information week”, October 30, 1995 Sprague R., Carlson E.D. - “Building Effective DSS” Prentice-Hall,New

Jersey 1982 Stonebraker M. - “Object/Relational DBMSs: The Next Great Wave”,

Morgan Kaufman,1996 Toffler A. - "Powershift - puterea în mişcare", Editura Antet, 1995 Velicanu M.,Bodea C.,Lungu I.,Ioniţă C.,Bădescu G. - "Sisteme de gestiune a

bazelor de date", Editura Petrion, Bucureşti, 2000 Zaharie D. & colectiv, - “Sisteme informatice pentru asistarea deciziei”,

Editura DualTech, Bucureşti, 2001 ***, - Microsoft Press - "Microsoft Visual FoxPro 6.0, Ghidul

programatorului", Editura Teora, Bucureşti, 2000 ***, - Computerworld, “Data Warehouse”, 25/4/1994 ***, - “The Case For Relational OLAP”, Micro Strategy Incorporated,

www.strategy.com