Baze de Date - Access - Curs mocian ioan

of 239 /239
Ioan Mocian Baze de date - pentru uzul studenţilor - - 2008 -

Embed Size (px)

Transcript of Baze de Date - Access - Curs mocian ioan

Ioan Mocian

Baze de date- pentru uzul studenilor -

- 2008 -

Tehnoredactare computerizat: Ioan Mocian Tiparul executat la Atelierul de multiplicare al Universitii Petru Maior Copyright Ioan Mocian

Cuvnt nainteO carte despre bazele de date nu e uor de scris, cel puin din dou motive: sunt foarte multe astfel de cri i sunt foarte muli cunosctori ai domeniului. Pe de alt parte sunt i multe persoane care ar dori s se iniieze n domeniu, dar crile pe care le-au deschis i-au descurajat, datorit nivelului ridicat de prezentare. Acestora li se adreseaz aceast carte, oameni cu pregtire academic ntr-un domeniu conex, dar care au nevoie de cunotine pentru a nelege bazele de date, fie pentru cultura general, fie pentru necesiti profesionale. Pentru a nelege i utiliza bazele de date nu trebuie s fii informatician, trebuie s ai dorina de a studia i s ai o carte bun, orientat spre scopul imediat i uurat de balastul greoi al explicaiilor teoretice de strict specialitate, care oricum nu vor fi nelese de un nceptor i nu le va folosi niciodat. n acest spirit a fost scris aceast carte, pentru oameni care doresc s aplice imediat cunotinele dobndite. Cartea e structurat pe 5 capitole ntr-o cronologie logic, de la explicarea noiunilor i conceptelor pn la conceperea de aplicaii n ACCESS. Capitolul 1 este axat pe prezentarea domeniului bazelor de date relaionale unde se folosesc i la ce sunt folosite acestea. Capitolul 2 se ocup cu prezentarea termenilor i conceptelor folosite n bazele de dare relaionale, pentru ca acestea s fie corect nelese i folosite. Capitolul 3 este consacrat iniierii n proiectarea bazelor de date relaionale, avnd n vedere c muli specialiti i manageri sunt implicai n proiectarea de baze de date i sisteme informatice fr s aib un minim de pregtire n domeniu. Se pleac de la constatarea c proiectarea bazelor de date nu are legtur cu implementarea lor (pe care o fac specialitii n informatic), iar cei care dau, n ultim instan, specificaiile sunt chiar utilizatorii finali. De fapt, sunt aceia care formuleaz cerinele i obiectivele bazei de date, prin intermediul caietului de sarcini. Capitolul 4 este dedicat iniierii n limbajul SQL, un limbaj apropiat de limbajul uman i uor de neles. Practica mi-a demonstrat c limbajul SQL este repede asimilat i folosit pentru interogarea bazelor de date de ctre nceptori. Exemplele prezentate aici sunt foarte sugestive, bine alese i pot fi folosite ca modele pentru situaii concrete. Capitolul 5 este dedicat iniierii n sistemul de gestiune a bazelor de date ACCESS, folosind cunotinele dobndite n capitolele anterioare. Aici se nva crearea tabelelor, formularelor, interogrilor i rapoartelor.

3

Exemplele prezentate sunt inspirate din situaii concrete, reale, care sunt bune modele pentru propriile aplicaii. Expresiile SQL vor fi acum testate pe viu putndu-se verifica imediat corectitudinea lor i rezultatele obinute. Tot aici sunt prezentate modalitile de transpunere a rapoartelor n format HTML pentru a fi publicate pe Internet. Lucrarea se adreseaz studenilor facultilor de inginerie, dar este util i persoanelor care au nvat bazele de date din mers i doresc s-i verifice i si sistematizeze cunotinele. Dup ce ai parcurs acest curs, trebuie s dobndii capacitatea:

de a proiecta baze de date simple la nceput, a cror complexitate s creasc odat cu experiena acumulat; de a implementa aplicaii de baze de date n ACCESS, la nivelul firmelor mici i instituiilor; de a avea o baz de plecare pentru un viitor job ntr-o echip profesionist de dezvoltare a aplicaiilor de baze de date. Dac aceast carte a reuit s v mbogeasc bagajul de cunotine generale, dac ai reuit s nelegei ce este o baz de date i la ce este bun, dac ai reuit s creai o baz de date ACCESS i s o folosii ntrun scop util, dac ai reuit s publicai pe Internet cel puin un raport din baza de date pe care ai creat-o sau din alta, nseamn c efortul depus pentru scrierea ei nu a fost zadarnic.

Tg. Mure, 2008 Autorul

4

CuprinsCuvnt nainte ............................................................................................... 3 Capitolul 1. Noiuni de baz despre bazele de date ................................... 11 Modelul de baz de date relaional .......................................................... 12 Regsirea datelor ....................................................................................... 13 Sisteme de gestiune a bazelor de date relaionale ..................................... 14 Dincolo de modelul relaional ................................................................... 15 ntrebri pentru autoevaluare .................................................................... 16 Capitolul 2. Terminologia bazelor de date relaionale ............................. 17 Importana terminologiei .......................................................................... 17 Termeni referitori la valoare ..................................................................... 18 Date i informaii ................................................................................. 18 Valoare nul ......................................................................................... 19 Termeni referitori la structur ................................................................... 20 Tabel .................................................................................................... 20 Cmp .................................................................................................... 22 nregistrare ........................................................................................... 23 Vedere .................................................................................................. 24 Chei ...................................................................................................... 26 Index .................................................................................................... 28 Termeni referitori la relaie ....................................................................... 29 Relaii ................................................................................................... 29 Relaii unu cu unu ................................................................................ 30 Relaii unu cu mai muli ....................................................................... 31 Relaii mai muli cu mai muli ............................................................. 32 Tipuri de participare ............................................................................. 34 Gradul de participare ............................................................................ 35 Termeni referitori la integritate ................................................................. 36 Specificaie de cmp ............................................................................ 36 Integritatea datelor ............................................................................... 36 ntrebri pentru autoevaluare .................................................................... 37 Capitolul 3. Proiectarea bazelor de date relaionale ................................. 39

5

Etapa 1 Definirea unei declaraii de intenie i a obiectivelor misiunii .. 40 Compunerea unei declaraii de intenie ................................................ 41 Definirea obiectivelor misiunii ............................................................. 42 ntrebri pentru autoevaluare ................................................................ 43 Etapa 2 - Analiza bazei de date curente .................................................... 44 ntrebri pentru autoevaluare ................................................................ 46 Etapa 3 - Crearea structurilor de date ........................................................ 46 Definirea listei finale de tabele ............................................................. 47 Asocierea cmpurilor fiecrui tabel ...................................................... 50 Utilizarea unui cmp ideal pentru rezolvarea anomaliilor .................... 52 Stabilirea cheilor pentru fiecare tabel ................................................... 53 ntrebri pentru autoevaluare ................................................................ 56 Revizuirea structurilor iniiale de tabel ................................................ 57 Specificaii de cmp ............................................................................. 58 Anatomia unei specificaii de cmp .................................................. 60 ntrebri pentru autoevaluare ............................................................... 66 Etapa 4 - Determinarea i instituirea relaiilor ntre tabele ...................... 67 Diagrama relaiilor unu cu unu ............................................................ 67 Diagrama relaiilor unu cu mai muli ................................................... 70 Diagrama relaiilor mai muli cu mai muli ......................................... 73 Relaii cu autoreferire .......................................................................... 77 Identificarea relaiilor existente ........................................................... 80 Stabilirea caracteristicilor relaiilor ..................................................... 87 Definirea unei reguli de tergere ....................................................... 87 Identificarea tipului de participare a fiecrui tabel ........................... 88 Identificarea gradului de participare a fiecrui tabel ........................ 90 Integritatea la nivel de relaie .............................................................. 92 Etapa 5 - Determinarea i definirea regulilor de desfurare a activitii 93 Reguli specifice cmpurilor ................................................................. 93 Reguli specifice relaiilor ..................................................................... 96 Tabele de validare ................................................................................ 97 Etapa 6 - Determinarea i definirea vederilor .......................................... 98 Etapa 7 - Revizuirea integritii datelor ................................................... 102 Revizuirea i mbuntirea integritii datelor ................................... 103

6

Alctuirea documentaiei bazei de date ............................................... 105 Studiu de caz. Proiectarea unei baze de date ............................................ 106 Declaraia de intenie ........................................................................... 106 Obiectivele misiunii ............................................................................. 106 Analiza bazei de date curente .............................................................. 106 Crearea structurilor de date ................................................................. 107 Determinarea i instituirea relaiilor ntre tabele ................................. 110 Determinarea i definirea regulilor de desfurare a activitii ........... 111 Determinarea i definirea vederilor ..................................................... 115 Verificarea integritii datelor ............................................................. 118 Concluzii privind proiectarea bazelor de date relaionale ................... 118 Capitolul 4. Iniiere n limbajul SQL ......................................................... 120 Prezentare general ................................................................................... 120 Operaiuni simple folosind limbajul SQL ................................................. 122 Regsirea datelor ............................................................................... 122 Sortarea datelor ................................................................................. 123 Filtrarea datelor ................................................................................. 124 Operatorii clauzei WHERE .................................................. 125 Filtrare avansat ................................................................... 126 Operaiuni avansate folosind limbajul SQL .............................................. 132 Cmpuri calculate ............................................................................. 132 Funcii pentru manipularea datelor ................................................... 134 Gruparea datelor ............................................................................... 137 Crearea grupurilor ................................................................ 137 Filtrarea grupurilor ............................................................... 139 Lucrul cu subselecii ......................................................................... 141 Unirea tabelelor ................................................................................ 147 Crearea unei uniri simple ..................................................... 147 Uniri avansate ...................................................................... 138 Compunerea interogrilor ................................................................. 151 Inserarea, actualizarea i tergerea datelor ........................................ 155 Inserarea datelor ................................................................... 155 Actualizarea datelor ............................................................. 157 tergerea datelor .................................................................. 159

7

Principii privind actualizarea i tergerea datelor ................ 160 Crearea i manipularea tabelelor ....................................................... 162 Elemente performante ale limbajului SQL ................................................ 164 Concluzii ........................................................................................... 167 Capitolul 5. Utilizarea programului ACCESS .......................................... 168 Prezentare general ................................................................................... 168 Interfaa programului Access ..................................................................... 170 Crearea tabelelor ....................................................................................... 172 Relaii ntre tabele ............................................................................. 174 Crearea relaiilor cu Lookup Wizard ................................................ 177 Introducerea datelor n tabele ........................................................... 179 Formulare .................................................................................................. 181 Crearea unui formular ....................................................................... 181 Crearea automat a unui formular ......................................... 182 Crearea manual a unui formular ......................................... 185 Formulare cu subformulare ............................................................... 189 Interogri ................................................................................................... 195 Crearea interogrilor folosind limbajul SQL .................................... 195 Crearea interogrilor cu aplicaia Wizard(Design view) .................. 196 Legarea permanent a dou tabele .................................................... 200 Interogri cu parametri ...................................................................... 203 Rapoarte .................................................................................................... 206 Crearea unui raport simplu ................................................................ 206 Crearea unui raport cu Report Wizard .............................................. 208 Particularizarea unui raport ............................................................... 214 Macro-uri ................................................................................................... 217 Crearea macrocomenzilor cu o singur aciune ................................. 218 Crearea macrocomenzilor cu mai multe aciuni ................................ 220 Rularea macrocomenzilor .................................................................. 221 Rularea unei macrocomenzi din fereastra Database ............ 222 Rularea unei macrocomenzi dintr-un grup ........................... 222 Utilizarea aciunii RunMacro ............................................... 222 Macrocomenzi ataate evenimentelor .................................. 223 Utilizarea macrocomenzilor AutoExec i AutoKeys ........... 223

