Curs Baze de Date (Prof. Ioan Rusu)

of 148 /148
1. INTRODUCERE 1.1. ORGANIZAREA DATELOR Principala formă de luptă a omului împotriva timpului este micşorarea intervalului de desfăşurare a diferitelor activităţi, care dau impresia prelungirii perioadei de viaţã. Pentru realizarea acestui deziderat omul modern utilizează creaţia sa, calculatorul, care pe lângă calcule aritmetice poate prelucra mari cantităţi de informaţie într-un timp scurt, datorită noii sale configuraţii şi a limbajelor de programare. Eficienţa unui sistem informatic dată de regăsirea automată a datelor, după diferite criterii, într-un timp cât mai scurt, depinde în mare măsură de modul de organizare a datelor. Prin organizarea datelor se înţelege definirea, structurarea, ordonarea şi gruparea lor în colecţii a cãror elemente sunt omogene şi stabilirea de relaţii între colecţii şi între elementele unei colecţii precum şi înregistrarea lor pe un suport informaţional prelucrabil într-un sistem de calcul. Organizarea datelor are ca urmare şi micşorarea spaţiului de memorie ocupat de date, care apar o singurã datã în sistem, precum şi flexibilitatea datelor fãrã a modifica programele care le gestioneazã. În organizarea datelor se utilizeazã trei concepte de bazã: entitate, atribut şi valoare. Relaţia dintre aceste noţiuni este datã de asocierea mai multor atribute unei entitãţi şi a unei mulţimi de valori atributelor. Noţiunea de entitate nu poate fi definitã, deoarece este o noţiune primarã. Mai multe elemente de acelaşi tip reprezintã o entitate. Câteva exemple de entitãţi sunt: tranzistor, rezistor, persoanã, student etc. Entitatea este un obiect concret sau abstract reprezentat prin proprietãţile sale. Proprietãţile esenţiale care descrie o entitate se numesc atribute, care pentru anumite elemente ale entitãţii poate lua valori din anumite mulţimi numite domeniul atributului respectiv. Deobicei aceste mulţimi sunt submulţimi ale mulţimii numerelor reale, ale 1

Embed Size (px)

description

(Prof. Ioan Rusu)

Transcript of Curs Baze de Date (Prof. Ioan Rusu)

1. INTRODUCERE 1.1. ORGANIZAREA DATELOR Principala form de lupt a omului mpotriva timpului este micorarea intervalului de desfurare a diferitelor activiti, care dau impresia prelungirii perioadei de via. Pentru realizarea acestui deziderat omul modern utilizeaz creaia sa, calculatorul, care pe lng calcule aritmetice poate prelucra mari cantiti de informaie ntr-un timp scurt, datorit noii sale configuraii i a limbajelor de programare. Eficiena unui sistem informatic dat de regsirea automat a datelor, dup diferite criterii, ntr-un timp ct mai scurt, depinde n mare msur de modul de organizare a datelor. Prin organizarea datelor se nelege definirea, structurarea, ordonarea i gruparea lor n colecii a cror elemente sunt omogene i stabilirea de relaii ntre colecii i ntre elementele unei colecii precum i nregistrarea lor pe un suport informaional prelucrabil ntr-un sistem de calcul. Organizarea datelor are ca urmare i micorarea spaiului de memorie ocupat de date, care apar o singur dat n sistem, precum i flexibilitatea datelor fr a modifica programele care le gestioneaz. n organizarea datelor se utilizeaz trei concepte de baz: entitate, atribut i valoare. Relaia dintre aceste noiuni este dat de asocierea mai multor atribute unei entiti i a unei mulimi de valori atributelor. Noiunea de entitate nu poate fi definit, deoarece este o noiune primar. Mai multe elemente de acelai tip reprezint o entitate. Cteva exemple de entiti sunt: tranzistor, rezistor, persoan, student etc. Entitatea este un obiect concret sau abstract reprezentat prin proprietile sale. Proprietile eseniale care descrie o entitate se numesc atribute, care pentru anumite elemente ale entitii poate lua valori din anumite mulimi numite domeniul atributului respectiv. Deobicei aceste mulimi sunt submulimi ale mulimii numerelor reale, ale mulimii numerelor ntrgi sau a mulimii irurilor de caractere. Deci orice proprietate a unui obiect poate fi exprimat printr-o pereche (atribut,valoare). Cum o entitate are mai multe proprieti ea poate fi reprezentat de mai multe perechi (atribut,valoare). Exemplu. Un tranzistor poate avea atributele nume, beta, tensiune de alimentare, frecven maxim, putere. Tranzistorul poate fi reprezentat de perachile (atribut,valoare) (nume,BC 107), (beta, 100), (tensiune de alimentare,10 V), (frecven maxim 10MHz), (putere, 0,5W). Se observ c atributul nu caracterizeaz o entitate ci o clas de entiti numit entitate grup, care n exemplul nostru este tranzistor i se mai numete i tip de entiti. Noiunea de atribut este cunoscut i sub numele de cmp sau caracteristic. Fiecare atribut este caracterizat de natura valorilor pe care le poate lua. Se numete cheie atributul sau mulimea de atribute pentru care valorile asociate determin n mod unic orice element al unei entiti. Dac exist elemente care s aib aceleai valori pentru toate atributele se ia un atribut suplimentar reprezentat de numrul asociat elementului n entitatea dat. Conceptul de dat este un model de reprezentare a informaiei, accesibil unui anumit procesor (om, program, calculator) care prelucreaz informaia PENTRU a obine informaii noi despre fenomenle lumii reale. Logic o dat se definete prin identificator,atribut i valoare. Exemplu: TNR - IDENTIFICATOR

1

PROFESIA STUDENT

- ATRIBUT - VALOARE

1.2. RELAII NTRE DATE Numim relaie ntre entitile E1 , E 2 ,..., E n orice submulime a produsului ( e1 , e 2 , ..., e n ) unde cartezian al mulimilor elementelor de forma e1 E1 , e2 E 2 ,..., e n E n . O astfel de relaie o notm cu REL( E1 , E 2 ,..., E n ) unde REL este numele asociat relaiei care are aritatea k. De cele mai multe ori k=2 Definiia 1. Se numete relaie binar pe mulimea A nevid de date o submulime R a produsului cartezian AxA care ndeplinete o proprietate (relaie). Exemplu. Se consider mulimea A a tranzistoarelor dintr-o magazie i relaia de tipul BC107 asociaz fiecrui tranzistor din A pe toi cei care sunt de tipul BC107 cu condiia s fac parte din A. R={(x,y)AxA/x,yA i x este de acelai tip cu y} Elementele asociate prin relaia R sunt acele elemente x,y pentru care (x,y) R, deci x i y sunt de acelai tip (BC107) i simbolizm prin xRy. Proprieti ale relaiei binare dintre date. 1. Reflexivitatea. Relaia R peste mulimea A este reflexiv dac pentru orice x A avem xRx. 2. Simetria. Relaia R peste mulimea A este simetric dac pentru orice x,y A relaia xRy implic yRx. 3. Antisimetria. Relaia R este antisimetric pe mulimea A dac pentru orice x,y A din xRy i yRx rezult x=y. 4. Tranzitivitatea. Relaia R peste mulimea A este tranzitiv dac pentru orice x,y,zA care ndeplinesc xRy i yRz satisface i relaia xRz Definiia 2. O relaie binar R definit pe A care este reflexiv, simetric i tranzitiv se numete relaie de echivalen. Definiia 3. Relaia R definit pe A se numete de ordine total dac pentru orice x,yA avem xRy sau yRx. Definiia 4. Dac relaia R definit pe A este reflexiv, asimetric i tranzitiv se numete relaie de ordine. Definiia 5. Relaia R definit pe A este de preordine dac este reflexiv i tranzitiv. Dup numrul de elemente dintr-o entitate care corespund unui element dintr-o alt entitate se pote face o clasificare a relaiilor binare astfel: - Relaie de unu- la- unu notat (1:1), cnd fiecrui element dintr-o entitate i corespunde cel mult un element dintr-o alt entitate i invers. - Relaie unu- la -mai muli notat (1:N), cnd fiecrui element din prima entitate i corespunde N elemente din a doua entitate i fiecrui element din a doua entitate i corespunde cel mult un element din prima entitate. - Relaie mai muli -la- mai muli notat (M:N ), cnd unui element din prima entitate i corespunde mai multe elemente din a doua entitate i reciproc. n practic cele mai ntlnite sunt ultimele dou tipuri de relaii.1.3.

STRUCTURI DE DATE

Definiia 6. O colecie de date ntre care sau stabilit o mulime de relaii care ne ajut n realizarea de modaliti de selecie i identificare a elementelor se numete structur de date.2

Structura de date poate conine datele unui tip sau a mai multor tipuri de colecii. Structura de date are un acces secvenial dac localizarea unui element al ei se face innd cont de elenentele care se afl naintea sa n ordinea specificat. Structura are acces direct dac un element al ei poate fi selectat fr a ine cont de celelalte. Elementele unei structuri de date pot fi ele la rndul lor o structur de date. Crearea unei structuri de date ncepe cu memorarea datelor sub form iniial ntr-o memorie. Pentru prelucrarea datelor este necesar accesul la elementele structurii care poate fi secvenial sau direct. Datele structurii trebuiesc actualizate ceea ce duce la adougarea,tergerea unor elemente, modificarea valorii i a relaiilor dintre elemente. Alte operaii asupra structurii sunt: sortare care const n aranjarea elementelor dup anumite criterii; ventilarea prin care structura se sparge n mai multe structuri; fuzionarea prin care din mai multe structuri se face o nou strucur. Eficiena realizrii operaiilor asupra structurii de memorie depinde de relaiile ntre datele materializate pe suportul de memorie. Structurile de date sunt de acelai tip dac au aceeai organizare i sunt supuse acelorai operaii. Definiia 7. O mulime de date ntre care s-au stbilit relaii i pentru realizarea operaiilor se utilizeaz un grup de operatori de baz cu o anumit semantic poart numele de tip de structur de date. 1.3.1. Clasificarea structurilor de date. Clasificarea structurilor de date se face dup mai multe criterii. 1. Astfel, dup tipul componentelor avem:

omogene cu elementele de acelasi tip; structuridedate eterogene, cuelementediferite.2.

Dup posibilitatea modificrii valorilor sau structurii sau a valorii i structurii avem:

statice, careauacelasinumrdeelemente petimpul existentei; structuridedate dinamice, care permit mod ificareavalorilor sistrucurilor.3.

Dup nivelul de structurare al datelor avem:

log ice, serefer la ordonarea datelor sioperatori detratare a datelor; structuri de date fizice, se refer la implementarea si reprezentarea pe sup orti inf ormationali.1.3.2. Tipuri de structuri de date

3

Structura punctual este reprezentat de o entitate izolat care nu are relaii cu alte entiti.1.

Structura liniar este reprezentat de o colecie de date ntre elementele creia este stabilit o relaie de ordine total. Acestei structuri i corespunde o mulime de colecii de date care este n relaii ierarhice de includere ( fiecare colecie are o singur colecie la nivel superior i inferior). Fiecrei nregistrri din colecia de nivel superior i corespunde una sau mai multe nregistrri ale coleciei de nivel inferior.2.

a

Fig.1. Structuri liniare a) simpl b) inelar

b

Pentru structura simpl din figura 1 cardinalul mulimii elementelor iniiale i terminale este egal cu 1. Card(M(D))=Card(m(D))=1. Primul i ultimul element nu au predecesori respectiv succesori. Dac ntre ultimul i primul element exist o relaie de cuplu atunci structura liniar devine inelar sau circular figura . Structura arborescent este o colecie de date ntre elementele crea exist o relaie de ordine. Aceast structur are urmtoarele proprieti: Exist un singur element numit rdcin; Orice nod are un predecesor imediat unic; Orice nod neterminal are un numr finit de succesori imediai; Relaiile stabilite ntre noduri sunt de tipul (1:m).3.a

b c

e

g

d

f 4

h i

aa

b

c

d

e f g h i j k

l

m

n

b Fig. 2. Arbori de date a) binar b) stratificat Definiia 9. Se numete drum de lungime n-1 de la n i1 la n in succesiunea de noduri ( n i1 , n i 2 ,..., n in ) unde n ik este succesorul lui n i k 1 , pentru orice k, kn+1. Drumul de lungime maxim reprezint nlimea arborelui. Un arbore care are ordinul 2 se numete arbore binar iar cel cu ordin mai mare ca 2 se numete arbore multici. Definiia 10. Un arbore se numete echilibrat dac diferena dintre drumurile de la rdcin la punctele terminale este cel mult 1. Structura arborescent poate avea elementele structurate arborescent, n reea sau liniar.4.