8

Metod rapid de pornire a aplicaiilor ............................... 224 Publicarea datelor pe Internet ................................................................... 225 Pagini Web statice ............................................................................ 226 Pagini Web dinamice ........................................................................ 228 Crearea unei pagini dinamice de date cu AutoPage .......... 228 Crearea paginilor dinamice cu Page Wizard ....................... 229 Comunicarea ntre aplicaiile pachetului Office ....................................... 231 Exportul i importul de date ............................................................. 232 Recomandri privind crearea aplicaiilor Access ..................................... 232 Anexe ............................................................................................................. 235 Anexa A. Administratorul de baz de date .......................................... 235 Anexa B. Sintaxa instruciunilor SQL ................................................. 237 Bibliografie ..................................................................................................... 239

9

Pagin goal

10

Baze de date

Capitolul 1

Noiuni de baz despre bazele de dateSintagma baz de date este folosit att n viaa de zi cu zi, n mijloacele de comunicare n mas, ct i de specialitii din domeniul tehnologiei informaiei. E greu s ne gndim la un domeniu de activitate care s nu foloseasc, ntr-un fel sau altul, baze de date. Astfel, cnd scoatem bani de la bancomat, parola noastr este verificat cu o baz de date, medicul ne identific dintr-o baz de date cu pacieni, cnd ne prezentm la vot suntem identificai dintr-o baz de date, iar exemplele pot continua. Exist mai multe definiii ale bazelor de date, dar cea mai simpl pentru aceast faz de studiu este: baza de date este un set de date stocate ntr-un mod organizat. nelegerea acestei definiii va fi uurat de un exemplu. Astfel, crile dintr-o bibliotec nu sunt puse la ntmplare, ele sunt aezate pe rafturi, dup o anumit logic, mprite pe domenii, pentru ca atunci vrem s ajungem la o carte, ea s poat fi localizat uor. Prin urmare, este clar c atunci cnd cutm o carte n biblioteca personal, o gsim mai uor dac este ordine i o gsim greu sau deloc dac ne inem crile n dezordine. Aceast idee o s fie aplicat n proiectarea bazelor de date, unde este foarte important organizarea corect a informaiilor. Termenul de baz de date este folosit de multe ori n mod eronat, confundndu-se cu softul pentru baz de date care este utilizat. n realitate, softul pentru baze de date este numit sistem de gestiune a bazelor de date (SGBD), iar baza de date este recipientul care conine informaiile, recipient creat i manipulat prin intermediul SGBD. Coninutul acestui recipient se schimb foarte des, atunci cnd se lucreaz cu baza de date (adugri, tergeri i modificri de informaii). Baza de date este perceput de multe persoane ca fiind un simplu tabel. Acest lucru nu este greit, atta vreme ct la studiul limbajului Excel am descoperit tabele la care le spuneam i baze de date. ntr-adevr, acele tabele erau baze de date foarte simple care aveau nite comenzi i funcii cu care le putem sorta, filtra i chiar fceam unele calcule cu ele. Cu aceste baze de date puteam rezolva multe probleme de gestionare a unor informaii. Bazele de date clasice conin mai multe tabele care sunt legate ntre ele prin relaii care vor fi studiate mai trziu. Exist mai multe modele de baze de date clasice: Model de baz de date ierarhic Model de baz de date reea

11

Baze de date

Capitolul 1

Model de baz de date relaional Primele dou modele au numai valoare istoric, se mai folosesc foarte puin sau deloc, aa c nu ne vom opri asupra lor. Modelul relaional este cel care se folosete astzi datorit avantajelor pe care l prezint i care va fi studiat n aceast carte.

Modelul de baz de date relaionalBaza de date relaional a fost conceput n anul 1969 i este azi cel mai folosit model de baze de date n gestiunea bazelor de date. Acest model este fundamentat pe dou ramuri ale matematicii teoria mulimilor i logica predicatelor de ordinul nti. ntr-adevr, numele modelului provine de la termenul relaie, care constituie o parte a teoriei mulimilor. O concepie greit, larg rspndit, este aceea c modelul relaional i-ar fi preluat numele de la faptul c ntre tabelele unei baze de date relaionale exist relaii. O baz de date relaional stocheaz datele n relaii, pe care un utilizator le percepe ca pe nite tabele. Fiecare relaie este compus din nregistrri i cmpuri, iar ordinea fizic a nregistrrilor sau a cmpurilor dintr-un tabel este complet lipsit de importan, iar fiecare nregistrare a tabelului este identificat, nu dup locul unde se afl, ci dup un cmp care conine o valoare unic. Prin urmare, utilizatorul nu este obligat s cunoasc locaia fizic a unei nregistrri aa cum se ntmpl la celelalte modele de baz de date (ierarhic i reea), pentru regsirea datelor. Modelul relaional clasific relaiile ca fiind de tip: unu la unu, unu la mai muli i mai muli la mai muli. Aceste relaii vor fi studiate n detaliu mai trziu. O relaie dintre dou tabele este stabilit n mod implicit prin intermediul valorilor echivalente ale unui anumit cmp. n figura 1, tabelele tblStudenti i tblSectii sunt corelate prin intermediul cmpului SectiaID; un anumit student este corelat cu o secie prin intermediul unui identificator de secie identic. Atta timp ct utilizatorul cunoate relaiile dintre tabelele incluse ntr-o baz de date, poate avea acces la date ntr-un mare numr de moduri. De exemplu, dup cum se vede n figura 1.1, prin intermediul acelei relaii, putem afla numele seciei i crei faculti aparine. Dac tabelul ar conine mai multe coloane, am avea acces la toate coloanele, aa cum vom vedea mai trziu.

12

Baze de datetblSectii SectiaID 1 2 3 4

Capitolul 1

Denumire TCM IEI Informatica Istorie

Facultate Inginerie Inginerie Stiinte Stiinte

tblStudenti StudentID 1 2 3 4

Nume Pop Ban Pop Lazar

Prenume Ioan Lucia Dorin Liviu

SectiaID 1 2 3 2

Telefon 234675 234375 234076 233777

Fig. 1.1. Exemplu de tabele corelate

Regsirea datelorDatele stocate ntr-o baz de date trebuie regsite rapid ori de cte ori este nevoie de ele. Datele dintr-o baz de date relaional se regsesc prin intermediul unui limbaj specializat de interogare numit SQL(Structured Query Language). SQL este limbajul standard folosit pentru crearea, modificarea, ntreinerea i interogarea bazelor de date relaionale. n figura 1.2 este prezentat un exemplu de interogare SQL pe care o putem utiliza pentru a obine o list cu studenii de la IEI. SELECT Nume, Prenume, Telefon FROM tblStudenti WHERE SectiaID = 2 ORDER BY Nume, PrenumeFig. 1.2. Exemplu de instruciune de interogare SQL

Aceast instruciune s-ar putea traduce astfel: extrage din tabelul tblStudenti cmpurile Nume, Prenume i Telefon, nregistrrile care au valoarea cmpului SectiaID egal cu 2, ceea ce corespunde seciei IEI. Ordoneaz lista dup cmpul Nume.

13

Baze de date

Capitolul 1

Cele trei componente fundamentale ale unei interogri SQL le reprezint instruciunea SELECTFROM, clauza WHERE i clauza ORDER BY. Dar despre toate acestea vom discuta detaliat n capitolul 4.

Sistemele de gestiune a bazelor de date relaionaleUn sistem de gestiune a bazelor de date relaionale (SGBDR) este un program software folosit pentru crearea, ntreinerea, modificarea i manipularea unei baze de date relaionale. Numeroase programe SGBDR furnizeaz i instrumentele necesare pentru a putea crea aplicaii destinate utilizatorilor finali care lucreaz cu datele din baza de date. Numeroasele faciliti oferite de diferii productori evolueaz foarte rapid, devenind din ce n ce mai performante. Primele SGBDR-uri au fost concepute pentru sisteme de tip desktop. Acestea presupun existena unei copii a bazei de date pe fiecare calculator care nu este un mare avantaj, n ceea ce privete actualizarea datelor. n acest context a aprut necesitatea amplasrii n mod centralizat a ntregii baze de date care s fie accesat de toi utilizatorii. Aa au aprut SGBDR-urile de tip client-server n care bazele de date se stocheaz pe un server de baze de date, iar utilizatorii interacioneaz cu datele prin intermediul unor aplicaii rezidente pe propriul calculator numit clientul bazei de date. Creatorul de baze de date folosete programul client-server SGBDR pentru a crea i ntreine programele de aplicaie de baze de date i programele accesorii pentru utilizatorul final. Acesta implementeaz integritatea i securitatea datelor din serverul de baze de date, avnd astfel posibilitatea de a fundamenta o diversitate de aplicaii utilizator pe acelai set de date, fr a afecta integritatea i securitatea datelor. Cele mai cunoscute SGBDR-uri sunt: Microsoft Access Microsoft SQL Server Oracle MySQL PostgreSQL Microsoft Access este un SGBDR comercial de tip desktop, folosit pentru gestionarea bazelor de date de dimensiuni mici i medii. Poate acoperi fr probleme segmentul firmelor mici i mijlocii. Este sistemul de gestiune pe care l vom studia i noi n aceast carte.

14

Baze de date

Capitolul 1

Microsoft SQL Server este un SGBDR de tip client-server care accept baze de date foarte mari i un numr foarte mare de tranzacii i ruleaz numai pe sistemele de operare Windows. Este soluia ideal pentru firmele mari, la un pre de cost relativ sczut. Oracle este liderul mondial al pieei SGBDR-urilor de tip client-server. Oracle accept baze de date enorme i un numr imens de tranzacii. Oracle ruleaz pe numeroase sisteme de operare, este un SGBDR complex a crui operare i ntreinere trebuie fcute de un administrator special instruit pentru acest scop. Se ntlnete la marile companii transnaionale, deoarece preul su este pe msura performanelor. MySQL este un SGBDR din categoria open-source(codul surs este pus gratuit la dispoziia utilizatorilor) fiind unul din liderii pieei. MySQL este rapid, stabil i accept baze de date de mari dimensiuni, dar i lipsesc cteva din caracteristicile importante ale limbajului SQL. Versiunile viitoare i propun includerea acestor caracteristici. Ruleaz pe mai multe sisteme de operare i este gratuit pentru utilizarea n scopuri personale(care nu aduc un ctig). PostgreSQL este un SGBDR din categoria open-source, fiind unul din liderii pieei. Accept baze de date de mari dimensiuni, este recunoscut pentru setul su bogat de caracteristici.