Structura reea este structura unei colecii de date ntre elementele creia exist o relaie de preordine. Acast structur are urmtoarele proprieti: O reea este un graf care realizeaz o legtur bidirecional ntre dou noduri. Un nod poate avea mai muli predecesori I el poate fi pedecesorul predecesorului su. n acest caz n reea apar cicluri pentru care nodul final coincide cu cel iniial. Cardinalul mulimii nodurilor iniiale este mai mare ca 1, relaie ndeplinit i de cardinalul nodurilor finale.

5

b f d h g

a c

e

i

j

a)

b a c

d e

f

b) Fig. 3 Reele de date a) simpl b) complex ntre elementele reelei se stabilesc relaii de tipun (n:m). Dac orice cuplu al reelei este simetric reeaua este simpl n caz contrar este complex. 5.

Structura relaional este format din mai multe tabele (relaii, tablouri) de date elementare, fr o legtur aparent ntre ele componentele unei tabele fiind aduse ntruna din formele normate, figura 4. Starea n care se gsete structura tabelului n funcie de cerinele impuse se numete form normal. Operaiile pe aceste structiri se realizeaz cu operatori relaionali ai algebrei relaionale sau ai calculului relaional. TRANZISTOARE

6

MARCA

NUME

Umax.al.

BETA

f MAX

PUTERE

Fig. 4

Tabel de date

1.4. Componentele unei baze de date folosite n Access 95 O baz de date n Access 95 este compus din mai multe entiti, numite obiecte . Acestea sunt : tabele ( tables), interogri ( queries), formulare (forms), rapoarte ( reports), comenzi macro ( macros) i module ( modules) . O baz de date Access 95 este prezentat n figura 1. Observai n partea de sus a ferestrei exact obiectele amintite (sub form de etichete), ce compun baza de date . Fig. 1 - Fereastra unei baze de date Access 95 .

4.1. Descrierea obiectelor 4.1.1. Tabele Am spus mai nainte c o BD este o colecie de date corelate, cu referire la un anumit subiect ( sau entitate). Toate aceste date( informaii) vor fi stocate n tabele. Pentru fiecare subiect ( entitate) trebuie creat un nou tabel . De exemplu, dac se dorete o BD cu referire la o bibliotec, atunci ne-am putea gndi la colecionarea datelor despre : - cri( cu numele i prenumele autorului, titlul crii, editura, anul apariiei, numar ISBN, numrul de cot al crii respective .a.) ; - gestionarea persoanelor nscrise la acea bibliotec( fiele de nscriere, cu numele i prenumele cititorului, adres, numr de telefon etc.) ;7

-

mprumuturi ( ce titlu, cui, pe ce perioad) ; achiziii i mprosptarea fondului de carte( titlul nou achiziionat, numrul de buci, disponibilul din depozit) . Pentru fiecare dintre aceste posibile entiti trebuie creat un tabel. Structura unui tabel Access 95 este artat n figura urmtoare( figura 2) .

Fig. 2 - Structura unui tabel . Coninutul unui tabel

Orice tabel este organizat sub forma unei grile, cu rnduri i coloane . ( vedei figura 2) . Rndurile se numesc nregistrri (tuple), iar coloanele se numesc cmpuri (domenii). Un rnd conine informaii despre un exemplar al entitii respective( n exemplul dat anterior, pentru entitatea carte vom avea mai multe titluri, pentru cititor mai multe persoane). O coloan ine un anumit atribut ( o caracteristic) al ( a) entitii reprezentate n acel tabel( n exemplul anterior autorul unei cri, titlul crii sau perioada de mprumut sunt fiecare o caracteristic a entitii de care aparin) . Fiecare cmp al unui tabel va conine acelai tip de dat pentru toate exemplarele . Deci un tabel conine dou tipuri de informaie : - informaiile care descriu modul de alctuire al tabelului, adic structura tabelului , care este dat de nregistrri ; - datele propriu-zise, adic informaia coninut n cmpuri . 1.4.2. Interogri ( queries) O interogare reprezint o ntrebare pe care o formulm, n legtur cu informaiile colectate n baza de date. n urma unei astfel de ntrebri, mediul Access ne ntoarce o mulime de nregistrri, care pot face parte din unul sau mai multe tabele ale BD interogate . Mulimea de nregistrri poart numele de set dinamic rezultat al interogrii, sau mai scurt set dinamic rezultat . Am subliniat dinamic, deoarece este o calitate important. Ea ne spune c dac n tabelul, sau tabelele surs ( care au furnizat setul) apar modificri, acestea se vor reflecta i n set ( el coninnd valorile cele mai recente) . Utilizarea interogrilor8

-

Rolul unei interogri este s extrag din tabelele BD datele care ne sunt necesare la un moment dat . O interogare are diferite utilizri : afiarea numai a nregistrrilor care corespund criteriilor pe care le stabilim; afiarea nregistrrilor ntr-o anumit ordine ( tot pe baza unor condiii) ; combinarea nregistrrilor din mai multe tabele ; realizarea de modificri similare n mai multe nregistrri dintr-un tabel, simultan ; tergerea unor nregistrri ; .a. .

n majoritatea situaiilor, Access permite editarea datelor afiate de o interogare. Rezultatul editrii este scris napoi n tabelul( tabelele) care au furnizat setul . Atenie : aceast comportare trebuie s fie privit i dintr-un alt punct de vedere, diferit de cel ce o consider un avantaj . Astfel, o interogare poate furniza un numr de titluri de cri ce trebuie nlocuite din cauza uzurii. Printre ele se poate ntmpla s existe i una( sau mai multe) care la o a doua privire s nu necesite nlocuirea. Deci le tergem din rndul celor ce trebuie neaprat schimbate. tergerea va fi reflectat i n tabelul care a furnizat acele titluri pentru nlocuire. Rezultatul ? Se pierde definitiv nregistrarea corespunztoare acelui titlu ! Trebuie reinut : o interogare nu are date proprii , ci opereaz cu ceea ce se citete din tabele sau cu ceea ce se scrie n tabele . Analogia cu o funcie C cu parametri luai prin referin este evident . 4.3. Formulare ( forms) Formularul este o fereastr prin care se pot : introduce date n BD ( cel mai adesea) ; vizualiza datele unei nregistrri sau din setul dinamic rezultat al unei interogri ; modifica sau elimina date .

Putei vedea cum arat un formular n figura 3.

Fig. 3 Un tip de formular Access 95 Coninutul unui formular

9

Un formular poate conine subformulare pentru afiarea de date asociate . De exemplu cte cri s-au primit n ultima sptmn, sau ce cititori au ntrziat predarea. Formularele pot conine i butoane ( controale) care realizeaz aciuni specifice : deschiderea altor formulare sau tiprirea rapoartelor. Avnd n vedere toate acestea se poate spune c formularul reprezint interfaa utilizator a unei BD Access 95 . Reinei c un formular conine dou tipuri de informaie : - informaii de structur care dau nfiarea i alctuirea( adic : amplasarea; mrimea i forma; numrul, tipul i caracteristicile seciunilor; numrul, tipul, amplasarea i atributele controalelor .a. ) ; - datele propriu-zise, afiate . 4.4. Rapoarte( reports) n opoziie cu formularele ( folosite la operaiile de intrare intr-o BD Access 95) rapoartele ndeplinesc operaiile de ieire . Datele sunt dirijate cel mai adesea ctre o imprimant, astfel c orice dorii s tiprii va arta cel mai bine sub form de raport. Atunci cnd vom crea rapoarte vom avea la dispoziie din partea Access 95 programe wizard pentru crearea tipurilor uzuale ale unui astfel de obiect. Un raport arat ca n figura urmtoare ( figura 4).

Fig. 4 Un raport Access 95 . 4.5. Comenzi macro( macros) O comand macro ( sau macro-comand) este un obiect al unei BD Access95 ce conine o secven de aciuni ce se repet la dorina noastr . V putei gndi la acest obiect ca la un macro din limbajul de asamblare . Ele se pot ataa unui formular, raport, unui buton( numit i control, ca la interfeele grafice Windows), unui element de meniu sau unei combinaii de taste .10

Comenzile macro nlocuiesc programarea( care n Access 95 se face folosind Visual Basic pentru aplicaii VBA) pentru aciunile de rutin, ca deschiderea unui formular sau tiprirea unui raport . Pot fi folosite n cazul proiectrii unei interfee simple ctre baza noastr de date . Nu trebuie ns exagerat folosirea comenzilor macro, deoarece oricum ele nu sunt att de eficiente precum o funcie a limbajului de programare. De asemenea duce la pierderea unor posibiliti oferite de module( vezi 2.1.6). Comenzile macro au rol important i n : - verificarea i validarea datelor ; - stabilirea valorilor pentru proprietile obiectelor( controale, formulare, machete) ; - crearea interfeelor ntre aplicaii i user . Cum sunt create comenzile macro ? Comenzile maco sunt create de ctre programator. Nu se poate ca o astfel de comand s fie creat prin nregistrarea unei secvene de combinaii de taste . O comand de acest fel este compus din aciuni aa cum am amintit mai sus . Aciunea ndeplinete o sarcin bine-definit. Unele aciuni au nevoie de informaii suplimentare. Acestea sunt argumentele . De exemplu dorim s deschidem un formular. Care ? Numele acestuia este absolut necesar macro-ului de deschidere al formularului. Trebuie, deci, furnizat ca atare, pentru a da sens operaiei de deschidere. Aciunile ce compun o macro-comand sunt oferite de Access 95 . Mediul ne pune la dispoziie o list derulant de aciuni pe care le putem folosi. Dar detaliile fiecrei operaii trebuie furnizate de noi . Reinei c : o macro-comand Access 95 reprezint un set de aciuni ; o macro-comand Access 95 este analog unui macro din limbajul de asamblare sau din C. Ea este codificat aici n limbajul definit de setul de aciuni disponibile; folosind macro-comenzile facem tot o programare, dar la un nivel mai rudimentar.

4.6. Module( modules) Pentru a discuta despre un modul trebuie s spunem cte ceva despre programarea n VBA . Astfel, ca n orice limbaj de programare, un program VBA este compus din instruciuni . Mai multe instruciuni formeaz o procedur ( denumirea trebuie respectat, ca n limbajul de asamblare ; nu asociai procedura cu funcia din C). Procedurile sunt de dou feluri : - dac realizeaz o activitate sau operaie se numesc proceduri Sub . Cu o astfel de procedur se trateaz evenimentele din cadrul unui formular, raport sau control( buton) . De aceea mai poart numele de proceduri de tratare a evenimentelor ; dac realizeaz calculul unei valori se numesc proceduri Function ;

11

Deducei de aici c procedura nu poate fi numit funcie . Putei folosi totui termenul de funcie pentru uurin, dar trebuie s facei diferena ntre funcie i procedur . Coninutul unui modul Modulul este un obiect Access ce conine o colecie de declaraii, instruciuni i proceduri din VBA . V putei gndi la el ca la un mic program, dar care nu are puterea de a rula ! De obicei se memoreaz n acelai modul proceduri nrudite pentru rezolvarea unei anumite sarcini. Tot ce se face cu o comand macro se poate face cu un modul, i chiar mai mult. Un modul poate fi de trei feluri : - modul pentru machete ; - modul pentru rapoarte ; - modul global . . Forma unui modul Un modul asigur organizarea procedurilor unei aplicaii. Fiecare modul conine : o seciune pentru declaraii ; o seciune de proceduri, unde apar procedurile ce prezint legturi logice ntre ele ( aa cum am spus mai sus) .

-

Dup cum se vede, forma unui modul este apropiat ca structur de cea a unui program, din care lipsete acea parte ce i-ar justifica denumirea ( i anume funcia main( ) n C, sau etichetele Start end Start din limbajul de asamblare ). 4.1.1. Crearea unei noi baze de date O BD nou se poate crea n dou moduri, depinznd de momentul ales pentru creare . Astfel : 1. La start : atunci cnd lansai mediul Access 95, va aprea o caset de dialog ( figura 5) .

12

Fig. 5 Caseta de dialog ce apare automat la lansarea Access 95 . De aici avei dou opiuni : 1. Fr ajutorul programului wizard : prin selectarea opiunii Blank Database ( figura 6), ajungei la fereastra artat n figura 7. Aceasta este fereastra n care dai un nume noii baze de date pe care o creai.

13

Fig. 6 n caseta de dialog de la start, se alege opiunea BlankDatabase. Fig. 7 Ce nume va primi noua baz de date ? Apsnd OK ajungei la fereastra din figura 8. Ce vedei n figura 8 este o BD nou, necompletat ; prin selecia oricreia din etichetele cu numele obiectelor unei BD ( tables, queries .a.) ce apar n partea de sus a ferestrei, vei vedea c nu exist nimic creat. Sarcina noastr este s crem, pe parcursul lucrrilor de laborator, fiecare dintre aceste obiecte ;

Fig. 8 Fereastra noii baze de date, aa cum apare dup ce a primit un nume. 2.

14

Cu wizard : prin selectarea opiunii Database Wizard ( figura 9) vei intra n fereastra New ( figura 10).

Fig. 9 Selectai Database Wizard dac dorii asisten din partea Access 95 Exist dou etichete disponibile : General i Blank Database . Alegnd General ( figura 10) vei crea o BD nou fr a folosi abloanele de BD oferite de Access 95 ; se ajunge apoi la figura 7, dup care figura 8, adic o nou BD gata de lucru ;

15

Fig. 10 Dup selectarea n caseta de dialog de la start a opiunii Database Wizard, ajungei la aceast fereastr . Alegnd Databases vei putea opta dintr-o mulime de BD predefinite

Fig. 10.1 Fereastra New cu eticheta Databases marcat . Se observ variatele

modele predefinite de BD oferite de Access 95 . ( figura 10.1). Alegnd unul dintre abloane i confirmnd cu OK urmeaz ferestrele din figurile 7 i 8. Se lanseaz apoi automat Database Wizard i se intr ntr-o sucesiune de pai pentru specificarea unui model al bazei de date. Figura 11 v arat programul Database Wizard n aciune .

16

Fig. 11 Unul din paii pe care i execut Database Wizard . Trebuie selectate informaiile dorite, dup care se trece la pasul urmtor( Next). Se poate i reveni folosind Back . La final se ncheie procesul de creare cu Finish . Ceea ce avei de fcut la fiecare pas din Wizard este s fii ateni la ntrebrile ce vi se pun, astfel nct s dai rspunsurile corecte. Odat rspunsurile fiind date, apsai butonul Next.

Fig. 12 Fereastra de final a programului Wizard. Butonul Next este inactiv. Se apas Finish i astfel este finalizat modelul bazei de date . Se repet succesiunea aceasta pn cnd butonul Next devine inactiv ( figura 11.1). Acum trebuie apsat butonul Finish, moment n care, folosindu-se toate informaiile pe care le-ai furnizat la fiecare pas, se va crea o nou BD ( vezi i figura 12) . CAPITOLUL 2 2.1. Crearea unui tabel Fr tabele, o baz de date i pierde nelesul, deoarece tabelele sunt cele care stocheaz informaia primar. Ca o analogie, gndii-v la un calculator( PC) fr harddisk ! i vei nelege imediat afirmaia anterioar. ! Nu uitai : nregistrare se numete orice rnd dintr-un tabel, iar cmp se numete orice coloan . nainte de a trece la crearea propriu-zis trebuie s cunoatem caracteristicile cmpurilor. Astfel, un cmp este un obiect cu urmtoarele atribute : - nume, care identific un fiecare cmp; este de maxim 64 de caractere, inclusiv spaiile ce apar ; - tip de dat, care ne spune : - ce fel de valori se pot introduce n acel cmp ; - ct memorie se aloc ;17

-

ce operaii sunt permise cu acel cmp ; dac poate fi folosit n cazul unor indexri sau sortri ale nregistrrilor dup valorile acestuia ; text ( not) explicativ( ) , unde putem nsemna ce dorim pentru a descrie acel cmp i utilitatea sa ( un fel de pro memoria). 1.1 Tipuri de date Se face o descriere succint a tipurilor de date acceptate de Access 95. Acest paragraf este foarte util n nelegerea manevrrii nregistrrilor. 1.1.1 Tipul text ( text)

Acesta este tipul de dat cel mai ntlnit. Access permite o lungime implicit( default) de 50 de caractere, dar putei folosi oricte caractere ntre 1 i 255. Evident c sub form de text se pot stoca, unde este cazul: numele i prenumele, adresa, denumirea unui produs, titlul unei cri .a. Pe lng acestea, tipul text poate fi util i n alte situaii care la prima vedere ar necesita alte tipuri de date. De exemplu un numr de telefon poate fi mai avantajos stocat ca ir de caractere dect ca numr pe 4 octei( cazul numerelor noastre de telefon). De ce? S presupunem c cineva gsete c este mai la ndemn s-i noteze numerele de telefon sub forma : 312-5678, pentru a le reine mai uor ; sau sub forma 89.89.989. ntr-o astfel de scriere observai c apar i caractere ( -, .). Atunci este natural s folosim tipul de dat text pentru stocarea lor. 1.1.2 Tipul memo( memo)

Tipul memo const numai din text . Limita unui cmp memo este de 64KB pentru fiecare nregisrare, adic aproximativ 4 pagini text scrise la un rnd . Cmpurile memo pot aprea de mai multe ori ntr-o nregistrare. Se d astfel posibilitatea user-ului de a-i face nsemnri acolo unde are nevoie de ele. 1.1.3 Tipul numr( number)

Iat care sunt numerele acceptate, n ordinea cresctoare a numarului de octei necesari pentru stocarea lor : ntregi : 1. byte : este stocat pe un octet i poate ine valori ntregi numai pozitive ( de la 0 la 255) ; 2. integer : este stocate pe doi octei i poate ine numere negative i pozitive ( de la 2^4 pn la 2^4 1) ;

18

3. long integer : este stocat pe patru octei i poate ine valori negative i pozitive ( -2^64 2^64 1) ; n virgul mobil : 1. single : permite 7 cifre semnificative ; 2. double : permite 2 cifre semnificative ; Tip special : ReplicationID ( IdentificatorDuplicare sau IdentificatorMultiplicare) : este stocat pe 4 octei. Are scopul de a asigura un identificator global unic ( GUID Globally Unique Identifier) pentru acele BD ce administreaz cantiti mari de date. Modul intern de memorare impune o utilizare atent a acestuia. Se recomand folosirea lui doar n cazul n care numrul de nregistrri crete foarte mult ntre dou sincronizri ale unei BD asupra creia se opereaz din partea mai multor utilizatori. 1.1.4 Tipul dat calendaristic/or( date/time)

Access stocheaz intern data calendaristic folosind un numr n virgul mobil pe 8 octei. Ziua este interpretat ca o fraciune dintr-o zi. Modificnd proprietile acestui tip de dat se pot obine diferite comportri. Proprietile unui cmp se modific din partea de jos a ferestrei unui tabel deschis n modul Design. Mai trziu vei vedea cum se ajunge la modul Design( proiectarea unui tabel). Deocamdat reinei doar c : dac dorii ca Access 95 s introduc automat data curent, trebuie setat proprietatea unui cmp de acest tip la =Date() . Pentru a se obine automat i data i ora trebuie folosit opiunea =Now() . proprietatea Format trebuie setat( stabilit) pentru toate cmpurile de tipul date/time. Aceast definiie va fi transmis din tabel ctre interogri, formulare i rapoarte . Avei opiunile : - Short Date : reprezintarea anului n format cu dou cifre . Este suficient n majoritatea cazurilor ; - Short Date redefinit : reprezentare anului n format cu patru cifre. Modificarea se face astfel : Start->Settings->Control Panel->Regional Settings. Aici selectai eticheta Time i unde apare Short date modificai valoarea astfel nct n dreptul anului s apar yyyy n loc de yy. Apoi dai Apply urmat de OK . 1.1.5 Tipul valut( currency)

-

Acest tip este reprezentat intern n virgul fix. Puterea lui de memorare este : pentru numere ntregi poate ine pn la 3 cifre ( deci pn la 10 la puterea 3) ; pentru numere fracionare poate ine pn la sutimi dintr-o unitate . Pe scurt : 3 cifre nainte de virgul ( la dreapta virgulei) i 4 cifre dup virgul ( la stnga virgulei) .

19

Reprezentarea intern confer tipului valut precizia necesar calculelor financiare, dar i o comportare inferioar d.p.d.v. al vitezei ( este mai lent) relativ la tipul numr ( ntreg sau virgul mobil).

1.1.6

Tipul numr cu incrementare automat( autonumber)

-

Tipul implicit n reprezentarea intern este ntreg lung( long integer), deci pe 4 octei. O dat de acest tip poate fi : secvenial, ce ajut la generearea unor numere unice ; aleatoare, cu ajutorul creia se pot genera numere aleatoare. Aceste numere pot fi utile de exemplu ntr-o problem de amestec, sau ntr-un concurs cu premii, la desemnarea ctigtorului.

Reinei c dei acest tip are o reprezentare intern implicit, Access permite user-ului s modifice aceast reprezentare . Deoarece acest tip este tot un numr se poate folosi i ReplicationID n loc de valoarea implicit. Se recomand folosirea lui ReplicationID atunci cnd se lucreaz simultan cu aceeai BD, iar numrul de nregistrri are variaii rapide ( crete foarte repede ntre dou sincronizri ale BD curent folosite). La ce folosete numrul cu incrementare automat ?

Numrul cu incrementare automat d o ordine nregistrrilor. Fiecare nregistrare, pe msur ce este introdus, capt un numr de ordine. Dac se renun la introducerea unei nregistrri, numrul cu autoincrementare corespunztor este srit i nu va mai fi atribuit ulterior. De asemenea, n cazul tergerii unei nregistrri nu exist posibilitatea crerii unei alte nregistrri cu acelai numr. Acel numr nu mai poate fi folosit. Este cel mai bine ca n relaiile ntre tabele s folosii un numr cu autoincrementare . 1.1.7 Tipul da/nu( Yes/No)

Este corespunztor tipului boolean din limbajele de programare. Poate conine opoziii ca: Yes/No; On/Off; True/False . Cum poate fi folosit ? Dac dintr-un tabel sunt dorite anumite nregistrri se poate folosi acest tip pentru selecie/deselecie. Alegerea nu se face automat, ci o facei dvs. Prin stabilirea tipului la una din cele dou valori logice.

20

1.1.8

Tipul obiect OLE ( OLE object)

La specificarea acestui tip acel cmp permite folosirea unor obiecte provenite din alte aplicaii( programe Windows 95) care s-au nregistrat ca servere OLE. Este permis stocarea ntr-o baz de date a unor documente ( create cu un procesor de text), foi de calcul Excel, imagini ( de diferite formate), sunete .a. . 1.1.9 Tipul wizard de cutare ( Lookup Wizard)