Dincolo de modelul relaionalProgramele SGBDR au fost acceptate pe scar larg fiind utilizate n aplicaii de afaceri concrete, precum inventarele, gestiunea pacienilor, a materialelor i pieselor, n domeniul bancar, dar s-au dovedit a lipsi n aplicaii de genul proiectrii asistate de calculator (CAD), sisteme informaionale geografice (GIS) i sisteme de stocare multimedia. Ca rspuns la aceast problem au aprut dou noi modele de baz de date: modelul orientat spre obiect i modelul relaional obiect. Modelul orientat spre obiect ncorporeaz toate caracteristicile unui limbaj de programare orientat spre obiect, iar baza de date relaional este retrogradat la statutul de magazie de date. Ideea fundamental este c dezvoltatorul bazei de date trateaz fiecare aspect al acesteia, inclusiv setul de operaiuni care manipuleaz datele din baza de date, din interiorul limbajului de programare a bazei de date orientat obiect. Nu mai exist o diferen clar ntre programul de baz de date i programul de realizare a aplicaiilor. Dei este un pas nainte, modelul orientat spre obiect nu ntrunete consensul tuturor specialitilor din domeniu. Viitorul va da ns verdictul n aceast problem delicat.

15

Baze de date

Capitolul 1

Modelul relaional obiect a extins modelul bazei de date relaionale prin ncorporarea a diferite elemente i caracteristici orientate spre obiect, precum clase, ncapsulare i motenire. Ideea era ca aceste extensii s permit unei baze de date relaionale s gestioneze i s manipuleze tipuri de date complexe, precum secvene audio sau video i desene sau reprezentri grafice. Modelul relaional obiect nc nu a fost definitivat, se mai lucreaz la el, majoritatea specialitilor consider c aceasta este direcia corect. El este exploatat i rafinat n continuare. Internetul exercit o mare influen asupra modului de utilizare a bazelor de date n cadrul organizaiilor. Multe companii i afaceri folosesc Web-ul pentru a-i extinde baza de consumatori, iar o bun parte din datele oferite acestor consumatori, respectiv pe care le preiau de la acetia, sunt stocate ntr-o baz de date. Internetul a generat un limbaj numit XML (eXtensible Markup Language) capabil s partajeze date din diferite sisteme eterogene. Muli productori de SGBDR se orienteaz spre ncorporarea a ct mai multe caracteristici XML n propriile produse. Cu toate noile orientri prezentate, bazele de date relaionale pe care le vom studia nu vor dispare n viitorul apropiat.

ntrebri pentru autoevaluare De unde vine termenul de baz de date relaional? Cum se stocheaz datele ntr-o baz de date relaional? Denumii cele trei tipuri de relaii existente ntr-o baz de date relaional. Indicai cteva avantaje ale bazelor de date relaionale. Ce este un sistem de gestiune a bazelor de date relaionale? Care sunt cele mai cunoscute sisteme de gestiune a bazelor de date relaionale?

16

Baze de date

Capitolul 2

Capitolul 2. Terminologia bazelor de date relaionalen acest capitol vom clarifica termenii folosii n teoria i practica bazelor de date relaionale, pentru a evita confuziile fcute de unii membri implicai n procesul de proiectare sau exploatare.

Importana terminologieiEste important s nelegem termenii prezentai n acest capitol nainte de a ncepe studiul bazelor de date relaionale. Proiectarea bazelor de date are un set de termeni specifici ca, de altfel, orice profesie, meserie sau disciplin. Iat cteva motive care justific importana nvrii acestor termeni: Termenii respectivi sunt utilizai pentru a exprima i defini ideile i conceptele speciale ale modelului de baze de date relaionale. O bun parte din terminologie deriv din ramurile matematice ale teoriei mulimilor i respectiv logicii predicatelor de ordinul nti. Termenii respectivi sunt utilizai pentru a exprima i defini nsui procesul de proiectare a bazelor de date. Procesul de proiectare devine mai clar i mult mai simplu de neles, dup ce v-ai familiarzat cu aceti termeni. Termenii respectivi sunt utilizai oriunde se discut despre o baz de date relaional sau despre un program SGBDR. Vei ntlni aceti termeni n publicaii cum ar fi reviste de comer, manuale de programare SGBDR, suporturi de cursuri etc. De asemenea, vei auzi aceti termeni n conversaiile ntre diferite categorii de profesioniti din domeniul bazelor de date.

Exist patru categorii de termeni de care o s ne ocupm n acest capitol, termeni referitori la: valoare, structur, relaie i integritate.

17

Baze de date

Capitolul 2

Termeni referitori la valoareDate i informaii Valorile pe care le stocm n bazele de date se numesc date. Acestea sunt statice n sensul c rmn aceleai pn nu intervine o modificare manual sau automat. n figura 2.1 este prezentat un exemplu de date. George Fodor 6582421 12/05/2004 57.50Fig. 2.1. Exemplu de date elementare

La prima vedere, aceste date sunt lipsite de sens pentru c nu ne putem da seama ce reprezint numrul 6582421 sau celelalte, chiar dac observm c una din valori este o dat calendaristic iar ultima este un numr zecimal. Nu ne putem da seama pn nu prelucrm datele. Informaiile reprezint date pe care le prelucrm ntr-un mod care le confer semnificaie i utilitate pentru noi atunci cnd lucrm cu respectivele date.George Fodorsunt dinamice, n sensul c se modific n Informaiile 6582421 12/05/2004 57.50se modific datele din baza de date, dar i n sensul permanen dup cum c pot fi prelucrate ntr-un numr nelimitat de moduri. Ideea care trebuie reinut este c trebuie s prelucrm datele pentru a le putea transforma n informaii cu sens. Figura 2.2 demonstreaz un mod n care datele din exemplul precedent pot fi prelucrate i transformate n iformaii. Datele respective au fost manipulate nct au ajuns ntr-o factur pentru un pacient nct acum au sens pentru oricine le citete. George Fodor 6582421 12/05/2004 57.50Spitalul Municipal Tg. Mures Str. Clinicilor nr.66 Sectia Cardiologie Pacient: Cod pacient: Data consultaiei: Medic:

George Fodor 6582421 12/05/2004 dr. Hipocrate B.

Consultaii

Analize 30.00 27.50 Snge Urina Glicemie

x x

General EKG Ultrasunete

Total plat: 57.50

George Fodor 6582421 12/05/2004 57.50 Total plat: Fig. 2.2. Exemplu de date transformate n informaii 57.50 18 Total plat: 57.50

Baze de date

Capitolul 2

Este foarte important s nelem diferena dintre date i informaii. O baz de date este proiectat astfel nct s furnizeze informaii semnificative pentru orice persoan abilitat din cadrul unei firme sau organizaii. Aceste informaii pot fi puse la dispoziie numai dac datele corespunztore exist n baza de date i dac aceasta din urm este astfel structurat nct s permit obinerea informaiilor respective. Dac uitai vreodat care este diferena dintre date i informaii, reinei urmtoarea axiom: Datele se stocheaz, iar informaiile se regsesc. Din pcate, exist cri comerciale n care se confund datele cu informaiile. Valoare nul O valoare nul reprezint o valoare care lipsete sau care nu este cunoscut. Deseori, valoarea nul se confund cu un zero sau unul sau mai multe spaii albe, ceea ce este total greit, din urmtoarele motive:Un zero poate avea mai multe semnificaii cum ar fi nivelul stocului unui anumit produs, numrul de apariii a unui cod etc. Dei un ir text format din unul sau mai multe spaii albe nu nseamn nimic pentru cei mai muli dintre noi, reprezint categoric semnificaie pentru un limbaj de interogare cum ar fi SQL. Un spaiu alb este un caracter ca oricare altul cum ar fi a. Un ir de lungime zero adic dou ghilimele consecutive fr spaiu ntre ele , este de asemenea o valoare acceptabil pentru limbaje precum SQL i poate fi semnificativ n anumite circumstane.

De menionat faptul c n practic, apar multe cazuri cnd la completarea unui cmp al unui tabel este mpiedicat de necunoaterea, pe moment, a valorii respective i n acest caz va apare o valoare nul. Acest cmp poate fi completat ulterior, dup ce se afl valoarea respectiv (ex., un numr de telefon, un cod etc.). Principalul dezavantaj al valorilor nule este acela c pot avea efect negativ asupra calculelor matematice, tiut fiind c rezultatul unei operaii matematice n care este implicat o valoare nul, este o valoare nul. Problema valorilor absente, necunoscute, precum i faptul c vor fi folosite 19

Baze de date

Capitolul 2

sau nu n expresii matematice sau funcii agregat, vor fi luate n considerare n decursul procesului de proiectare a bazelor de date relaionale.

Termeni referitori la structurTabel n conformitate cu modelul relaional, datele dintr-o baz de date relaional sunt stocate n relaii, care sunt percepute de utilizator sub form de tabele. Fiecare relaie este alctuit din nregistrri (tupluri) i cmpuri (atribute). n figura 2.3 este prezentat o structur de tabel caracteristic.StudentID 5001 5002 5012 5065 5032 Nume Pop Ban Lazr Ban Pop Prenume Mariana Ioan Ana Lucia Dorin Sectia TCM TCM IEI IMPI MEC

nregistrri

Cmpuri Fig. 2.3. O structur de tabel

Tabelele reprezint structurile eseniale dintr-o baz de date, iar fiecare tabel reprezint ntotdeauna un singur subiect concret, cum ar fi studeni, produse, vnzri etc. Ordinea logic a nregistrrilor i a cmpurilor din cadrul unui tabel nu are nici o importan, iar fiecare tabel conine cel puin un cmp cunoscut sub numele de cheie primar care identific n mod unic fiecare nregistrare a tabelului. n figura 2.3, StudentID este cheia primar a tabelului tblStudenti. Datele dintr-o baz de date relaional pot exista independent de modul n care sunt stocate fizic n calculator, datorit acestor ultime dou caracteristici ale unui tabel. Pentru utilizator acest lucru este foarte bun, deoarece acesta nu mai trebuie s cunoasc locaia fizic a unei nregistrri pentru a putea regsi datele.

20

Baze de date

Capitolul 2

Subiectul pe care l reprezint un tabel dat poate fi un obiect sau un eveniment. Cnd subiectul este un obiect, tabelul reprezint o cantitate palpabil, precum o persoan, un produs sau un lucru oarecare. Indiferent de tipul su, un obiect are caracteristici care pot fi stocate sub form de date, care vor putea fi prelucrate ulterior ntr-un numr mare de moduri. Cnd subiectul unui tabel este un eveniment, nseamn c tabelul reprezint ceva care se produce la un anumit moment de timp i care are caracteristici pe care dorii s le nregistrai. Exemplul clasic care se poate da aici este tabelul cu consultaiile inute de un medic de familie. n figura 2.4 este prezentat un astfel de tabel.PacientID 92001 97004 98023 93034 94001 Data cons. 12-1-2005 12-1-2005 12-1-2005 12-1-2005 12-1-2005 Ora cons. 8:30 9:00 9:30 10:30 11:45 Medic Avram I. Avram I. Popescu D. Popescu D. Avram I. Tensiune 120/80 125/80 130/82 145/90 132/86

Fig. 2.4. Tabel care reprezint un eveniment

Tabelele pot fi, ntr-o alt clasificare, de dou tipuri:Tabele de date care furnizeaz date folosite pentru furnizarea de informaii i reprezint tipul de tabel cel mai frecvent ntlnit ntr-o baz de date. Datele din acest tip de tabel sunt dinamice deoarece se pot manipula (modificare, tergere) i converti n informaii ntr-o anumit form sau manier. Cu astfel de tabele vei lucra foarte frecvent n decursul lucrului cu baza de date. Tabele de validare care stocheaz date pe care le vei folosi cu scopul precis de a implementa integritatea datelor. De obicei, un tabel de validare conine nume de localiti, coduri de produse, categorii de activiti etc. Datele din acest tip de tabel sunt statice, adic se modific foarte rar.

n figura 2.5 este prezentat un tabel de validare pentru seciile facultii de inginerie.SectieID Denumire

11 13 12 15 19

TCM IEI Mecatronica Ingineria mediului Design 21

Fig. 2.5. Tabel de validare

Baze de date

Capitolul 2

n loc s introducem greit ntr-un alt tabel, numele unei secii, vom introduce codul su, asigurnd n acest fel integritatea datelor. Cmp Un cmp reprezint cea mai mic structur din baza de date i reprezint o caracteristic a subiectului tabelului cruia i aparine. Cmpurile sunt structurile care stocheaz efectiv datele, care apoi pot fi regsite i prezentate ca informaii n aproape orice configuraie pe care o putei imagina. Calitatea informaiilor pe care o vei obine din datele pe care le avei este direct proporional cu timpul dedicat asigurrii integritii structurale i de date a cmpurilor nsei. Fiecare cmp dintr-o baz de date corect proiectat conine singur valoare, iar numele su va identifica tipul de valoare admis. Astfel, procesul de introducere a datelor devine foarte intuitiv. Dac vedei cmpuri cu nume precum Nume, Prenume, Judet, Localitate, Telefon sau Cod postal, atunci vei ti exact ce tipuri de date vei introduce n fiecare cmp. De asemenea, va fi foarte simplu s sortai datele n funcie de jude ori s cutai persoanele dintr-o anumit localitate a unui jude. ntr-o baz de date slab proiectat sau proiectat inadecvat, vei ntlni n mod caracteristic alte trei tipuri de cmpuri, dup cum urmeaz:Un cmp multiplu (numit i cmp cu mai multe pri) care conine dou sau mai multe elemente distincte n cadrul valorii acestuia. Un cmp cu valori multiple (numit i cmp cu mai multe valori) care conine mai multe apariii ale aceluiai tip de valoare. Un cmp calculat, care conine o valoare de text concatenat sau rezultatul unei expresii matematice.

n figura 2.6 este prezentat un tabel care conine cte un cmp din fiecare tip amintit mai sus.

22

Baze de date

Capitolul 2

Cmp calculat ProdusID 5001 6023 6034 Denumire Planetara Rulment Acumulat or Bujie Antigel Furnizor SC Lion SC RPA SC Rulment ul SC ARC SC Lion Pret 900 23 500

Cmp multiplu Cant 5 10 4 Valoare 4500 230 2000

Valori multiple

Loc, Judet Dej, Cluj Brasov,Bra sov Bistrita, Bistrita Cluj,Cluj Dej, Cluj

Agent Pop, Rusu Danciu Danciu

5098 5067

12 10

100 40

1200 400

Danciu, Pop Pop, Rusu

Fig. 2.6. Tabel cu cmpuri normale, calculate, multiple

nregistrare O nregistrare reprezint o instan unic a subiectului unui tabel. nregistrarea este alctuit din ntregul set de cmpuri dintr-un tabel, indiferent dac respectivele cmpuri conin sau nu valori. Datorit modalitii de definire a unui tabel, fiecare nregistrare este definit n baza de date prin intermediul unei valori unice a cmpului cheie primar a nregistrrii respective. Astfel, dac avem un tabel de persoane, o nregistrare din tabel trebuie s identifice fiecare persoan din tabel, care este un unicat. n figura 2.6, fiecare nregistrare reprezint un produs unic din cadrul tabelului, iar cmpul ProdusID este folosit pentru a identifica un produs din cadrul bazei de date. La rndul su, fiecare nregistrare include toate cmpurile din tabel, iar fiecare cmp descrie un aspect al produsului reprezentat de nregistrare. nregistrrile reprezint un element cheie pentru nelegerea relaiilor dintre tabele, deoarece va trebui s cunoatei relaia dintre o nregistrare a unui tabel i alte nregistrri din alt tabel.

23

Baze de date

Capitolul 2

Vedere O vedere este un tabel virtual compus din cmpuri dintr-unul sau mai multe tabele ale bazei de date; tabelele care alctuiesc vederea sunt cunoscute sub numele de tabele de baz. Modelul relaional i atribuie unei vederi atributul de virtual deoarece i preia datele din tabele de baz, nui stocheaz propriile sale date. De fapt, singurele informaii referitoare la o vedere care sunt stocate n baza de date se refer la structura vederii respective. Numeroase programe SGBDR principale lucreaz cu vederi, dar unele (precum Microsoft Access) le denumesc interogri salvate. Programul SGBDR pe care l utilizai va determina dac obiectul respectiv va fi denumit interogare sau vedere. Vederile permit privirea informaiilor din baza dumneavoastr de date din diferite unghiuri, furniznd o mare flexibilitate n lucrul cu datele. Putei crea vederi ntr-o varietate de moduri, iar o vedere este util mai ales cnd se bazeaz pe mai multe tabele corelate. ntr-o baz de date cu orare colare, de exemplu, putei crea o vedere care sintetizeaz date din tabelele ELEVI, CURSURI i ORARE CURSURI. n figura 2.7 este prezentat o vedere cu situaia mprumuturilor de cri, ale crei date au fost extrase din trei tabele: Studenti, Imprumuturi, Carti.

24

Baze de date Studenti StudentID 60001 60002 60003 60004

Capitolul 2

Nume Crian Lazr Mocean Mocean

Prenume Ovidiu Denisa Gabriel Olimpiu

Telefon 0745-328092 0722-7575823 0744-7575939 0723-6564321

.. .. .. ..

Imprumuturi StudentID CarteID 60001 1001 60002 1001 60003 1099 60004 1099

Data 3/10/2004 3/10/2004 5/10/2004 5/11/2004

Carti CarteID 1001 1099 1023 1009

Denumire PUC Baze de date Fizica Chimie

Categorie P1 P1 F1 F1

...... ...... ..... ..

Situatie mprumuturi (vedere) Nume Crian Lazr Mocean Mocean Prenume Ovidiu Denisa Gabriel Olimpiu Denumire PUC PUC Baze de date Baze de date Data 3/10/2004 3/10/2004 5/10/2004 5/11/2004

Fig. 2.7. Un exemplu de vedere caracteristic

Exist trei motive majore care confer importan vederilor:Vederile permit lucrul simultan cu date preluate din mai multe tabele, ntre care exist relaii. Vederile permit mpiedicarea anumitor utilizatori de a vedea sau manipula anumite cmpuri dintr-un tabel sau grup de tabele. Aceast posibilitate se poate dovedi foarte avantajoas din punctul de vedere al securitii datelor.

25

Baze de date

Capitolul 2

Vederile se pot utiliza pentru implementarea integritii datelor, numite n acest caz vederi de validare.

Chei Cheile sunt acele cmpuri speciale care ndeplinesc roluri foarte bine determinate n cadrul unui tabel, iar tipul cheii definete rolul acesteia n interiorul tabelului. Un tabel poate conine numeroase tipuri de chei, dar cele mai importante sunt cheia primar i cheia extern. O cheie primar este un cmp sau un grup de cmpuri care identific n mod unic fiecare nregistrare din cadrul unui tabel; dac o cheie primar este compus din dou sau mai multe cmpuri, este cunoscut sub numele de cheie primar compozit. O valoare a unei primare identific o anumit nregistrare din ntreaga baz de date. Cheia primar impune integritatea la nivel de tabel i faciliteaz stabilirea relaiilor cu alte tabele din baza de date. Reinei faptul c o cheie primar are valori unice n cadrul unui, aceasta fiind cea mai important proprietate a acesteia. De regul, cheile primare vor fi nite coduri numerice, uneori generate chiar de sistemul de gestiune a bazei de date, cum ar fi sistemul Access, pe care o s-l studiem n cadrul acestui curs i care tipul de dat AutoNumber, special gndit pentru generarea cheilor primare. O cheie extern dintr-un tabel este acea cheie care este cheie primar n alt tabel. Ea nu trebuie s fie unic dup cum vei observa n urmtorul exemplu, rolul ei este, n special, de a asigura legtura cu alt tabel. n figura 2.8 se pot vedea o cheie primar i o cheie extern.

26

Baze de date

Capitolul 2

Cheie primar

Cheie primar Sportivi SportivID 8001 8002 8003

Impresari ImpresarID 100 101 102

Nume Becali Popescu Becali

Prenume Ioan Gic Victor

Telefon 0745-655482 0745-658312 0744-547212

ImpresarID 100 101 100

Nume sportiv Mutu Adrian Neaga Ioan Chivu Cristian

Telefon0745-657329 0744-768432 0723-546291

Cheie extern Fig. 2.8. Exemplu de cmpuri cheie primar i cheie extern

Se observ cum cmpul ImpresarID este cheie primar pentru tabelul Impresari i cheie extern pentru tabelul Sportivi. Acolo unde este cheie extern, valoarea ei se poate repeta, ceea ce este firesc, deoarece un impresar poate avea mai muli sportivi. Cmpul ImpresarID din cele dou tabele asigur legtura dintre ele, asigurnd n acelai timp i integritatea datelor, adic fiecare sportiv are un impresar valabil. Cnd determinai c ntre dou tabele exist o relaie, n mod caracteristic stabilii relaia respectiv prelund o copie a cheii primare din primul tabel i ncorpornd-o n structura celui de-al doilea tabel, unde devine cheie extern. Numele de cheie extern deriv din faptul c al doilea tabel are deja o cheie primar proprie, iar cheia primar pe care o introducei din primul tabel este extern pentru al doilea tabel. Dincolo de facilitatea stabilirii relaiilor dintre perechi de tabele, cheile externe contribuie i la implementarea i asigurarea integritii la nivel de relaie. Aceasta nseamn c nregistrrile din ambele tabele vor fi ntotdeauna corelate n mod adecvat, deoarece valorile unei chei externe trebuie s fie identice cu valorile existente ale cheii primare la care face referire. O greeal frecvent care se face de ctre nceptori, este c dau tipuri de dat diferite unor cmpuri pe care doresc s le foloseasc pentru legtura a dou tabele. De asemenea, integritatea la nivel de relaie permite evitarea periculoaselor nregistrri orfane, un exemplu clasic n acest sens reprezentndu-l 27