Un cmp cu acest tip este capabil de a cuta n alte tabele. Ce caut ? Depinde de BD respectiv. De exemplu ce cititor are mprumutat cartea al crei titlu se cunoate. n tabelul crilor se va crea un cmp cu tipul Lookup Wizard care va stoca valoarea identificatorului tabelului cititorilor i va afia numele acestuia. 1.2 Proprietile cmpurilor Acestea apar n partea de jos a ferestrei de proiectare a unui tabel 1). ( figura

Fig. 1 Proprietile cmpurilor. Observai n partea de jos a ferestrei dou etichete : General i Lookup. Din cauz c tabelul nu are nici un cmp completat, aceste etichete nu conin nimic . 1.2.1 Format ( format)

21

Este sub form de ir. Are influen asupra modului de afiare ( output) al datelor. Putei s v gndii la irul de formatare al funciei printf() din C. Specificatorii de format foreaz funcia s afieze datele dup cum i stabilim noi, innd cont de contextul respectiv. irul de format Access poate conine : un format predefinit cum sunt : Currency, Percent( procent) sau Short Date( anul n format cu dou cifre) ; un format personalizat stabilit de utilizator ; personalizarea se face pe baza unor caractere de formatare speciale specifice tipului de cmp. 1.2.2 Masca de intrare ( input mask)

n opoziie cu Format, Input Mask controleaz modul de introducere al datelor ( partea de input). Pentru fiecare caracter introdus Input Mask determin dac : - este caracter opional sau obligatoriu ; - tipul de caracter : numeric, alfabetic, alfa-numeric sau orice caracter . In plus se poate stabili dac se introduc caractere majuscule sau minuscule i dac ele se dau de la dreapta la stnga sau invers. Access 95 are introdus i o nou masc fa de versiunile anterioare. Aceasta este masca password care determin ca toate caracterele unui cmp s fie afiate ca asteriscuri. 1.2.3 Titlu ( caption)

Pentru un cmp care nu are stabilit aceast proprietate se va folosi ca titlu al cmpului chiar numele introdus n acel cmp . Unde se folosete ? Valoarea acestei proprieti este folosit : la afiarea numelor de cmpuri, n situaia cnd un tabel este prezentat n modul Datasheet ( Foaie de date). Acesta este modul implicit utilizat de Access 95 ; n cadrul unui formular, ca etichet a unui control legat de un anume cmp ; pentru afiarea unui spaiu ntr-un nume de cmp care nu-l are n mod obinuit. De exemplu un cmp are denumirea Fisamprumut. Putem folosi acest nume ca Fia mprumut dac i stabilim proprietatea caption la Fia mprumut.

1.2.4

Valoare implicit ( default value)

22

Access 95 folosete anumite valori implicite pentru diferitele tipuri ale unui cmp ( vezi paragraful tipurilor de cmp). Trebuie s intervenim i s modificm ceea ce Access tie dinainte, dac dorim o alt valoare dect cea prestabilit. De exemplu tipul Yes/No are valoarea prestabilit 1( adic true). Pentru a nelege mai bine gndii-v la un nou program instalat. nainte de a-l configura dup dorin, el totui funcioneaz utiliznd anumite setri implicite ale productorului. Sau, rezoluia implicit a lui Windows 95 la instalare este 640*480*4. Cine dorete altceva poate schimba aceast setare. 1.2.5 Regul de validare( Validation Rule) i text de validare ( Validation Text) -> Regula de validare este un text pe care l introducei pentru a stabili o anumit limitare asupra datelor. Restriciile sale sunt : - accept maximum 255 de caractere ; - nu poate conine o trimitere la un alt cmp sau obiect ; - nu poate include funcii definite de dvs. i nici funcii domeniu( cum este Dlookup() ) . Pe baza regulii de validare se verific limitele intervalului n cazul unui cmp. De exemplu dintre toate datele de tip numr ce se pot introduce ne intereseaz doar acelea din intervalul [ 0, 100] . Regula de validare va fi atunci stabilit la Between 0 and 100 . Regula de validare folosete n crearea ei operatori oferii de Access. n exemplul dat operatori sunt : Between i and. -> Textul de validare reprezint mesajul afiat n cazul n care se ncalc regula de validare. Este un mesaj de eroare ce d lmuriri asupra modului de rezolvare. 1.2.6 Necesar ( required)

Spune dac acel cmp trebuie neaprat s apar sau nu, adic dac trebuie sau nu s fie completat . Dac dorii ca un cmp s fie neaprat completat atunci stabilii valoarea Required la Yes. Un cmp care trebuie s apar este cheia primar a oricrui tabel. Acesta apare pe prima poziie ( primul rnd al unui tabel). Access v va ateniona cu urmtorul mesaj dac nu stabilii un cmp primar pentru un tabel.

23

Este foarte util la cmpurile Foreign Key ( Cheie strin) pentru c impune o valoare pentru acel cmp, valoare necesar n relaia stabilit ntre acel tabele. 1.2.7 Proprietatea Permite valoare zero( Allow Zero Length)

Ce utilitate are ? - Este folosit doar pentru cmpuri de tip text ! - Apare n Access 95 pentru compatibilitate cu alte baze de date . n Access 95 este permis n lucru att valoarea zero ct i valoarea nul . Atenie ! Facei distincia ntre o valoare nul i o valoare zero. Valoarea nul arat c nu se tie nimic despre un anumit cmp. Acel cmp nu exist dac are valoare nul ! Valoarea zero arat c se cunoate ceva despre acel cmp, i anume c acel cmp trebuie s rmn necompletat. Dar el exist ! Exist o valoare implicit pentru Allow Zero Length i anume No . 1.2.8 Indexat ( Indexed)

Se refer la folosirea unor indeci pentru numerotarea nregistrrilor unui tabel. Putei vedea n figura 2 cum apare aceast proprietate de cmp. Cnd este util ? atunci cnd valoarea coninut de un cmp are o vitez mare de variaie ; atunci cnd cmpul este folosit intens n criteriile de selecie sau sortare .

Fig. 2 Valorile posibile ale lui Indexed . Proprietatea de cmp Indexed are ca valori posibile pe :

24

-

Yes/No : dorim ca acel cmp s fie sau nu indexat ; Yes( No Duplicates) : cmpul este indexat dar nu se poate repeta ; Yes( Duplicates OK) : cmpul este indexat i se poate repeta( de exemplu numele unui autor de carte care are n bibliotec mai multe titluri) .

Pe lng indexarea separat a cmpurilor exist posibilitatea de a indexa i o mulime de cmpuri, care vor fi privite apoi ca o unitate. Aceasta se face folosind fereastra Indexed din meniul View. Reinei : tot un index este i cheia primar( Primary key) !

1.2.9

Cutare ( Lookup)

In Access 95 orice cmp accept o etichet Lookup nou n cadrul proprietilor sale. Vedei figura 3 unde este prezentat eticheta Lookup din partea de jos a unui tabel deschis n mod design .

Fig. 3 Eticheta Lookup activ pentru un cmp de tip text. Observai opiunea implicit pentru tipul de control : combo box . Rezultatul este selectarea tipului de control ce va reprezenta cmpul respectiv n modul Datasheet de lucru cu tabelele, precum i n noile formulare ce vor fi create. Astfel : cmpurilor de tip Yes/No le corespunde implicit controlul de tip Check Box ( caset de validare) ; cmpurilor de tip Text i Number le corespunde implicit controlul de tip Text Box( caset de text) .25

-

Obs.: putei schimba controlalele de mai sus cu altele. Eticheta Lookup este valabil doar pentru cmpuri de tipul dat mai sus . 1.3 Crearea unui tabel nou Dup partea teoretic din 3.2.2 deosebit de necesar trecem la partea practic referitoare la crearea de tabele. Prezentarea se face pe pai ; la fiecare pas este dat i o figur pentru ca astfel aceast platform s v poat fi de un real folos ( chiar i n lucrul acas). Crearea unui tabel presupune parcuri paii de creare a unei noi BD ( vezi paragraful 3.1) .

Pasul 1 : Din fereastra unei noi BD( adic o BD necompletat) se selecteaz eticheta Tables i apoi se apas butonul New, dealtfel singurul activ( vezi figura 4 de mai jos) . Fig. 4 Eticheta Tables este selectat. Rmne s apsai butonul New.

Pasul 2 : Ajungei n fereastra urmtoare( figura 5). Aici putei alege ntre cele dou moduri de creare a unui tabel : cu i fr Table Wizard . a) b)

26

Fig. 5 a) Opiunea fr Wizard ; b) Opiunea cu Wizard .

-

Pasul 2.1 : Fr Table Wizard Selectai modul Design View( figura 5-a). Dup ce confirmai cu OK ajungei n fereastra prezentat n figura 6. Ce vedei este un tabel n modul de proiectare( Design).

Fig. 6 Un nou tabel la nceputul fazei de proiectare( Design). Ce date introducem n noul tabel? Observai c fereastra unui tabel n faza Design prezint trei coloane ( care nu sunt aceleai cu coloanele tabelului !) : FieldName( Numele cmpului), Data Type ( Tipul de dat al cmpului) i Description ( Descriere) . n procesul de creare a tabelului se parcurg aceste coloane de la stnga la dreapta i se coboar apoi la cmpul urmtor, unde se reia parcurgerea coloanelor .a.m.d. pn se introduc toate cmpurile dorite . Primul cmp al unei nregistrri este bine s fie mereu cheia primar ( Primary Key). Aceasta identific unic fiecare nou nregistrare ce se adaug tabelului. Dai acestui cmp denumirea StaffID ( IdentificatorPersonal). Ca tip de dat alegei AutoNumber . Se asigur astfel c

27

fiecare nou nregistrare primete un numr unic. Acest cmp este stabilit apoi cheie primar prin apsarea butonului Primary Key din bara de instrumente ( din toolbar). Odat introdus acest tip dac v uitai n josul ferestrei, la propriettile cmpului, vedei cum tipul intern de reprezentare este cel implicit( long integer) i cum acest tip de dat este indexat/fr repetare: Yes( No Duplicates) ( vezi 3.2.2.8 proprietatea Indexed) . Urmtoarele dou cmpuri sunt NumeFamilie ( Surname) i Prenume( First Name) ambele de tip text. n Field Properties putem alege o dimensiune acoperitoare, de exemplu 30. Deoarece sunt dou cmpuri cu utilizare intens n operaii de selecie sau sortare putem stabili proprietatea Indexed la Yes. Mrim astfel viteza de manipulare a lor. Dac dorii ca numele de familie s fie afiat cu un spaiu putei stabili Caption la Nume Familie. Cmpul urmtor poate fi cel de stare( Status). Semnificaia lui este aceea de angajat cu norm ntreag, cu parte dintr-o norm, sau angajat pensionar( a crei angajare a ncetat). Fiecare dintre aceste situaii este simbolizat printr-o liter : F pentru angajarea full-time, P pentru angajare part-time i R pentru cel retras din munc. Dac firma face noi angajri iar cei mai muli dintre noii angajai sunt cu norm ntreag, atunci se pote stabili proprietatea Default Value la F ( full-time). Urmeaz un cmp ce ine persoana care supervizeaz ( Supervisor). Supervizorul este una din persoanele acestui tabel. Aceast cmp este de tip Number cu Field Length setat la Long Integer, adic de acelai tip cu cel al identificatorului ( StaffID) . Deoarece cmpul acesta va fi dat ca o referin, n loc s se introduc ntreg numele supervizorului se poate face identificarea acestuia prin numrul su de ordine din tabel. De aceea este dat de tip numr. Trebuie s ne gndim c fiecare angajat este pltit funcie de numrul de ore de munc. Deci un cmp util este tariful orar ( HourlyRate). Tipul este Currency ( Valut). Apoi cmpurile ce compun adresa : Address, City, District ( s spunem judeul), State( ara) . Toate sunt de tip Text, cu Field Length pus la 80. Codul potal va fi i el de tip Text cu Field Length de 5 caractere.

-

-

-

-

- Mai alegem i un cmp ce spune data naterii ( BirthDate). Acesta are tipul evident Date/Time pe care l vom stoca sub forma scurt a anului( pe doi digii), deci Short Date n proprietatea Format. - Penultimul cmp este cel ce ne spune data angajrii JoinDate. El este de tipul Date/Time cu formatul scurt pentru an : Format este Short Date. Bineneles c putem aduga i alte cmpuri( ca data nceperii angajrii, data pensionrii, dac este transferat din alt instituie .a.) dar nu o vom face. Ultimul cmp poate fi util : o scurt descriere a angajatului. S-l numim Note ( Note). Este evident de tip text i putem pune pentru el 100 de caractere.

28

Acesta este primul tabel creat de dvs. . Sau poate c ai mai lucrat n alte baze de date. El arat ca n figura 7.

Fig. 7 Noul tabel este gata. Proiectarea lui a luat sfrit. Tabelul trebuie salvat. Mergei n meniul File -> Save As, sau folosii din toolbar iconia dischetei( fiind prima salvare v este cerut numele tabelului). Vedei figura 8. a) b)

Fig. 8 Noul tabel trebuie salvat sub un nume n cadrul BD curente: a) Forma de salvare prin meniu ( File->Save As) ; b) Forma de salvare folosind iconia dischetei din bara de instructiuni

1.4.

MODELE DE DATE

29

Modelele de date ne ajut la prelucrarea datelor i obinerea de informaii, cu ajutorul calculatorului, asupra unor domenii de activitate. In acest mod realitatea poate fi cunoscut la orice monent de timp, pentru a putea lua decizii optime. Modelul de date impune realizarea urmtoareloe etape: structura modelului; operatorii cu care se lucreaz asupra structurilor de date; reguli pentru pstrarea integritii datelor. 1. Structura modelului const n definirea entitilor i a proprietilor lor. Elementele generice care realizeaz structura de date sunt: cmpul (cel mai mic element al structurii care poate fi identificat n vederea prelucrrii); grupul simplu sau compus (format din mai multe cmpuri sau grupuri ) ; nregistrarea ( un ansamblu de cmpuri i grupuri care constituie i elementul generic al structurii. Relaia ntre nregistrri aparinnd unui obiect independent sau la mai multe obiecte independente se materializeaz ntr-o legtur ntre o realizare a nregistrrii printe i una sau mai multe realizri ale nregistrii fiu. Realizrile nregistrrilor de tip fiu formeaz clase de echivalen. Scopul formalizrii relaiilor ntre nregistrri n cadrul unui model de date este reducerea redundanei datelor. Relaia dintre nregistrri poate pune n eviden dou tipuri de legturiCLASA DE ECHIVALENT

D1

D2

D3

L1

L2

L3

L4

L5

L6

L7

LUCRRI

Fig. 5. Legturi ntre nregistrri 1. Legturi orizontale ce permit localizarea claselor de echivalen; 2. Legturi verticale care localizeaz nregistrrile printe. Legtura dintre entiti (obiecte) se mai numete asociere. Legturile dintre entiti pot fi de trei tipuri: Legtura unu la unu (11). Un astfel de exemplu poate fi dat de

30

BURSE

STUDENTI

relaia dintre burse i studenii bursieri. O burs poate fi dat unui singur student i un student poate primi o singur burs. Legtura unu la muli (1 n) . Un exemplu de acest tip l constituie legtura dintre student i grup. Un student poate face parte dintr-o singur grup i o grup are mai muli studeni.GRUPA

STUDENT1

STUDENT2

STUDENTn

Fig. 7. Legtura unu la muli Legtura de muli la muli . Relaia dintre cursurile oblgatorii audiate de o serie se studeni i studenii seriei este de acest tip.

31

CURS1

CURS2

CURS N

STUDENT1

STUDENT2

STUDENT M

Fig.8. Legtura muli la muli2. Operatorii care acioneaz asupra bazelor de date pot fi de citire, memorare,modificare,tergere, inserare etc. 3. Reguli de integritate a bazelor de date pot fi neaacceptarea modificrii sau nscrierii valorii asociate caracteristicii unui element dac nu se cunoate valoarea cheii lui sau alte restricii.

Modelul ierarhic 1.8.1 Modelul de date ierarhic Acest model este primul model care a stat la baza realizrii SGBD. Modelul ierarhic folosete dou forme de structurare a datelor tipurile de nregistrri, pentru reprezentarea tipurilor de entiti i legturile expplicite pentru reprezentarea relaiilor ntre mulimi de entiti. Diagrama structurii de date este un graf orientat reprezentnd tipuri de entiti i legturi funcionale ntre acestea. Nodurile grafului corespund tipurilor de entiti. Fiecare arc al grafului reprezint o legtur funcional ntre tipurile de entiti de la capetele arcului. Sinusul funcionalitii este opus sensului arcului. Instanierile tipului de nregistrare din extremitatea arcului determin funcional instanierile tipului de entitate din originea acestuia. n sens invers de la tipul de entitate din originea arcului spre cea din extremitate corespunde o legtur de tip funcional cu o relaie de tip 1:N (n particular 1:1) ntre mulimile de entiti corespunztoare. Intensitatea sau modelul conceptual al bazei de date ierarhice se poate reprezenta printr-o diagram a structurii de date care nu este un graf oarecare, ci satisface restricia unui arbore ordonat. Adic, nodurile sunt organizate pe nivele, fiecare nod are o singur legtur cu un nod de pe nivelul superior (excluznd rdcina) numit nodul tat i un numr arbitrar de legturi ctre nomuri de pe nivelul imediat inferior (numite noduri fii), iar poziia nodurilor avnd acelai printe este semnificativ. Sensul legturilor funcionale este ntotdeauna de la nodul tat ctre nodurile fiu. O diagram a structurii de date care satisface aceste restruicii port numele de arbore de definiie ierarhic sau simplu arbore de definiie. Un arbore de definiie este intensiunea unei baze de date ierarhice. Exemplu: Structura unui arbore de definiie ierarhic pentru o baz de date ierarhice care conine informaii referitoare la faculti este dat n figur

32

FACULTATE

PERSONAL

PROFESOR

SALA

STUDENT

Tipurile de nregistrri care reprezint entiti din arborele din figuri sunt definite astfel: FACULTATE (Cod, Nume, Adres) PERSONAL (Nume, Funcie, Salariu) PROFESOR (Nume, Funcie, Disciplina) SALA (Numr, Adres, Capacitate) STUDENT (Nume, ncadrare, Sit_colar, An, Sex) Extensiunea unui arbore de definiie deci a unei baze de date de tip ierarhic const din instanieri ale tipurilor de nregistrri corespunztoare tipurilor de entiti i din legturile dintre acestea. Extensiunea de tip nregsitrare poate fi reprezentat sub forma unui atbel. n tabele pot fi duplicate deci pot fi doi instanieri identici ai aceluiai tip de entitate.

33

COD 01 02 03

NUME ELECTRONICA AUTOMATICA ELECTROTEHNICA

ADRESA Armata Popor Spl. Indep Spl. Indep

NUME IONESCU POPA LUCA

FUNCIE Tehnician Secretar Operatoare

SALARIU 420000 450000 500000

NUME VASILE TEOTOI MITEA MITEA

FUNCIE Asistent Sef lucrari Conf.

DISCIPL MN EI BD

NUMR 306 212 206 MITEA

ADRESA Spl. Indep Leu Leu

CAPACIT 40 60 80

NUME Ionescu Lupu Pana Codru Ionescu Lupu

NCADRARE Zi Zi Zi Zi Zi Zi

SIT_scol B FB B B B FB

AN 1 2 3 4 4 3

Sex M M F M M M

34

Descrierea bazei de date de tip ierarhic, folosind un LDD, presupune definrea celor trei elemente eseniale din sturctura acesteia: - arborele de definiie ierarhic (nod rdcin i legturile tat - fiu); - tipuri de nregistrri (nodurile arborelui); - cmpurile din acdrul nregistrrilor (tipul i dimensiunea); Descrierea prin LDD este: TREE Faculti RECORD Facultate ROOT Codf INTEGER, NUME CHAR (15), ADRESA CHAR (20) RECORD personal PARENT = Facultate NUME CHAR (15), FUNCIE CHAR (10), SALAR REAL RECORD profesori PARENR = Facultate NUME CHAR (15), FUNCIE CHAR (10), DISCIPLINA CHAR (20) RECORD SALA PARENT = Facultate NUMR integer ADRESA CHAR (20), CAPACITATE integer RECORD STUDENT PARENT=Profesori NUME CHAR (15), NCADRARE CHAR (5), SIT_SCOLAR CHAR (1) AN INTEGER SEX CHAR (1) n entitatea STUDENT exist duplicarea instanierilor corespunztoare studenilor IONESCU i LUPU. Aceti instanieri sunt legai cu instanieri diferii ale entitilor profesor. Modelul ierarhic dfolosete reprezentarea relaiilor ntre entiti prin legturi funcionale explicite de tipul tat - fiu, ceea ce face ca relaiile de tipul 1:1 i 1:N s fie convenabil reprezentate. Relaia dintre facultate i profesori este o relaie de 1:N dac fiecare profesor este angajat al unei faculti. n rdcin avem o instaniere a entitii Facultate i un numr de instanieri ale entitii Profesori ca descendeni. Exemplu: 01 - Electronic - Armata poporului VASILE - AS - MN MITEA - conf - BD 02 - Automatic TEOTOI - S.l. - EI Pot aprea legturi de tipul M:N de exemplu ntre entitatea profesor i studeni. Deoarece un profesor pred la mai muli studeni i un student studiaz la mai muli profesori. Exemplu: VASILE - AS - MN IONESCU - ZI - B - 1 - M

35

LUPU - ZI - FB - 2 - M MITEA - conf - MF IONESCU - ZI - B - 1 - M LUPU - ZI - FB - 2 - M PAN - ZI - B - 3 - M Relaiile de tip M:N prin modelul ierarhic introduce o mare redundan n respectarea datelor. Necesitatea introducerii duplicatelor este o consecin a relaiilor ntre nregistrri i anume orice instaniere a unui tip de nregistrare fiu s fie legat cu o singur instaniere a unui tip de nregistrare tat. nregistrrile: 1. Cine sunt studenii care lucreaz cu asistentul VASILE? Rspunsul este uor, explorndu-se subarborele modului VASILE. 2. Cine sunt profesorii cu care lucreaz IONESCU? Rspunsul este mai dificil, deoarece trebuie explorate toi subarborii profesorilor i reinerea instanierilor din nodurile rdcin ale acelor subarbori care conin pe IONESCU. Anomalia de adugare - nu pot fi adugate date, referotoare la un student pn nu se cunoate un profesor al acestuia. Anomalia de tergere. tergerea unui nod dice la tergerea tuturor descendenilor si. tergerea numelui unui profesor duce la tergerea datelor studenilor care au lucrat cu el. Anomalia de actualizare. Atunci cnd se pune modificarea unui atribut al unei entiti trebuie explorat ntreaga baz de date pentru a depista apariiile entitii i a-i modifica atributul. Exemplu bursier pentru un student. Dac nu se exploateaz ntreaga BD se pot gsi nregistrri n care studentul apare nebursier. Modelul ierarhic nu prezint o flexibilittae nu are n structurarea datelor, fiind adecvat modelrii doar a relaiilor 1:N. Modelul limiteaz sever gama interogrilor care pot fi adresate BD. Avantajul modelului este c este simplu, uor de neles i are un nur de operatori de manipulare redus i poste fi implementat eficient chiar n cazul unor operaii de memorare cu acces strict secvenial (benzi magnetice). 1.8.2. Modelul de tip reea Modelul de tip reea se bazeaz pe tabele i grafuri corespunztor celor duo forme de structurare a datelor folosite: tipul de nregistrare i legturile explicite. Nodurile corespund tipurilor de nregistrri date sub form de tabele, iar arcele grafului corespund relaiilor dintre mulimi de entiti i sunt reprezentate sub formp de legturi ntre tabele. Intensiunea sau modelul coceptual al bazei de date de tip reea este reprezentat printr-o diagram a structurii de date care dup cum s-a artat i la cel ierarhic, este un graf ale crui noduri reprezint legturi funcionale ntre acestea. Sensul arcelor este invers relaiei de funcionalitate. Un anumit tip de entiti poate fi legat la mai multe entiti printe i chiar prin mai multe arce la aceeai entitate de tip printe. Aici arcele sunt marcate i se numesc tip de set i reprezint o legtur logic ntre dou tipuri de nregistrri i PROPRIETAR I MEMBRU. Arcul este orientat de la PROPRIETAR LA MEMBRU. Numele tipului de set este eticheta arcului. Tipul funcionalitii este de la tipul mebru la tipul proprietar. Un tip set repreint legturile 1:1 sau 1:N dar nu pentru legturile M:N. Exemplu:BD Faculti

36

FACULTATE Angajai PERSONAL Cadre didactice

Sli SALA

PROFESORI Note acordate NOTE Note primite STUDENI

Fig. Model conceptual al BD de tip reea. Tipurile de nregistrri: Facultate (cod, Nume, Adres), Personal (Nume, funcie, Salar), Profesor (Nume, funcie, Disciplin), Sala (Numr, Adres, Capacitate), Not (Not), Student (Nume, ncadrare, Sit_scolar, An, Sex) Extensiunea unei diagrame a structurii de date pentru o BD de tip reea const n instanieri de tip nregistrri i instanieri de tip set. Extensiunea de tip nregistrare este un tabel i n el sunt permise duplicatele, iar nregistrrile pot fi ordonate. Extensiunea unui tip de set poate fi reprezentat ca o colecie de arce ntre tabele, reprezentnd tipul de nregistrare proprietar i tipul de nregistrare membru. Un set este reprezentarea unui legturi funcionale de tip 1:1 sau 1: N ntre o nregistrare de tip proprietar i una sau mai multe de tip membru. Proprietile seturilor 1. Fiecare tip de set are un tip de nregistrare proprietar. 2. Fiecare instaniere a unui tip de proprietar este proprietarul unui set. Un set poate s nu includ nregistrri membru. 3. fiecare tip de set include cel puin un tip de nregistrare membru. Unele tipuri de set pot include mai multe tipuri membru, rezult tipuri de set multi - membru. 4. Un tip de articol nu poate fi i proprietar i membru al aceluiai tip de set. 5. Nici o instaniere de nregistrare nu poate participa la mai mult de o instaniere a unui tip de set.

37

COD 01 02 03

NUME ELECTRONICA AUTOMATICA ELECTROTEHNICA

ADRESA LEU Spl. Indep Spl. Indep

NUME IONESCU POPA

FUNCIE Tehnician Secretar

SALARIU 420000 450000

NUME VASILE TEOTOI MITEA MITEA

FUNCIE Asistent Sef lucrari Conf.

DISCIPL MN EI BD

NUMR 306 212 206 MITEA

ADRESA Spl. Indep Leu Leu

CAPACIT 40 60 80

NOTA 7 9 10 7 9 10 8

NUME Ionescu Lupu Pana Codru Marcu Ilea

NCADRARE Zi Zi Zi Zi Zi Zi

SIT_scol B FB B B B FB

AN 1 2 3 4 4 3

Sex M M F M M M

Figura Extensiunea bazei de date de tip reea

38

Implementarea seturilor este realizat n majoritatea sistemelor prin lanuri de pointeri dei propunerile (DBTG Data Base Task Group) nu exclud reprezentarea cum ar fi matricea de pointeri. Seturile implementate cu lanuri de pointeri se prezint sub forma unor liste circulare avnd cap de list o nregistrare a tipului proprietar. Pentru nlnuirea nregistrrilor ntr-un set adminstrator bazei de date (ABD) are la dispoziie folosirea mai multor tipuri de pointeri: - pointeri de tip NEXT - pentru nlnuirea simpl nainte a nregistrrilor, prezena acestor pointeri este obligatorie n orice set. - pointeri de tip PRIOR - pentru nlnuirea napoi a nregistrrilor, pointer opional. - pointer de tip OWNER - leag o nregsitrare de tip membru cu proprietarul setului: pointer opional. Cele trei tipuri de pointeri se pot combina rezultnd mai multe structuri posibile pentru reprezentarea seturilor. Structura cu pointeri Next Este structura cea mai simpl i economic. Permite accesul secvenial unidirecional la membrii setului pornind de la proprietarul acestuia. Dezavantajul este c la tergerea unui membru Mk pentru actualizarea lanului de legturi este necesar s accesm membrul Mk-1, ceea ce n lipsa pointerilor de tip PRIOR se poate realiza numai prin parcurgerea lanului PROPRIETAR - membru Mk-1 care poate fi costisitoare pentru k - mare.P

M1

Mk-1

Mk

Mn

Figura Structura cu pointeri Next. Structura cu pointeri Next i Prior Este o list circular bidirecional care permite accesul nainte i napoi la membrii setului. Dei implic consum mare de memorie i costuri suplimentare pentru actualizarea pointerilor, structura este util cnd sunt multe tergeri, deoarece permite accesul direct de la Mk-1 la Mk cel care se terge prin legtura PRIOR Mk la Mk-1.P

M1

Mk-1

Mk

Mn

Figura Structura cu pointeri Next i Prior. Structura cu pointeri Next i Owner Se utilizeaz cnd este necesar regsirea direct a proprietarului pornind de la membrii si.P

M1

Mk-1

Mk

Mn

Figura structura cu pointeri Next i Owner. Structura cu pointeri Next, Prior i Owner

39

Este cea mai complicat structur i implic cele mai ridicate costuri. Trebuie o justificare pentru utilizatori.P

M1

Mk-1

Mk

Mn

Figura Structura cu pointeri Next, Prior i Owner. O descriere minimal a strcuturii de baze de date de tip reea implic descrierea tipurilor de nregistrri (Nume, Numele cmpului, Tipul, Dimensiunea cmpului) i descrierea tipurilor de set (numele tipului de set, precizarea tipului de proprietar i a tipurilor de membru). LDD au o sintax complex i permit specificarea unor opiuni cum ar fi: modul de acces la nregistrri, structurile folosite pentru reprezentarea seturilor, ordonarea membrilor etc. Exemplu: RECORD NAME IS FACULTATE CODF TYPE IS FIXED 2 NUME TYPE IS CHARACTER 15 ADRESA TYPE IS CHARACTER 20 RECORD NAME IS PERSONAL NUME TYPE IS CHARACTER 15 FUNCIE TYPE IS CHARACTER 10 SALAR TYPE IS FIXED 5 RECORD NAME IS PROFESORI NUME TYPE IS CHARACTER 15 FUNCIE TYPE IS CHARACTER 10 DISCIPLINA TYPE IS CHARACTER 20 RECORD NAME IS SALA NUMR TYPE IS CHARACTER 20 CAPACITATE TYPE FIXED 3 RECORD NAME IS NOTE NOTA TYPE IS FIXED 2 RECORD NAME IS STUDENT NUME TYPE IS CHARACTER 15 NCADRARE TYPE IS CHARACTER 5 SIT SCOLAR TYPE IS CHARACTER 2 AN TYPE IS FIXED 1 SEX TYPE IS CHARACTER 1 SET NAME IS ANGAJAI OWNER IS FACULTATE MEMBER IS PROFESORI SET NAME IS CADRE OWNER IS FACULTATE MEMBER IS PROFESORI SET NAME IS SALI OWNER IS FACULTATE MEMBER IS SALA SET NAME IS NOTE ACORDATE OWNER IS PROFESOR MEMBER IS NOTE SET NAME IS NOTE_PRIMITE40

OWNER IS STUDENI MEMBER IS NOTE Se observ c n descrierea de mai sus un anumit tip de nregistrare poate s apar ca membru a mai multor tipuri de set. Cazul nregistrrii Note care face parte din dou seturi dar caestea trebuie s fie diferite Note_acordate i Note_primite. tim c orice nregistrare nu poate fi membru n mai multe instanieri ale aceluiai tip de set. Reprezentarea direct a legturilor de tip M:_N ntre tipuri de entiti este imposibil. Folosind un tip de nregistrare intermediar aceste relaii pot fi reprezentate dac avem dou tipuri de legturi funcionale. Exemplu: reprezentarea relaiei dintre entitile Profesor i Student.VASILE MITEA

7

9

10

8

9

10

7

IONESCU

LUPU

PANA

CODRU

MARCU

ILEA

Figura STRUCTURA SETURILOR DINTRE TIPURILE DE ENTITI PROFESOR I STUDENT Natura funcional a legturilor impus ntre entiti se explic prin considerente de implementare. Dac n-ar fi aceast restricie o anumit nregistrare poate aprea ca membru la un numr de seturi care nu poate fi cunoscut la momentul respectiv (al descrierii modelului conceptual al bazei de date) i acest numr s-ar modifica dinamic n timpul exploatrii BD ceea ce duce la un numr variabil de pointeri asociai unei nregsitrri. O astfel de structur devine posibil. DECI O NREGISTRARE POATE S APAR N ORICTE SETURI DE TIPURI DIFERITE (Nr. cunoscut n momentul decrierii BD) dar numai o singur dat ntr-un anumit tip de set. Anomalia de adugare Operaia de adugare a unui nou student este simpl. Ea nu are legturi cu celelalte entiti. Exist un singur pointer de la nregistrare student la ea nsi. Anomalia de tergere Se poate terge nregistrarea unui cadru didactic fr a afecta nregsitrrile corespunztoare studenilor care au o existen de sine stttoare. Anomalia de actualizare Putem modifica atributele unui student fr pericolul afectrii bazei de date, deoarece fiecare student apare ntr-o singur nregistrare a bazei de date. Dezavantajul acestui model reea este c are o structur apropiat de structura de memorare. Legtuirle dintre entiti devinexplicite realizate prin pointeri a cror gestiune de manipulare este n sarcina utilizatorului. ntreaga structur de lanuri devine vizibil utilizatorului. 1.8.3 Modelul de date relaional a aprut trziu. Acest model este foarte util i mai ales din punctul de vedere al realizrii SGBD - urilor performabile. Primul model a fost propus de cercettorul american E.F. Godd . SGBD pentru aceste modele au condus la limbaje pentru manipularea datelor de nivel nalt. Structuri de reprezentare

41

Intensiunea unei BD relaionale este specificat printr-o schem relaional care const din una sau mai multe scheme de relaie. Exemplu de schem relaional Facultate (Codf, Nume, Adres), Personal (Codf, Nume, funcie, salar), Profesor (Codf, Nume, funcie, disciplin), Sala (Codf, Numr, Adres, Capacitate), Student (Nume, ncadrare, sit_scolar, An, Sex), Note (Nume_profesor, Nume_student, Nota) O schem de relaie poate fi folosit n mod direct pentru reprezentarea unui tip de entitate. Pentru reprezentarea legturilor dintre tipurile de entiti se utilzeaz dou tehnici: 1. Propagarea cheilor dintr-o schem de relaie ntr-alta. Aceast tehnic se utilizeaz pentru reprezentarea legturilor de tip funcional (relaii de tip 1:1 i 1:N). Legtura funcional dintre tipuirile de entiti Personal i Facultate. Atributul Codf din facultatea se propag entitii Personal. 2. Crearea unei scheme de relaie separate prin care se reprezint legtura dintre dou tipuri de entiti. Aceast tehnic se poate utiliza pentru a reprezenta orice tip de legtur inclusiv M:N. Considernd legtura dintre entitile Profesor i student aceasta poate fi reprezentat printr-o schem de relaie separat. n cazul nostru NOTE care are ca atribute cheile celor dou entiti atributele, Nume i rebotezate Nume_profesor i Nume_student n schema de relaie Note. Mai pot aprea i alte atribute care arat legtura dintre cele dou entiti cum este n cazul nostru nota. Extensiunea unei baze de date relaionale este reprezentat sub form de tabele. Fiecare tabel corespunde unei scheme de relaie din cadrul schemei relaionale. n aceste tabele nu sunt permise duplicatele, iar ordinea liniilor este arbitrar. Un tabel corespunde unei relaii din punct de vedere matematic i este denumit relaie n sensul BD. O coloan a tabelului corespunde unui atribut al unui tip de entitate i se numete atribut. O linie a tabelului reprezint o instaniere a unui tip de entitate sau a unui tip de legtur i se numete tripl. Tabelul reprezint o mulime de entiti de un tip dat, fie mulimea legturilor existente ntre dou sau mai multe mulimi de entiti. FACULTATE Codf Nume Adresa 01 Electronica LEU 02 Automatica Spl. Independenei Codf 01 02 Codf 02 01 Codf 01 01 Nume IONESCU POPA Nume 306 212 Nume VASILE MITEA PERSONAL Funcie Tehnician Secretar SALA Adresa Spl. Independenei LEU PROFESOR Funcia Ass Conf42

Salariu 420 000 450 000 Capacitatea 40 60 Disciplina MN BD

Nume_profesor VASILE VASILE VASILE MITEA MITEA MITEA MITEA Nume Ionescu Lupu Pana Codru Marcu Incadrare Zi Zi Zi Zi zi

NOTE Nume_student LUPU PANA CODRU CODRU MARCU ILEA IONESCU STUDENT Sit_scolara B FB B B B An 1 2 3 4 4

Nota 9 7 10 7 9 10 7 Sex M M F M M

Definirea modelului conceptual pentru o baz de date relaional const n specificarea fiecrei scheme de relaie din cadrul schemei relaionale. Aceasta se face cu LDD. LDD pe lng definirea relaiilor include i faciliti pentru definirea vederilor i a indecilor, pentru stabilirea de constrngeri asupra datelor pentru specificarea cheilor primare, etc. n majoritatea sistemelor relaioanle LDD este integrat n modulul software care implementeaz LMD. Acest lucru s-a realizat datorit faptului c multe funciuni ale LDD fac apel la facilitile de formulare a interogrilor din LDD. n acest mod exist un singur modul LDD - LMD i o singur interfa utilizator pentru ambele funciuni. Descrierea Bd prin LDD din SGBD relaional System R Comanda SQL pentru definirea relaiilor este CRATE TABLE i permite specificarea complet a unei scheme de relaie. CREATE TABLE Facultate Codf INTEGER (3) NOT NULL, NUME CHAR (15), Adresa CHAR (20)) CREATE TABLE Personal (Codf INTEGER (3), NUME CHAR (15) NOT NULL, FUNCTIE CHAR (10), DISCIPLIN CHAR (20)) CREATE TABLE Student (Nume CHAR (15) NOT NULL, INCADRARE CHAR (2), SITUAIE_ Scolar CHAR (1), An studiu DECIMAL (1), SEX CHAR (1)) CREATE TABLE Note (Nume_Profesor CHAR (15): NOT NULL, Nume_student CHAR (15): NOT NULL, Nota Decimal (2)) NOT NULL specific c toate liniile din tabelul corespunztor trebuie s aib o valoare specific pentru acest atribut. Aceast specificare este necesar pentru acele atribute