Baze de date

Capitolul 2

nregistrarea unei comenzi fr un client asociat. Dac nu tii cine a emis comanda, nu o putei prelucra i, evident, nu o putei factura, iar asta o s v duc de rp vnzrile trimestriale. Cmpurile cheie joac un rol important ntr-o baz de date relaional, iar dumneavoastr trebuie s nvai s le creai i s le utilizai. IndexUn index este o structur pe care un program SGBDR o pune la dispoziie pentru mbuntirea procesului de prelucrare a datelor. Un index nu are nici o legtur cu structura logic a bazei de date. Unicul motiv pentru care discutm despre termenul index n acest capitol este faptul c oamenii l confund deseori cu termenul cheie. Index i cheie reprezint o alt pereche de termeni folosii eronat n mod frecvent i pe scar larg n industria bazelor de date. (Mai inei minte deosebirile dintre date i informaii?). Vei sesiza ntotdeauna diferena dintre cei doi termeni dac reinei c, n timp ce cheile sunt structuri logice pe care la identificarea nregistrrilor dintr-un tabel, indecii reprezint structuri fizice utilizate la optimizarea procesului de prelucrare a datelor. Prin folosirea indecilor, sortrile i filtrrile unei baze de date se face ntr-un timp mult mai scurt.

28

Baze de date

Capitolul 2

Termeni referitori la relaieRelaii ntre dou tabele exist o relaie atunci cnd nregistrrile din primul tabel pot fi asociate cu nregistrrile din al doilea tabel. Relaia se poate stabili prin intermediul unui set de chei primare i chei externe sau cu ajutorul unui al treilea tabel, numit tabel de legtur (cunoscut i sub numele de tabel asociativ). Figura 2.8 ilustreaz o relaie stabilit prin intermediul cheilor primare i al cheilor externe, iar figura 2.9 exemplific o relaie stabilit cu ajutorul unui tabel de legtur.Studenti StudID 6001 6002 6003 6004 6004 Nume Pop Szabo Costea Timocea Mocean Prenume Remus Zoltan Florian Sebastian Vasile OrasStudent Reghin Oradea Zalau Brasov Fagaras ........ ........ ........ ........ ........ Credite 5 5 4 5 4 5 4 ProfesorID 25461 25461 56821 12843 32584 3212 25461

Orar student(table de legtur) StudID 6001 6002 6002 6001 6002 6003 6003 6001 6003 6001 CursID C001 C213 C001 C213 C015 C001 C213 C015 G001 G001

Cursuri CursID Denumire C001 PUC C213 Baze de date C032 SIM C015 GD G001 AutoCAD G004 Inventor G007 Intellicad

Fig.2.9. O relaie stabilit ntre dou tabele prin intermediul unui tabel de legtur

29

Baze de date

Capitolul 2

O relaie este o component important a unei baze de date relaionale. O relaie permite crearea de vederi din tabele multiple i este crucial pentru integritatea datelor, ntruct contribuie la cantitii de date redundante i la eliminarea datelor duplicate. Putei caracteriza o relaie n trei moduri: n funcie de tipul relaiei dintre tabele, de maniera n care fiecare tabel particip la relaie i de gradul de participare al fiecrui tabel. Relaii unu cu unu Dou tabele au o relaie unu cu unu cnd o singur nregistrare din primul tabel este corelat cu o singur nregistrare din al doilea tabel i o singur nregistrare din al doilea tabel este corelat cu o singur nregistrare din primul tabel. n figura 2.10 este reprezentat o astfel de relaie. ntr-o asemenea relaie, un tabel servete ca tabel printe, iar cellalt ndeplinete rolul de tabel copil. Relaia se stabilete prin preluarea unei cpii a cheii primare a tabelului printe i ncorporarea acesteia n structura tabelului copil, unde devine o cheie extern. Acesta este un tip special de relaie, deoarece este unicul n cadrul cruia ambele tabele pot folosi efectiv aceeai cheie primar. n figura 2.10 este prezentat un exemplu clasic de relaie unu la unu. n acest caz SALARIAI este tabelul printe, iar SALARIU este tabelul copil. Se observ c fiecare salariat din primul tabel are un singur corespondent din al doilea tabel.Salariai SalariatID 100 101 102 103 Nume Ban Pop Lazr Crian Prenume Ioan Dorin Liviu Ovidiu Telefon 0745-646321 0723-548211 0264-542138 0740-764282 .. .. .. ..

Salariu SalariatID 100 101 102 103 Salar orar 34.50 23.00 17.45 16.00 Sporuri 10% 5% 20% 18% .. .. .. ..

30

Baze de date Fig. 2.10. Exemplu de relaie unu la unu

Capitolul 2

Relaia unu la unu poate fi imaginat ca o rupere n dou a tabelului. Dei cmpurile din aceste tabele pot fi combinate ntr-un singur tabel, proiectantul bazei de date a ales s plaseze n tabelul SALARIAI cmpurile ce pot fi vzute de orice membru al organizaiei i n tabelul SALARIU cmpurile ce pot fi vzute doar de personalul autorizat, tiut fiind c salariile sunt, de obicei, confideniale. Relaii unu cu mai muli ntre dou tabele exist o relaie unu cu mai muli cnd o nregistrare din primul tabel poate fi corelat cu una sau mai multe nregistrri din al doilea tabel, n timp ce o nregistrare din al doilea tabel poate fi corelat cu o singur nregistrare din primul tabel. S studiem un exemplu generic pentru acest tip de relaie. Modelul printe/copil pe care l-am utilizat pentru a descrie o relaie unu cu unu se aplic i n acest caz, partea unu a relaiei este tabelul printe, iar tabelul din partea mai muli este tabelul copil. O relaie de tipul unu cu mai muli se stabilete prin preluarea unei cpii a cheii primare a tabelului printe i ncorporarea acesteia n structura tabelului copil, unde devine o cheie extern. Exemplul din figura 2.11 ilustreaz o relaie de tip unu cu mai muli caracteristic.Clienti ClientID 9001 9002 9003 9004 9005 Nume Pop Ban Lazr Buzan Beldean Prenume Dorin Ion Ana Maria Vian ....... ....... ....... ....... ....... Imprumuturi ClientID 9002 9001 9004 9003 9003 9003 9002 9005 9005 CarteID 5648 690423 6563 65323 09542 64823 75001 10045 76100 Data .... .... .... .... .... .... .... .... ....

Fig. 2.11. Exemplu de relaie unu cu mai muli

31

Baze de date

Capitolul 2

O singur nregistrare din tabelul CLIENTI poate fi corelat cu una sau mai multe nregistrri din tabelul IMPRUMUTURI, dar o nregistrare din tabelul IMPRUMUTURI este corelat cu o singur nregistrare din tabelul CLIENTI. Dup cum probabil ai dedus, cmpul ClientID este o cheie extern n tabelul IMPRUMUTURI. Relaia unu cu mai muli este cea mai obinuit relaie care exist ntre dou tabele dintr-o baz de date i este cea mai uor de identificat. Relaia este extrem de important din punct de vedere al integritii datelor, deoarece ea v ajut s eliminai datele duplicate. Relaii de tip mai muli cu mai muli ntre dou tabele exist o relaie de mai muli cu mai muli cnd o nregistrare din primul tabel poate fi corelat cu una sau mai multe nregistrri din al doilea tabel i o nregistrare din al doilea tabel poate fi corelat cu una sau mai multe nregistrri din primul tabel. O relaie din aceast categorie se stabilete cu ajutorul unui tabel de legtur. Un tabel de legtur faciliteaz asocierea nregistrrilor dintr-un tabel cu nregistrrile din cellalt tabel i asigur lipsa oricror probleme la operaiile de adugare, tergere sau modificare a datelor corelate. Un tabel de legtur se definete prin preluarea unor cpii ale cheii primare din fiecare tabel i utilizarea lor pentru a forma structura noului tabel. n realitate, aceste cmpuri ndeplinesc dou roluri distincte: mpreun formeaz cheia primar compozit a tabelului de legtur, iar separat, fiecare poate fi asimilat unei chei externe. O relaie de tip mai muli cu mai muli care nu este stabilit n mod corespunztor se numete nerezolvat. Figura 2.12 prezint un exemplu clasic i clar de relaie de tip mai muli cu mai muli nerezolvat. n acest exemplu, o nregistrare din tabelul STUDENTI poate fi corelat cu mai multe nregistrri din tabelul CURSURI, n timp ce o singur nregistrare din tabelul CURSURI poate fi corelat cu mai multe nregistrri din tabelul STUDENTI.

32

Baze de date Studenti StudID 6001 6002 6003 6004 6004 Cursuri CursID C001 C213 C032 C015 G001 G004 G007 Denumire PUC Baze de date SIM GD AutoCAD Inventor Intellicad Credite 5 5 4 5 4 5 4 ProfesorID 25461 25461 56821 12843 32584 3212 25461 Sala 208 208 209 207 207 208 208 Nume Pop Szabo Costea Timocea Mocean Prenume Remus Zoltan Florian Sebastian Vasile OrasStudent Reghin Oradea Zalau Brasov Fagaras

Capitolul 2 ........ ........ ........ ........ ........

........ ........ ........ ........ ........ ........ ........

Fig. 2.12. Un exemplu tipic de relaie mai muli cu mai muli nerezolvat

Aceast relaie este nerezolvat datorit particularitii intrinseci a relaiei de tip mai muli cu mai muli. Principala problem este urmtoarea: cum se pot asocia cu uurin nregistrri din primul tabel cu nregistrrile din al doilea tabel? Pentru a reformula ntrebarea folosind tabelele din figura 2.12, cum se asociaz un student cu mai multe cursuri sau un anumit curs cu mai muli studeni? Se insereaz cteva cmpuri Student n tabelul CURSURI sau mai multe cmpuri Curs n tabelul STUDENTI? Oricare din aceste metode va ngreuna lucrul cu datele i va afecta n mod negativ integritatea datelor. Cea mai bun metod const n din crearea i utilizarea unui tabel de legtur, care va rezolva relaia de tip mai muli cu mai muli n maniera cea mai adecvat i mai eficient. Figura 2.13 prezint implementarea practic a cestei soluii. Este important ca dumneavoastr s cunoatei tipul de relaie care exist ntre tabelele dintr-o pereche, deoarece acesta determin modul n care sunt corelate tabelele, dac nregistrrile din tabele sunt interdependente sau nu, precum i numrul minim i maxim de nregistrri corelate care pot exista n cadrul relaiei.

33

Baze de date

Capitolul 2

Studenti StudID Nume 6001 Studenti Pop 6002 Szabo 6003 Costea 6004 Timocea 6004 Mocean Prenume Remus Zoltan Florian Sebastian Vasile OrasStudent Reghin Oradea Zalau Brasov Fagaras Cursuri CursID C001 C213 C032 C015 G001 G004 G007 ........ ........ ........ ........ ........

Orar StudID 6001 6002 6002 6001 6002 6003 6003 6001 6003 6001 CursID C001 C213 C001 C213 C015 C001 C213 C015 G001 G001