43

care particip la identificarea unic a tuplelor unei relaii (ex: fac parte dintr-o cheie primar.) Acest model este simplu i se bazeaz pe structuri de reprezentare arborescente . Are o rdcin i fiecare nod din arbore care nu este rdcin sau nod final are un singur nod superior i mai multe noduri inferioare, deci legturi de tipul 1 1 respectiv 1m. Modul ierarhic pune la dispoziie dou structuri: tipuri de nregistrri i ierarhia. Datorit acestor structuri modelul ofer urmtorii operatori: operatori de citire pentru tipul de nregistrare, operatori de citire pentru ierarhie, operatori de memorare pentru tipuri de inregistrare i operatori de memeorare pentru ierarhie. La acest model apar restriciile: nu se pot nsera noi realizri ale unei nregistrri subordonate dac nu sunt cunoscui superiorii i prin tergerea unei realizri rdcin se terg automat toate nregistrrile subordonate. Modelul reea Acest model este asemntor cu cel ierarhic cu deosebirea c fiecare inferior poate avea mai muli superiori, deci avem legturi de tipul m la n. Aici avem dou structuri : tipul de nregistrri dau atributele unei entiti i tipul de set care d legturile dinte tipurile de nregistrare. Actualizrile sunt adugarea,tergerea,modificarea care se pot opera att n tipurile nregistrrilor logice ct i n legturi. Interogarea se poate referi la atributele unui singur tip de nregistrri logice ,legturile dintre dou tipuri de nregistrri sau mai multe. Modelul relaional Acest model are la baz teoria matematic a relaiilor. Are o singur structur de date : relaia (tabelul), o submulime a produsului cartezian al unor domenii (domeniul fiind o mulime de valori a entitilor). n concluzie, un astfel de modelpoate fi privit ca o mulime de tabele obinute prin metoda normalizrii. Normalizarea pleac de la o mulime de atribute (cmpuri de date) i o mulime de dependene funcionale dintre atribute care conduc la o schem conceptual a modelului relaional ntr-o form normalizat fr restricii de actualizri.1.5. BAZE DE DATE Utiliznd calculatorul se pot stoca pe perioade mari de timp informaii despre diferite elemente care intervin ntr-un proces i diferite relaii ntre ele, care pot fi utilizate n orice moment sub forma bazelor de date. Definiia 1. Se numete baz de date (BD) un sistem de colecii de date ntre care exist o interdependen logic multipl, potrivit unor relaii prestabilite cu ocazia descierii conceptuale, sistemul de colecii de date putnd fi exploatat de mai muli utilizatori n viziuni diferite. Putem spune c bazele de date reprezint o structur deoarece este format dintr-o mulime de date (informaii) , cu relaii logice i operaii de prelucrare. In aceast mulime se relizeaz o simplificare prin eliminarea informaiilor redundante, astfel c mai multe fiiere pot fi privite n ansamblu realizndu-se n acest mod o integrarea a datelor. Accesul diferitelor persoane, la aceleai baze de date indiferent de locul unde sunt situate, se face simultan.

44

Datele referitoare la totalitatea circuitelor integrate dintr-o magazie, datele studenilor unei faculti, datele angajailor dintr-un fiet, fiecare dintre ele reprezint o baz de date. Creerea acestor baze de date, stocarea, prelucrarea lor i obinerea de informaii asupra lor se realizeaz cu ajutorul sistemului de gestiune a bazelor de date. Definiia 2. Se numete sistem de gestiune a bazelor de date (SGBD), sistemul de programe care permite construirea unor baze de date, introducerea informaiilor n bazele de date i dezvoltarea de aplicaii privind bazele de date. Cu ajutorul SGBD-ului se realizeaz interfaa utilizator -sistem de operare, prin care utilizatorul cu un limbaj de nivel nalt obine informaii asupra bazelor de date. 1.8 MODELUL DE DATE 1.8.1 Modelul de date ierarhic Acest model este primul model care a stat la baza realizrii SGBD. Modelul ierarhic folosete dou forme de structurare a datelor tipurile de nregistrri, pentru reprezentarea tipurilor de entiti i legturile expplicite pentru reprezentarea relaiilor ntre mulimi de entiti. Diagrama structurii de date este un graf orientat reprezentnd tipuri de entiti i legturi funcionale ntre acestea. Nodurile grafului corespund tipurilor de entiti. Fiecare arc al grafului reprezint o legtur funcional ntre tipurile de entiti de la capetele arcului. Sinusul funcionalitii este opus sensului arcului. Instanierile tipului de nregistrare din extremitatea arcului determin funcional instanierile tipului de entitate din originea acestuia. n sens invers de la tipul de entitate din originea arcului spre cea din extremitate corespunde o legtur de tip funcional cu o relaie de tip 1:N (n particular 1:1) ntre mulimile de entiti corespunztoare. Intensitatea sau modelul conceptual al bazei de date ierarhice se poate reprezenta printr-o diagram a structurii de date care nu este un graf oarecare, ci satisface restricia unui arbore ordonat. Adic, nodurile sunt organizate pe nivele, fiecare nod are o singur legtur cu un nod de pe nivelul superior (excluznd rdcina) numit nodul tat i un numr arbitrar de legturi ctre nomuri de pe nivelul imediat inferior (numite noduri fii), iar poziia nodurilor avnd acelai printe este semnificativ. Sensul legturilor funcionale este ntotdeauna de la nodul tat ctre nodurile fiu. O diagram a structurii de date care satisface aceste restruicii port numele de arbore de definiie ierarhic sau simplu arbore de definiie. Un arbore de definiie este intensiunea unei baze de date ierarhice. Exemplu: Structura unui arbore de definiie ierarhic pentru o baz de date ierarhice care conine informaii referitoare la faculti este dat n figurFACULTATE

PERSONAL

PROFESOR

SALA

STUDENT

Tipurile de nregistrri care reprezint entiti din arborele din figuri sunt definite astfel: FACULTATE (Cod, Nume, Adres) PERSONAL (Nume, Funcie, Salariu) PROFESOR (Nume, Funcie, Disciplina)45

SALA (Numr, Adres, Capacitate) STUDENT (Nume, ncadrare, Sit_colar, An, Sex) Extensiunea unui arbore de definiie deci a unei baze de date de tip ierarhic const din instanieri ale tipurilor de nregistrri corespunztoare tipurilor de entiti i din legturile dintre acestea. Extensiunea de tip nregsitrare poate fi reprezentat sub forma unui atbel. n tabele pot fi duplicate deci pot fi doi instanieri identici ai aceluiai tip de entitate.

46

COD 01 02 03

NUME ELECTRONICA AUTOMATICA ELECTROTEHNICA

ADRESA Armata Popor Spl. Indep Spl. Indep

NUME IONESCU POPA LUCA

FUNCIE Tehnician Secretar Operatoare

SALARIU 420000 450000 500000

NUME VASILE TEOTOI MITEA MITEA

FUNCIE Asistent Sef lucrari Conf.

DISCIPL MN EI BD

NUMR 306 212 206 MITEA

ADRESA Spl. Indep Leu Leu

NUME Ionescu Lupu Pana Codru Ionescu Lupu

NCADRAR Zi Zi Zi Zi Zi Zi

47

Descrierea bazei de date de tip ierarhic, folosind un LDD, presupune definrea celor trei elemente eseniale din sturctura acesteia: - arborele de definiie ierarhic (nod rdcin i legturile tat - fiu); - tipuri de nregistrri (nodurile arborelui); - cmpurile din acdrul nregistrrilor (tipul i dimensiunea); Descrierea prin LDD este: TREE Faculti RECORD Facultate ROOT Codf INTEGER, NUME CHAR (15), ADRESA CHAR (20) RECORD personal PARENT = Facultate NUME CHAR (15), FUNCIE CHAR (10), SALAR REAL RECORD profesori PARENR = Facultate NUME CHAR (15), FUNCIE CHAR (10), DISCIPLINA CHAR (20) RECORD SALA PARENT = Facultate NUMR integer ADRESA CHAR (20), CAPACITATE integer RECORD STUDENT PARENT=Profesori NUME CHAR (15), NCADRARE CHAR (5), SIT_SCOLAR CHAR (1) AN INTEGER SEX CHAR (1) n entitatea STUDENT exist duplicarea instanierilor corespunztoare studenilor IONESCU i LUPU. Aceti instanieri sunt legai cu instanieri diferii ale entitilor profesor. Modelul ierarhic dfolosete reprezentarea relaiilor ntre entiti prin legturi funcionale explicite de tipul tat - fiu, ceea ce face ca relaiile de tipul 1:1 i 1:N s fie convenabil reprezentate. Relaia dintre facultate i profesori este o relaie de 1:N dac fiecare profesor este angajat al unei faculti. n rdcin avem o instaniere a entitii Facultate i un numr de instanieri ale entitii Profesori ca descendeni. Exemplu: 01 - Electronic - Armata poporului VASILE - AS - MN MITEA - conf - BD 02 - Automatic TEOTOI - S.l. - EI Pot aprea legturi de tipul M:N de exemplu ntre entitatea profesor i studeni. Deoarece un profesor pred la mai muli studeni i un student studiaz la mai muli profesori. Exemplu: VASILE - AS - MN IONESCU - ZI - B - 1 - M

48

LUPU - ZI - FB - 2 - M MITEA - conf - MF IONESCU - ZI - B - 1 - M LUPU - ZI - FB - 2 - M PAN - ZI - B - 3 - M Relaiile de tip M:N prin modelul ierarhic introduce o mare redundan n respectarea datelor. Necesitatea introducerii duplicatelor este o consecin a relaiilor ntre nregistrri i anume orice instaniere a unui tip de nregistrare fiu s fie legat cu o singur instaniere a unui tip de nregistrare tat. nregistrrile: 1. Cine sunt studenii care lucreaz cu asistentul VASILE? Rspunsul este uor, explorndu-se subarborele modului VASILE. 2. Cine sunt profesorii cu care lucreaz IONESCU? Rspunsul este mai dificil, deoarece trebuie explorate toi subarborii profesorilor i reinerea instanierilor din nodurile rdcin ale acelor subarbori care conin pe IONESCU. Anomalia de adugare - nu pot fi adugate date, referotoare la un student pn nu se cunoate un profesor al acestuia. Anomalia de tergere. tergerea unui nod dice la tergerea tuturor descendenilor si. tergerea numelui unui profesor duce la tergerea datelor studenilor care au lucrat cu el. Anomalia de actualizare. Atunci cnd se pune modificarea unui atribut al unei entiti trebuie explorat ntreaga baz de date pentru a depista apariiile entitii i a-i modifica atributul. Exemplu bursier pentru un student. Dac nu se exploateaz ntreaga BD se pot gsi nregistrri n care studentul apare nebursier. Modelul ierarhic nu prezint o flexibilittae nu are n structurarea datelor, fiind adecvat modelrii doar a relaiilor 1:N. Modelul limiteaz sever gama interogrilor care pot fi adresate BD. Avantajul modelului este c este simplu, uor de neles i are un nur de operatori de manipulare redus i poste fi implementat eficient chiar n cazul unor operaii de memorare cu acces strict secvenial (benzi magnetice). 1.8.2. Modelul de tip reea Modelul de tip reea se bazeaz pe tabele i grafuri corespunztor celor duo forme de structurare a datelor folosite: tipul de nregistrare i legturile explicite. Nodurile corespund tipurilor de nregistrri date sub form de tabele, iar arcele grafului corespund relaiilor dintre mulimi de entiti i sunt reprezentate sub formp de legturi ntre tabele. Intensiunea sau modelul coceptual al bazei de date de tip reea este reprezentat printr-o diagram a structurii de date care dup cum s-a artat i la cel ierarhic, este un graf ale crui noduri reprezint legturi funcionale ntre acestea. Sensul arcelor este invers relaiei de funcionalitate. Un anumit tip de entiti poate fi legat la mai multe entiti printe i chiar prin mai multe arce la aceeai entitate de tip printe. Aici arcele sunt marcate i se numesc tip de set i reprezint o legtur logic ntre dou tipuri de nregistrri i PROPRIETAR I MEMBRU. Arcul este orientat de la PROPRIETAR LA MEMBRU. Numele tipului de set este eticheta arcului. Tipul funcionalitii este de la tipul mebru la tipul proprietar. Un tip set repreint legturile 1:1 sau 1:N dar nu pentru legturile M:N. Exemplu:BD Faculti

49

FACULTATE Angajai PERSONAL Cadre didactice

Sli SALA

PROFESORI Note acordate NOTE Note primite STUDENI

Fig. Model conceptual al BD de tip reea. Tipurile de nregistrri: Facultate (cod, Nume, Adres), Personal (Nume, funcie, Salar), Profesor (Nume, funcie, Disciplin), Sala (Numr, Adres, Capacitate), Not (Not), Student (Nume, ncadrare, Sit_scolar, An, Sex) Extensiunea unei diagrame a structurii de date pentru o BD de tip reea const n instanieri de tip nregistrri i instanieri de tip set. Extensiunea de tip nregistrare este un tabel i n el sunt permise duplicatele, iar nregistrrile pot fi ordonate. Extensiunea unui tip de set poate fi reprezentat ca o colecie de arce ntre tabele, reprezentnd tipul de nregistrare proprietar i tipul de nregistrare membru. Un set este reprezentarea unui legturi funcionale de tip 1:1 sau 1: N ntre o nregistrare de tip proprietar i una sau mai multe de tip membru. Proprietile seturilor 1. Fiecare tip de set are un tip de nregistrare proprietar. 2. Fiecare instaniere a unui tip de proprietar este proprietarul unui set. Un set poate s nu includ nregistrri membru. 3. fiecare tip de set include cel puin un tip de nregistrare membru. Unele tipuri de set pot include mai multe tipuri membru, rezult tipuri de set multi - membru. 4. Un tip de articol nu poate fi i proprietar i membru al aceluiai tip de set. 5. Nici o instaniere de nregistrare nu poate participa la mai mult de o instaniere a unui tip de set.