Denumire PUC Baze de date SIM GD AutoCAD Inventor Intellicad

Credite 5 5 4 5 4 5 4

ProfID 25461 25461 56821 12843 32584 3212 25461

Fig.2.13. Rezolvarea unei relaii de tip mai muli cu mai muli cu ajutorul unui tabel de legtur

Tipuri de participare Cnd stabilii o relaie ntre dou tabele, fiecare tabel particip la relaie ntr-o manier particular. Tipul de participare pe care l atribuii unui tabel dat determin dac n respectivul tabel trebuie s existe o nregistrare nainte de a putea introduce nregistrri n tabelul corelat. Exist dou tipuri de participri:Obligatorie - tabelul trebuie s conin cel puin o nregistrare nainte de a putea introduce nregistrri n tabelul corelat. Opional nu este obligatoriu ca tabelul s conin vreo nregistrare nainte de a putea introduce nregistrri n tabelul corelat.

34

Baze de date

Capitolul 2

De obicei, pentru majoritatea tabelelor, vei determina tipul de participare dup ce definii regulile de lucru cu baza de date. n majoritatea cazurilor, tipul de participare este evident, este de bun sim sau este n concordan cu un anumit set de standarde. S examinm perechea de tabele din figura 2.11, care se gsesc ntr-o relaie unu cu mai muli. Ne propunem s stabilim tipul de participare a celor dou tabele n aceast relaie. Pentru aceasta trebuie s rspundem la cteva ntrebri. Putem introduce nregistrri n tabelul CLIENTI dac nu avem nici o nregistrare n tabelul IMPRUMTURI? Rspunsul este DA, pentru c tabelul cu potenialii clieni se completeaz la nceput, deci tabelul IMPRUMUTURI are un tip de participare opional, pentru aceast relaie. La ntrebarea dac putem introduce nregistrri n tabelul IMPRUMTURI dac nu avem nici o nregistrare n tabelul CLIENTI, rspunsul este NU, pentru c trebuie s avem cel puin un client la care s mprumutm, deci tabelul CLIENTI are un tip de participare obligatorie, pentru aceast relaie. Gradul de participare Gradul de participare determin numrul minim de nregistrri existente ntr-un tabel al unei relaii, asociate cu o singur nregistrare a unui tabel corelat, respectiv numrul maxim de nregistrri care pot exista ntr-un tabel al unei relaii, asociate cu o singur nregistrare din tabelul corelat. S lum n considerare, o relaie dintre dou tabele A i B. Se stabilete gradul de participare pentru tabelul B prin indicarea numrului minim, respectiv maxim de nregistrri din tabelul B, prin indicarea numrului minim, respectiv maxim de nregistrri din tabelul B care pot fi corelate cu o singur nregistrare din tabelul A. Dac o nregistrare din tabelul A poate fi corelat cu minimum o nregistrare din tabelul B, respectiv cu maximum 10 nregistrri din tabelul B, atunci gradul de participare al tabelului B, la respectiva relaie, este 1,10. (Gradul de participare se noteaz cu numrul minim n stnga i numrul maxim n dreapta, separate prin virgul). Putei stabili gradul de participare pentru tabelul A, n acelai mod. Putei identifica gradul de participare, pentru fiecare tabel al unei relaii prin determinarea modului de corelare a datelor din fiecare tabel, precum i a modului de utilizare a datelor respective. S lu din nou exemplul din figura 2.11, care reprezint dou tabele care se gsesc ntr-o relaie unu cu mai muli. Dac se impune (de ctre conducere) 35

Baze de date

Capitolul 2

ca un cititor (client) s poat mprumuta ntre 1 i 4 cri, atunci gradul de participare al tabelului IMPRUMUTURI este 1,4. Dac dorii s impunei ca un cititor s poat mprumuta numai o carte, atunci vei indica gradul de participare ca fiind 1,1.

Termeni referitori la integritateSpecificaii de cmp O specificaie de cmp reprezint toate elementele unui cmp. Fiecare specificaie de cmp ncorporeaz trei tipuri de elemente: generale, fizice i logice. Elementele generale reprezint informaiile fundamentale referitoare la cmp i includ elemente precum numele cmpului, descrierea i tabelul printe. Elementele fizice determin modul de construire a unui cmp i modul de reprezentare a acestuia pentru persoana care l utilizeaz. Aceast categorie include elemente precum tipul de date, lungimea i formatul de afiare. Elementele logice descriu valorile stocate ntr-un cmp i includ articole precum valoarea obligatorie, intervalul de valori i valoarea prestabilit. Aceste specificaii de cmp o s le completai folosindu-v de nite formulare, care vor fi descrise n detaliu n capitolul urmtor. Integritatea datelor Prin integritatea datelor se nelege validitatea, consecvena i acurateea datelor incluse ntr-o baz de date. Nu pot accentua suficient faptul c nivelul de acuratee al informaiilor pe care le regsii din baza de date este direct proporional cu nivelul de integritate al datelor pe care l impunei bazei de date. Integritatea datelor reprezint unul dintre cele mai importante aspecte ale procesului de proiectare a bazelor de date i nu v este permis s-l subestimai, s-l trecei cu vederea i nici mcar s-l neglijai parial. Trebuie s fii contient de faptul c dac nu respectai regulile de integritate, suntei pasibili de a obine informaii cu grave erori, care sunt greu de depistat. Gndii-v numai la implicaiile posibile atunci 36

Baze de date

Capitolul 2

cnd baza dumneavoastr de date e folosit pentru tranzacii comerciale sau financiare. Exist patru tipuri de integritate a datelor pe care le vei implementa pe durata procesului de proiectare a bazelor de date. Trei dintre acestea se bazeaz pe diferite aspecte ale structurii bazei de date i sunt denumite n conformitate cu zona (nivelul) la care opereaz. Cel de-al patrulea tip de integritate a datelor se bazeaz pe modul n care o organizaie i percepe i i utilizeaz datele. n continuare vor fi prezentate descrierile fiecrui tip de integritate. Integritatea la nivel de tabel asigur lipsa nregistrrilor duplicate n interiorul tabelului i faptul c acel cmp care identific fiecare nregistrare din tabel este unic i nu are niciodat valoare nul. Integritatea la nivel de cmp asigur faptul c structura fiecrui cmp este solid, c valorile din fiecare cmp sunt valide, consecvente i precise, precum i c se asigur o definire consecvent, n ntreaga baz de date, a cmpurilor de acelai tip (Cod postal, de exemplu). Integritatea la nivel de relaie (cunoscut i sub numele de integritate referenial) asigur soliditatea relaiei dintre dou tabele, precum i faptul c nregistrrile din tabele sunt sincronizate ori de cte ori se introduc, se actualizeaz sau se terg date din oricare dintre cele dou tabele. Reguli de desfurare a activitii impun restricii sau limitri asupra anumitor aspecte ale bazei de date, pe baza modalitilor n care o organizaie i percepe i i actualizeaz datele. Aceste restricii pot afecta aspecte ale proiectrii bazelor de date, precum i intervalul i tipurile de valori stocate ntr-un cmp, tipul i gradul de participare a fiecrui tabel n cadrul unei relaii, precum i tipul de sincronizare utilizat pentru integritatea la nivel de relaie, n anumite relaii. ntrebri pentru autoevaluare 1. De ce este important terminologia? 2. Care sunt cele patru mari categorii de termeni? 3. Care este diferena dintre date i informaii? 4. Ce reprezint valoarea nul i de ce este important? 37

Baze de date

Capitolul 2

5. Care sunt principalele structuri ale unei baze de date? 6. Denumii cele dou tipuri de tabele? 7. Ce este o vedere? 8 .Care este diferena dintre o cheie i un index? 9. Care sunt cele trei tipuri de relaii care pot exista ntre dou tabele? 10. Ce este o specificaie de cmp? 11. Care sunt cele trei grupe de elemente ale unei specificaii de cmp? 12. Ce este integritatea datelor? Care sunt tipurile de integritate?

38

Baze de date

Capitolul 3

Capitolul 3. Proiectarea bazelor de date relaionaleAcest capitol va defini paii prin care trebuie s trecem pentru a proiecta corect o baz de date relaional. Cunotinele dobndite v vor permite s putei proiecta singuri o astfel de baz de date.

Acum cnd am vzut din ce e format o baz de date, cnd cunoatem i nelegem termenii bazelor de date relaionale, e momentul s trecem la proiectarea acestora. A nelege cum se proiecteaz o baz de date relaional nu este foarte complicat, e cu mult mai simplu dect ne imaginm. Totui, este foarte important s avei o idee de ansamblu cu privire la procesul de proiectare a bazelor de date relaionale, precum i o imagine general a etapelor pe care le implic procesul respectiv. nainte de a implementa o baz e date, aceasta trebuie proiectat, chiar dac este una mai simpl. De menionat faptul c indiferent de baza de date proiectat, trebuie parcuri aceeai pai sau etape. Acestea sunt:Etapa 1 Definirea unei declaraii de intenie i a obiectivelor misiunii; Etapa 2 Analiza bazei de date curente; Etapa 3 Crearea structurilor de date; Etapa 4 Determinarea i instituirea relaiilor ntre tabele; Etapa 5 Determinarea i definirea regulilor de desfurare a activitii; Etapa 6 Determinarea i definirea vederilor; Etapa 7 Verificarea integritii datelor.

Trebuie s mai menionez faptul c ntregul proces de proiectare se face fr ajutorul vreunui program, calculatorul este folosit numai la editarea documentelor acestui proces, aa cum vom vedea mai departe i la orele de laborator. n continuare se vor detalia etapele de proiectare a unei baze de date relaionale. 39

Baze de date

Capitolul 3

Etapa 1 Definirea unei declaraii de intenie i a obiectivelor misiuniiPrima faz n procesul de proiectare a bazelor de date const din definirea unei declaraii de intenie i a obiectivelor misiunii bazei de date. Aceast declaraie stabilete finalitatea bazei de date i ofer o orientare distinct pentru activitatea de proiectare. Fiecare baz de date este creat cu un anumit rost, fie pentru rezolvarea unei anumite probleme de afaceri, gestiunea unor tranzacii zilnice, gestiunea unei magazii, fie pentru a fi utilizat ca parte a unui sistem informaional. Destinaia bazei dumneavoastr de date este identificat i definit ntr-o declaraie de intenie. Aceasta contribuie la asigurarea dezvoltrii unei structuri de baze de date adecvate, precum i identificarea acelor date care duc la atingerea scopului propus. Pe lng declaraia de intenie, n aceast etap trebuie definite i obiectivele misiunii. Obiectivele misiunii sunt declaraii care reprezint sarcinile generale pe care utilizatorii le pot ndeplini folosind baza de date. Aceste obiective sprijin i completeaz declaraia de intenie, determinnd n acelai timp diferitele aspecte ale structurii bazei de date. Obiectivele misiunii se mai pot numi i caiet de sarcini, termen nc folosit pentru definirea cerinelor beneficiarului. Declaraia de intenie i obiectivele misiunii fiind documente foarte importante n proiectarea unei baze de date se pune ntrebarea, cine elaboreaz aceste documente?Declaraia de intenie este elaborat de dezvoltatorul bazei de date (Dvs.) mpreun cu conductorul(patronul) firmei i personalul de conducere care este responsabil de definirea acesteia. Este necesar participarea celor dou pri pentru a se putea ajunge la o exprimare corect care s fe neleas la fel att de dezvoltator ct i de beneficiar, altfel s-ar putea ajunge la situaii de genul nu asta am cerut sau eu altceva am neles din aceast fraz. Obiectivele misiunii sunt elaborate de dezvoltatorul bazei de date (Dvs.) mpreun cu personalul de conducere i utilizatorii finali (cei care vor lucra efectiv cu aplicaia). Aceast componen este necesar pentru c utilizatorii finali pot avea idei valoroase pentru proiectarea corect a bazei de date.