50

COD 01 02 03

NUME ELECTRONICA AUTOMATICA ELECTROTEHNICA

ADRESA LEU Spl. Indep Spl. Indep

NUME IONESCU POPA

FUNCIE Tehnician Secretar

SALARIU 420000 450000

NUME VASILE TEOTOI MITEA MITEA

FUNCIE Asistent Sef lucrari Conf.

DISCIPL MN EI BD

NUMR 306 212 206 MITEA

ADRESA Spl. Indep Leu Leu

CAPACIT 40 60 80

NOTA 7 9 10 7 9 10 8

NUME Ionescu Lupu Pana Codru Marcu Ilea

NCADRARE Zi Zi Zi Zi Zi Zi

SIT_scol B FB B B B FB

AN 1 2 3 4 4 3

Sex M M F M M M

Figura Extensiunea bazei de date de tip reea

52

Implementarea seturilor este realizat n majoritatea sistemelor prin lanuri de pointeri dei propunerile (DBTG Data Base Task Group) nu exclud reprezentarea cum ar fi matricea de pointeri. Seturile implementate cu lanuri de pointeri se prezint sub forma unor liste circulare avnd cap de list o nregistrare a tipului proprietar. Pentru nlnuirea nregistrrilor ntr-un set adminstrator bazei de date (ABD) are la dispoziie folosirea mai multor tipuri de pointeri: - pointeri de tip NEXT - pentru nlnuirea simpl nainte a nregistrrilor, prezena acestor pointeri este obligatorie n orice set. - pointeri de tip PRIOR - pentru nlnuirea napoi a nregistrrilor, pointer opional. - pointer de tip OWNER - leag o nregsitrare de tip membru cu proprietarul setului: pointer opional. Cele trei tipuri de pointeri se pot combina rezultnd mai multe structuri posibile pentru reprezentarea seturilor. Structura cu pointeri Next Este structura cea mai simpl i economic. Permite accesul secvenial unidirecional la membrii setului pornind de la proprietarul acestuia. Dezavantajul este c la tergerea unui membru Mk pentru actualizarea lanului de legturi este necesar s accesm membrul Mk-1, ceea ce n lipsa pointerilor de tip PRIOR se poate realiza numai prin parcurgerea lanului PROPRIETAR - membru Mk-1 care poate fi costisitoare pentru k - mare.P

M1

Mk-1

Mk

Mn

Figura Structura cu pointeri Next. Structura cu pointeri Next i Prior Este o list circular bidirecional care permite accesul nainte i napoi la membrii setului. Dei implic consum mare de memorie i costuri suplimentare pentru actualizarea pointerilor, structura este util cnd sunt multe tergeri, deoarece permite accesul direct de la Mk-1 la Mk cel care se terge prin legtura PRIOR Mk la Mk-1.P

M1

Mk-1

Mk

Mn

Figura Structura cu pointeri Next i Prior. Structura cu pointeri Next i Owner Se utilizeaz cnd este necesar regsirea direct a proprietarului pornind de la membrii si.P

M1

Mk-1

Mk

Mn

Figura structura cu pointeri Next i Owner. Structura cu pointeri Next, Prior i Owner

Este cea mai complicat structur i implic cele mai ridicate costuri. Trebuie o justificare pentru utilizatori.P

M1

Mk-1

Mk

Mn

Figura Structura cu pointeri Next, Prior i Owner. O descriere minimal a strcuturii de baze de date de tip reea implic descrierea tipurilor de nregistrri (Nume, Numele cmpului, Tipul, Dimensiunea cmpului) i descrierea tipurilor de set (numele tipului de set, precizarea tipului de proprietar i a tipurilor de membru). LDD au o sintax complex i permit specificarea unor opiuni cum ar fi: modul de acces la nregistrri, structurile folosite pentru reprezentarea seturilor, ordonarea membrilor etc. Exemplu: RECORD NAME IS FACULTATE CODF TYPE IS FIXED 2 NUME TYPE IS CHARACTER 15 ADRESA TYPE IS CHARACTER 20 RECORD NAME IS PERSONAL NUME TYPE IS CHARACTER 15 FUNCIE TYPE IS CHARACTER 10 SALAR TYPE IS FIXED 5 RECORD NAME IS PROFESORI NUME TYPE IS CHARACTER 15 FUNCIE TYPE IS CHARACTER 10 DISCIPLINA TYPE IS CHARACTER 20 RECORD NAME IS SALA NUMR TYPE IS CHARACTER 20 CAPACITATE TYPE FIXED 3 RECORD NAME IS NOTE NOTA TYPE IS FIXED 2 RECORD NAME IS STUDENT NUME TYPE IS CHARACTER 15 NCADRARE TYPE IS CHARACTER 5 SIT SCOLAR TYPE IS CHARACTER 2 AN TYPE IS FIXED 1 SEX TYPE IS CHARACTER 1 SET NAME IS ANGAJAI OWNER IS FACULTATE MEMBER IS PROFESORI SET NAME IS CADRE OWNER IS FACULTATE MEMBER IS PROFESORI SET NAME IS SALI OWNER IS FACULTATE MEMBER IS SALA54

SET NAME IS NOTE ACORDATE OWNER IS PROFESOR MEMBER IS NOTE SET NAME IS NOTE_PRIMITE OWNER IS STUDENI MEMBER IS NOTE Se observ c n descrierea de mai sus un anumit tip de nregistrare poate s apar ca membru a mai multor tipuri de set. Cazul nregistrrii Note care face parte din dou seturi dar caestea trebuie s fie diferite Note_acordate i Note_primite. tim c orice nregistrare nu poate fi membru n mai multe instanieri ale aceluiai tip de set. Reprezentarea direct a legturilor de tip M:_N ntre tipuri de entiti este imposibil. Folosind un tip de nregistrare intermediar aceste relaii pot fi reprezentate dac avem dou tipuri de legturi funcionale. Exemplu: reprezentarea relaiei dintre entitile Profesor i Student.VASILE MITEA

7

9

10

8

9

10

7

IONESCU

LUPU

PANA

CODRU

MARCU

ILEA

Figura STRUCTURA SETURILOR DINTRE TIPURILE DE ENTITI PROFESOR I STUDENT Natura funcional a legturilor impus ntre entiti se explic prin considerente de implementare. Dac n-ar fi aceast restricie o anumit nregistrare poate aprea ca membru la un numr de seturi care nu poate fi cunoscut la momentul respectiv (al descrierii modelului conceptual al bazei de date) i acest numr s-ar modifica dinamic n timpul exploatrii BD ceea ce duce la un numr variabil de pointeri asociai unei nregsitrri. O astfel de structur devine posibil. DECI O NREGISTRARE POATE S APAR N ORICTE SETURI DE TIPURI DIFERITE (Nr. cunoscut n momentul decrierii BD) dar numai o singur dat ntr-un anumit tip de set. Anomalia de adugare Operaia de adugare a unui nou student este simpl. Ea nu are legturi cu celelalte entiti. Exist un singur pointer de la nregistrare student la ea nsi. Anomalia de tergere Se poate terge nregistrarea unui cadru didactic fr a afecta nregsitrrile corespunztoare studenilor care au o existen de sine stttoare. Anomalia de actualizare Putem modifica atributele unui student fr pericolul afectrii bazei de date, deoarece fiecare student apare ntr-o singur nregistrare a bazei de date. Dezavantajul acestui model reea este c are o structur apropiat de structura de memorare. Legtuirle dintre entiti devinexplicite realizate prin pointeri a cror55

gestiune de manipulare este n sarcina utilizatorului. ntreaga structur de lanuri devine vizibil utilizatorului. 1.8.3 Modelul de date relaional a aprut trziu. Acest model este foarte util i mai ales din punctul de vedere al realizrii SGBD - urilor performabile. Primul model a fost propus de cercettorul american E.F. Godd . SGBD pentru aceste modele au condus la limbaje pentru manipularea datelor de nivel nalt. Structuri de reprezentare Intensiunea unei BD relaionale este specificat printr-o schem relaional care const din una sau mai multe scheme de relaie. Exemplu de schem relaional Facultate (Codf, Nume, Adres), Personal (Codf, Nume, funcie, salar), Profesor (Codf, Nume, funcie, disciplin), Sala (Codf, Numr, Adres, Capacitate), Student (Nume, ncadrare, sit_scolar, An, Sex), Note (Nume_profesor, Nume_student, Nota) O schem de relaie poate fi folosit n mod direct pentru reprezentarea unui tip de entitate. Pentru reprezentarea legturilor dintre tipurile de entiti se utilzeaz dou tehnici: 1. Propagarea cheilor dintr-o schem de relaie ntr-alta. Aceast tehnic se utilizeaz pentru reprezentarea legturilor de tip funcional (relaii de tip 1:1 i 1:N). Legtura funcional dintre tipuirile de entiti Personal i Facultate. Atributul Codf din facultatea se propag entitii Personal. 2. Crearea unei scheme de relaie separate prin care se reprezint legtura dintre dou tipuri de entiti. Aceast tehnic se poate utiliza pentru a reprezenta orice tip de legtur inclusiv M:N. Considernd legtura dintre entitile Profesor i student aceasta poate fi reprezentat printr-o schem de relaie separat. n cazul nostru NOTE care are ca atribute cheile celor dou entiti atributele, Nume i rebotezate Nume_profesor i Nume_student n schema de relaie Note. Mai pot aprea i alte atribute care arat legtura dintre cele dou entiti cum este n cazul nostru nota. Extensiunea unei baze de date relaionale este reprezentat sub form de tabele. Fiecare tabel corespunde unei scheme de relaie din cadrul schemei relaionale. n aceste tabele nu sunt permise duplicatele, iar ordinea liniilor este arbitrar. Un tabel corespunde unei relaii din punct de vedere matematic i este denumit relaie n sensul BD. O coloan a tabelului corespunde unui atribut al unui tip de entitate i se numete atribut. O linie a tabelului reprezint o instaniere a unui tip de entitate sau a unui tip de legtur i se numete tripl. Tabelul reprezint o mulime de entiti de un tip dat, fie mulimea legturilor existente ntre dou sau mai multe mulimi de entiti. FACULTATE Codf Nume Adresa 01 Electronica LEU 02 Automatica Spl. Independenei Codf Nume PERSONAL Funcie56

Salariu

01 02 Codf 02 01 Codf 01 01 Nume_profesor VASILE VASILE VASILE MITEA MITEA MITEA MITEA Nume Ionescu Lupu Pana Codru Marcu

IONESCU POPA Nume 306 212 Nume VASILE MITEA

Tehnician Secretar SALA Adresa Spl. Independenei LEU PROFESOR Funcia Ass Conf Nota 9 7 10 7 9 10 7 An 1 2 3 4 4

420 000 450 000 Capacitatea 40 60 Disciplina MN BD

NOTE Nume_student LUPU PANA CODRU CODRU MARCU ILEA IONESCU Incadrare Zi Zi Zi Zi Zi STUDENT Sit_scolara B FB B B B

Sex M M F M M

Definirea modelului conceptual pentru o baz de date relaional const n specificarea fiecrei scheme de relaie din cadrul schemei relaionale. Aceasta se face cu LDD. LDD pe lng definirea relaiilor include i faciliti pentru definirea vederilor i a indecilor, pentru stabilirea de constrngeri asupra datelor pentru specificarea cheilor primare, etc. n majoritatea sistemelor relaioanle LDD este integrat n modulul software care implementeaz LMD. Acest lucru s-a realizat datorit faptului c multe funciuni ale LDD fac apel la facilitile de formulare a interogrilor din LDD. n acest mod exist un singur modul LDD - LMD i o singur interfa utilizator pentru ambele funciuni. Descrierea Bd prin LDD din SGBD relaional System R Comanda SQL pentru definirea relaiilor este CRATE TABLE i permite specificarea complet a unei scheme de relaie. CREATE TABLE Facultate Codf INTEGER (3) NOT NULL, NUME CHAR (15), A