40

Baze de date

Capitolul 3

Compunerea unei declaraii de intenie O declaraie de intenie bun este succint i la obiect. Declaraiile vagi sau ambigui nu fac altceva dect, mai degrab, s ascund scopul bazei de date. Iat o declaraie de intenie bun: Rolul bazei de date Clieni/Furnizori este de a ine la zi situaiile de pli i ncasri, precum i de a furniza situaii concrete referitoare la un anume client sau furnizor, ntr-un anumit interval de timp sau la o anumit dat. Aceast declaraie este foarte general, nu conine date inutile, este scurt i se vede clar la ce va fi folosit: s furnizeze informaii despre starea unui client sau furnizor, att de importante n activitatea unei firme. Facei analogia dintre o declaraie de intenie i o lumnare cu care traversm un tunel ntunecos, adic lumnarea nu ne d amnunte despre cum s traversm tunelul dar ne ghideaz spre captul lui. Iat un exemplu de declaraie de intenie formulat defectuos: Rolul bazei de date a firmei SC AZUR SRL const din a pstra evidena aplicaiilor pentru utilizarea terenurilor, pstrarea datelor cu privire la solicitani, pstrarea unei nregistrri a tuturor audierilor, a tuturor deciziilor, a tuturor apelurilor, pstrarea datelor referitoare la angajaii departamentului i ntreinerea datelor n vederea utilizrii generale n cadrul biroului. Aceast declaraie de intenie are urmtoarele neajunsuri: este prolix, adic nu este succint i la obiect; finalitatea bazei de date nu este clar; este astfel scris nct este dificil de identificat finalitatea bazei de date; descrie numeroase operaii concrete, care nu-i au rostul. Cum am putea corecta aceast declaraie de intenie? Iat un exemplu: Rolul bazei de date a firmei SC AZUR SRL const din a pstrarea datelor utilizate de biroul judectorului de instrucie pentru luarea de decizii privind solicitrile de utilizare a terenurilor trimise de cetenii judeului X.

41

Baze de date

Capitolul 3

Se observ c finalitatea bazei de date a devenit mult mai clar, s-au eliminat operaiile i nu d impresia c ar fi incomplet. Compunerea unei declaraii de intenie presupune din partea dumneavoastr, a dezvoltatorului purtarea de discuii cu patronul sau managerul societii respective, pentru aflarea de informaii despre aceasta, profilul ei de activitate etc. Deci, prima discuie cu patronul apoi cu ceilali membrii ai conducerii sau ali specialiti indicai de patron. Ai putea s v ntrebai de ce atta zarv pentru una sau dou fraze pe care le conine declaraia de intenie? Nu uitai c declaraia de intenie este sinteza unor discuii, preri contradictorii, opinii ale mai multor persoane i c ea trebuie s fie lumina cluzitoare pentru finalizarea proiectului bazei de date. Cel mai important aspect care trebuie reinut este acela c declaraia de intenie trebuie s fie logic pentru dumneavoastr (dezvoltatorul bazei de date) i beneficiarii bazei de date. Tipul de declaraii difer de la un grup de persoane la altul, iar formularea depinde mult de terminologia specific domeniului de activitate. Declaraia dumneavoastr de intenie este complet atunci cnd conine o propoziie care descrie finalitatea concret a bazei de date, care este neleas i aplicat de toate prile implicate. Definirea obiectivelor misiunii Obiectivele misiunii sunt declaraii care reprezint sarcinile generale acceptate de datele pstrate n baza de date. Fiecare obiectiv reprezint o singur sarcin. Obiectivele misiunii furnizeaz informaii pe care le vei folosi n decursul procesului de proiectare a bazei de date. De exemplu, obiectivele misiunii permit definirea structurii tabelelor, a specificaiilor de cmp, a caracteristicilor de relaie i a vederilor. De asemenea, v ajut s impunei integritatea datelor i s definii regulile de desfurare a activitii. n final, obiectivele misiunii sunt de natur s ndrume demersurile de dezvoltare i asigur faptul c structura final a bazei de date permite ndeplinirea declaraiei de intenie. Un obiectiv de misiune bine scris reprezint o propoziie cu caracter declarativ, care definete fr echivoc o sarcin de ordin general i care este lipsit de detalii inutile. Un obiectiv se exprim n termeni generali, succint, la obiect i fr ambiguiti. Iat cteva exemple de obiective de misiune caracteristice: 42

Baze de date

Capitolul 3

Dorim s pstrm informaii complete despre studeni. Dorim s pstrm evidena tuturor facturilor emise. Dorim s pstrm evidena tuturor recepiilor. Dorim s ne asigurm c un agent de vnzri nu rspunde de mai mult de 15 clieni. Dorim s pstrm evidena tuturor reparaiilor mainilor din dotare. Dorim s generm agende cu numerele de telefon ale angajailor.

Dup cum se observ, obiectivele prezentate sunt foarte clare i uor de neles. Fiecare obiectiv reprezint o sarcin unic de ordin general i definete clar sarcina respectiv, fr detalii inutile. De exemplu, ultimul obiectiv de misiune prezentat n lista anterioar indic faptul c se dorete generarea unor liste cu angajai nu i modul n care vor fi generate. Nu este necesar indicarea modalitii de generare a listelor de angajai, deoarece acest aspect face parte din procesul de dezvoltare a aplicaiei. De reinut c finalitatea unui obiectiv de misiune const din definirea diferitelor structuri din compoziia bazei de date i din orientarea direciei generale a dezvoltrii bazei de date. Dac un obiectiv de misiune reprezint mai multe sarcini generale, acesta va trebui descompus n dou sau mai multe obiective de misiune. n concluzie, aceast etap are ca rezultat un document care ne spune de ce trebuie s proiectm baza de date (declaraia de intenie) i cam ce probleme rezolvm cu ea (obiectivele misiunii). ntrebri pentru autoevaluare 1. Ce este o declaraie de intenie ? 2. Indicai dou caracteristici ale unei declaraii de intenie bine scrise. 3. Dai exemple de declaraii de intenie. 4. Cnd se consider finalizat o declaraie de intenie? 5. Ce este un obiectiv de misiune? 6. Indicai dou caracteristici ale unui obiectiv de misiune bine scris. 7. Dai exemple de obiective de misiune. 8. Cine concepe declaraia de intenie i obiectivele misiunii? 43

Baze de date

Capitolul 3

Etapa 2 - Analiza bazei de date curentenainte de a ncepe proiectarea noii noastre baze de date trebuie s fim contieni c nu suntem pe un pmnt virgin, c naintea noastr s-au mai folosit baze de date, s-au manipulat informaii, aa c este nelept s vedem ce exist pentru a putea prelua unele informaii. De multe ori chiar exist o baz de date care a fost proiectat dup posibilitile de atunci. Aceast baz de date poate fi folosit ca resurs pentru noua baz de date. Fiind n etapa 2-a de proiectare, deja tii obiectivele pe care trebuie s le ndeplineasc noua baz de date. Pentru v face o imagine despre organizaie (firm) i informaiile cu care lucreaz, va trebui s rspundei la urmtoarele ntrebri:

Ce tipuri de date folosete organizaia? Cum folosete organizaia datele respective? Cum gestioneaz i pstreaz organizaia datele respective? Rspunsurile la aceste ntrebri, v ofer informaii vitale, pe care le putei utiliza eficient n proiectarea bazei de date care rspunde cel mai bine cerinelor organizaiei. Actorii acestei etape sunt, pe de o parte dezvoltatorul bazei de date (cel care pune ntrebri i prelucreaz rspunsurile) i beneficiarii (cei care rspund la ntrebri). Este foarte probabil ca organizaia s utilizeze un tip sau altul de baz de date care ar putea fi asociat cu una din urmtoarele categorii: Baze de date pe suport de hrtie sunt formate din diferite formulare i documente manuscrise stocate n dosare. Dosarele sunt identificate cu ajutorul unor coduri scrise pe ele, apoi sunt puse n fiete prin intermediul unei scheme de codificare, n funcie de dimensiunea bazei de date. Aceste baze de date sunt mai dificil de neles, de aceea este necesar conlucrarea cu persoane din firm care lucreaz efectiv cu aceste informaii. Baze de date motenite sunt acele baze de date care au existat i au fost folosite mai muli ani. Ele sunt alctuite din diferite tipuri de structuri de date i ecrane de interfa cu utilizatorul, care se gsesc toate ntr-un calculator personal. Randamentul, funcionalitatea i eficiena structurilor i ecranelor sunt extrem de dependente de limbajul de programare i programele de gestiune a bazelor de date folosit. n general, structurile i 44

Baze de date

Capitolul 3

ecranele sunt nefinisate conform standardelor moderne, deoarece au fost create atunci cnd aceste standarde nu existau. Baze de cunotine umane se bazeaz pe memoria unuia sau mai multor angajai din cadrul organizaiei. Aceste persoane posed un anumit volum de informaii (de exemplu date despre clieni, furnizori sau detalii despre un anumit produs) care sunt foarte importante pentru derularea activitii organizaiei respective. Aceste informaii trebuie interceptate n vederea introducerii lor n baza de date pe care o proiectai. Obiectivul analizei dumneavoastr const n a determina tipul de date pe care le folosete organizaia, modul n care le gestioneaz i pstreaz, modul n care le vizualizeaz i le utilizeaz. n decursul analizei vei trece n revist diferitele moduri n care organizaia i colecteaz i prezint datele, dup serii de discuii purtate cu utilizatorii direci i cu personalul de conducere. Cum se procedeaz? Informaiile pe care le-ai adunat le folosii pentru a sintetiza o list iniial de cmpuri. Apoi rafinai aceast list pentru eliminarea cmpurilor duplicate i a celor calculate i plasarea acestora din urm ntr-o list separat, care va fi folosit mai trziu n procesul de proiectare. Lista rafinat constituie necesitile informaionale ale organizaiei respective i furnizeaz un punct de nceput pentru proiectarea unei noi baze de date. Dup cum se tie, nimic nu este niciodat finalizat, aa c nici lista noastr de cmpuri, orict de rafinat ar fi, va fi modificat de multe ori. Dup ce ai finalizat lista de cmpuri, trimitei-o utilizatorilor i personalului de conducere, pentru o examinare succint i posibile modificri. ncurajai opiniile celorlali i luai n considerare sugestiile lor de modificare. n concluzie, aceast etap se va ncheia cu un document care conine o list preliminar de cmpuri i o list de cmpuri calculate.

ntrebri pentru autoevaluare 1. n ce const analiza bazei de date curente? 2. Care sunt cele trei surse pe care le analizm? 3. Care este rolul dezvoltatorului i al beneficiarului? 45

Baze de date

Capitolul 3

4. Cum se finalizeaz aceast etap?

Etapa 3 - Crearea structurilor de daten aceast etap se definesc tabelele cu cmpurile lor, se stabilesc cheile i se stabilesc specificaii pentru fiecare cmp. Tabelele sunt primele structuri care se definesc ntr-o baz de date. Determinarea diferitelor subiecte pe care le vor reprezenta tabelele se execut pe baza obiectivelor misiunii, pe care le-ai determinat n timpul primei faze a procesului de proiectare i a necesitilor de date pe le-ai adunat pe durata celei de-a doua faze. n principiu, un subiect trebuie s se regseasc ntr-un tabel, care la rndul su conine un numr de cmpuri care definesc complet acel subiect. Cum se procedeaz? Iat paii care vor trebui parcuri: Se face o list preliminar cu toate tabelele identificate; Fiecrui tabel i se definesc cmpurile; Se stabilesc cheile adecvate pentru fiecare tabel, principala grij fiind aceea ca fiecare tabel s aib cheie primar corect definit. Aceast cheie identific n mod unic fiecare nregistrare din tabel; Pasul final al acestei etape const n stabilirea specificaiilor de cmp aferente fiecrui cmp al bazei de date. Dup ce au fost parcuri aceti pai se vor purta discuii cu utilizatorii i personalul de conducere pentru a verifica nc o dat specificaiile de cmp stabilite. n aceast faz pot apare mici modificri, fie la componena cmpurilor unui tabel sau la specificaiile de cmp.

Definirea listei finale de tabele Dup analizarea listei de tabele i a discuiilor cu viitorii utilizatori ai bazei de date pe care o proiectai, vei putea defini o list final de tabele. Aceast list trebuie s conin nou noi elemente i anume: 46

Baze de date

Capitolul 3

Tipul tabelului tabel de date, tabel de legtur, tabel subset sau tabel de validare; Descrierea tabelului care cuprinde o definire clar a subiectului reprezentat de tabel i precizeaz de ce este important acest subiect pentru organizaia care utilizeaz baza de date. Exist cteva principii de baz care v ghideaz n descrierea tabelului. n continuare vor fi prezentate cteva principii sau linii directoare legate de numele pe care l dai tabelelor i cmpurilor.

Iat cteva linii directoare care v vor ajuta s alegei numele tabelelor: Creai un nume unic, descriptiv, care s fie semnificativ pentru ntreaga organizaie. Utilizarea numelor unice v ajut s v asigurai c fiecare tabel reprezint clar un subiect diferit i c toat lumea va nelege ce reprezint tabelul. Alegei nume suficient de descriptive pentru a fi nelese de la sine. ntretinere aparate este un nume bun i descriptiv. Creai un nume care identific cu precizie, clar i fr ambiguiti subiectul tabelului. Numele vagi sau ambigue indic de obicei faptul c tabelul reprezint mai mult de un subiect, ceea ce nu este de dorit. Cnd ntlnii astfel de nume, identificai subiectele reprezentate cu adevrat de tabel, apoi tratai fiecare subiect ca tabel separat. Date este un exemplu de nume de tabel ambiguu, care poate nsemna orice fel de date, referitoare la facturi, persoane, aparate, parametri tehnologici etc. Utilizai numrul minim de cuvinte necesar comunicrii subiectului tabelului. Orice persoan din organizaie trebuie s poat nelege ce reprezint un tabel, fr a citi descrierea acestuia. Cu toate c obiectivul dumneavoastr este de a crea un nume ct mai scurt, nu este indicat s folosii un nume ca de exemplu TD_1, care este exagerat de scurt i genereaz neclaritate. Nu folosii cuvinte care comunic anumite caracteristici fizice. n numele tabelelor evitai folosirea unor cuvinte ca fisier, tabel, cmp, deoarece ele ar putea introduce un grad de confuzie de care nu avei nevoie. 47

Baze de date

Capitolul 3

Nu folosii acronime i abrevieri. Acronimele sunt greu de descifrat, abrevierile rareori reuesc s comunice subiectul unui tabel, iar mpreun ncalc primul principiu prezentat. Folosii forma de plural a numelui. Dup cum tii, un tabel reprezint un singur subiect, care poate fi un obiect sau eveniment. Putei extinde aceast definiie spunnd c un tabel reprezint o colecie de obiecte sau evenimente similare. Prin urmare, putei da nume de tabel de forma Calculatoare sau Consultatii. Evitai folosirea diacriticelor n numele de tabele. Diacriticele , , , , pot influena negativ dezvoltarea aplicaiilor de baz de date, deoarece unele funcii ar putea s nu neleag aceste caractere speciale, caracteristice numai limbii romne. Pentru descrierea unui tabel inei seam de urmtoarele principii: Includei un enun care s defineasc cu exactitate tabelul. Din descrierea tabelului oricine ar trebui s poat determina uor identitatea acestuia, fr confuzii sau ambiguiti. Iat o definiie de tabel cruia i lipsete precizia: Furnizori companii care ne livreaz materii prime i materiale. Ce se ntmpl dac firma (o brutrie) primete ingrediente i de la fermierii locali, care nu sunt companii? Iat o definiie corespunztoare: Furnizori persoane i organizaii care ne livreaz materii prime i materiale. Acest enun poate fi utilizat ca definiie de tabel n descrierea unui tabel. Includei un anun care explic de ce acest tabel este important pentru organizaie. Un tabel conine date ce sunt adunate, ntreinute, manipulate i preluate de ctre organizaie pentru un anumit motiv. Enunul trebuie s explice de ce respectivele date sunt importante pentru organizaie. Compunei o descriere care s fie clar i succint. Evitai greeala obinuit de a enuna din nou sau reformula numele tabelului n descrierea acestuia, ca n exemplul urmtor: 48

Baze de date

Capitolul 3

Orar Student orarul unui student. Evitai s fii laconic. Prin orar se pot nelege multe. Descrierea de mai sus nu este de mare folos pentru oricine din organizaie. Iat un exemplu de descriere, care este destul de lung i ofer mai mult informaie dect e necesar: Orar Student toate cursurile care vor fi urmate de ctre un student (inclusiv zile, ore i titularul de curs) pe parcursul unui an colar. Datele din acest tabel sunt importante deoarece permit studentului s cunoasc numele, momentul i locul n care se presupune c se va desfura cursul. De asemenea, studentul va cunoate att durata cursului, ct i numele profesorului care l pred. Toat aceast definiie poate fi reformulat mai clar i mai succint, astfel: Orar Student cursurile pe care studentul trebuie s le urmeze n anul colar curent. Informaia oferit de acest tabel ajut studentul la gestionarea timpului iar colii s realizeze statistici despre cursuri, studeni, sli i profesori. Prima propoziie din acest tabel ofer definiia tabelului, iar a doua de ce este important pentru organizaie (coal). n descrierea tabelului nu includei informaii care in de implementare, ca de exemplu modul n care sau locul unde este folosit tabelul. Evitai enunuri care indic modul specific de utilizare a tabelului sau cum l vei accesa fizic. Nu realizai o descriere care face trimitere la descrierea unui alt tabel. Fiecare tabel trebuie s aib o descriere proprie i independent de orice alt descriere a unui alt tabel. Dup ce ai definitivat lista de tabele, urmeaz, n mod firesc, ca fiecrui tabel s i se asocieze un numr de cmpuri. Asocierea cmpurilor fiecrui tabel Etapa 2-a s-a finalizat cu o list de cmpuri. Atribuirea cmpurilor la un tabel este un proces relativ simplu: determinai care cmpuri reprezint cel mai bine caracteristicile subiectului unui tabel i atribuii aceste cmpuri 49

Baze de date

Capitolul 3

respectivului tabel. Repetai aceast procedur pentru toate tabelele din lista final de tabele. Se poate ntmpla ca un cmp sau un set de cmpuri s fie cerut de mai multe tabele, aceasta este un lucru acceptat. Observaie important!! Suntei n faza de proiectare a bazei de date i nu avei nevoie dect de hrtie i creion pentru a v face treaba. Cnd lucrai la un proiect de baze de date, primul lucru pe care trebuie s-l facei este achiziia unui dosar plic n care s inei toate listele pe care le-ai scris, schiele i notaiile care se vor aduna. Se va trece la calculator numai dup ce avei proiectul complet al bazei de date. De altfel, n cadrul acestui curs o s gsii un studiu de caz n care se proiecteaz o baz de date. ncepei acest proces lund o foaie de hrtie (A4) aezat culcat (landscape). n partea de sus a foii scriei numele fiecrui tabel din lista final de tabele, avnd grij s lsai suficient spaiu pentru a ncape numele cmpurilor pe care le vei scrie sub ele (figura 3.1).

Studenti Nume Prenume Data nasterii .........

Discipline Denumire Credite Profesor ........

Profesori Nume Prenume Grad didactic ........

.....

Fig. 3.1. Crearea unei foi pentru scrierea structurilor de tabel

Practica spune c n aceast faz tabelele nu au nc o structur definitiv, de aceea trebuie analizat n continuare aceast structur, mai ales c avem imaginea de ansamblu a tuturor tabelelor. O prim problem ar fi verificarea numelor cmpurilor care au primit nume dup inspiraia de moment, de aceea trebuie s dm nume cmpurilor dup nite criterii sau principii. Iat cteva principii pe care le putei folosi pentru crearea numelor de cmpuri: Creai un nume unic, descriptiv, care s aib sens pentru ntreaga organizaie. Un nume de cmp trebuie s apar o 50

Baze de date

Capitolul 3

singur dat n toat baza de date; singura excepie de la aceast regul apare n cazul n care cmpul servete la stabilirea unei relaii ntre dou tabele. Asigurai-v c numele este suficient de descriptiv pentru a comunica exact nelesul cmpului pentru oricine l vede. Creai un nume care s identifice cu precizie, clar i fr ambiguiti caracteristica reprezentat de cmp. Numr de telefon este un exemplu clasic de nume de cmp ambiguu pentru c nu tim la ce telefon se refer, la cel de acas, de la birou sau la telefonul mobil. nvai s fii exact. Acest nume de cmp ar putea s fie foarte exact dac ar avea numele Numar telefon acasa sau Numar telefon birou. Utilizai numrul minim de cuvinte necesar comunicrii nelesului caracteristicii reprezentate de cmp. Este bine s evitai numele de cmpuri lungi, dar n acelai timp ar fi bine s evitai utilizarea unui singur cuvnt ca nume de cmp, dac acel cuvnt este necorespunztor. De exemplu Angajare este prea scurt pentru un nume de cmp, iar Data la care a fost angajata persoana este mult prea lung! ns Data angajarii este un nume de cmp foarte bun. Nu folosii acronime, iar abrevierile trebuie utilizate judicios. Acronimele pot fi greu de d