implementarea unei interfete grafice pentru gestionarea unei biblioteci

Upload: marius-laurentiu-urea

Post on 07-Jul-2015

1.560 views

Category:

Documents


1 download

DESCRIPTION

Lucrare de licenta la specializarea informatica. O baza de date in MySQL iar interfata realizata cu biblioteca Swing din Java.PLatforma de dezvoltare - IDE - s-a folosit NetBeans.

TRANSCRIPT

1. INTRODUCERE In sistemele de gestiune a bibliotecilorEvidenierea extraordinarelor schimbri introduse de tehnicile de informare n biblioteci i centrele de documentare, ncepnd cu anii 1960, este fr ndoial un loc comun. Toi aceti ani de adaptare, de experimentare, de utilizare a unor noi tehnici, noi echipamente sau noi documente au modificat considerabil, profund i iremediabil nu numai peisajul instituiilor, ci n egal msur deprinderile de lucru ale profesiei. Semnificativ e c s-a simit nevoia unei noi terminologii pentru desemnarea unor biblioteci" ale cror colecii nu mai erau alctuite doar din cri. In plus, o bibliotec din zilele noastre, loc de cultur deschis asupra lumii nconjurtoare, nu poate ignora mutaia de fond la care asistm n prezent. Introducerea de noi documente e nsoit de aceea de noi echipamente, a cror form elementar poate fi un simplu aparat de lectur, dar cea mai elaborat, calculatorul, aduce o total revoluionare a organizrii interne a instituiei. n afara aspectului uman, fr de care nu exist bibliotecar, nici utilizator, rapidele progrese tehnice ale informaticii n lumea informrii documentare, dezvoltarea reelelor, apariia inovatoare a unor noi suporturi de informaie, nevoia de a lucra n colaborare sau ntrirea schimburilor bibliografice implic, n general, necesitatea unei informatizri a bibliotecii ori a centrului de documentare.

1.1.Istoricul i evoluia programelor de gestionare a bibliotecilor Informatica a devenit att de important n zilele noastre deoarece ea este, de departe, cel mai puternic instrument de prelucrare a informaiei conceput vreodat de om. Ea i arat pe deplin msura ca instrument privilegiat de prelucrare n sistemele de informare, mai ales n domeniul documentrii ce manipuleaz astzi cantiti uriae de date a cror valoare economic este, i ea uriaa. Moore a fcut o previziune a semiconductorilor pe 19 aprilie 1965, cnd a spus ca numrul de tranzistori dintr-un chip se va dubla la fiecare 2 ani favoriznd rspndirea computerelor peste tot in lume, si de asemenea, costurile de producie vor scade din ce in ce mai mult. Previziunea lui Moore s-a dovedit perfect adevrata, un Quad Core Extreme Edition pe 1

45nm avnd in prezent peste 820 de milioane de tranzistori. De asemenea, raportndu-ne la costurile de fabricaie, un tranzistor dintr-un procesor Intel actual costa de un milion de ori mai puin dect unul inclus intr-un chip construit in 1971.Daca mainile ar fi evoluat la fel, acum am fi putut cumpra un autovehicul cu...un cent. Jaloane istorice In secolul al IX-lea, Al-Khowarisni, matematician din Bagdad, scrie un manual de aritmetic bazat pe numerotarea poziiei. De la numele su provine termenul algoritm". Secolul al XVII-lea este deosebit de fertil n invenii: n 1623, germanul Schickard realizeaz o main de calcul; n 1648, Pascal inventeaz i el o main de calculat, iar Leibniz creeaz n 1673 o main de nmulit. Vaucanson, mai cunoscut pentru calitatea i finisajul automatelor sale, se va afla, n anii 1750, la originea unui prim rzboi de esut automat, perfecionat de Jacquard ctre sfritul secolului al XVIII-lea, devenind astfel, poate, prima main funcionnd cu ajutorul cartelelor perforate. In secolul al XlX-lea, Babbage lucreaz la realizarea unor maini care s funcioneze pe principiile calculatoarelor. Boole i public analiza matematic a logicii n 1847, n timp ce Cebev inventeaz n 1881 o main capabil s efectueze adunri i nmuliri. In 1880, n Statele Unite, Hollerith inventeaz" cartela perforat i concepe dou procedee pentru a o citi: unul, mecanic, inspirat de rzboaiele de esut ale lui Jacquard, folosete dou tije metalice care strbat fiele prin gurile perforate, altul, electric, n care vidul lsat de perforaii stabilete trecerea unui curent. Hollerith i va completa progresiv sistemul cu o main de perforat, o main de triat capabil s citeasc cartelele i s le dirijeze spre compartimentele de clasare i, n fine, o main tabulatoare capabil s citeasc i s socoteasc. Inveniile lui Hollerith nu vor avea nici un succes pn la crearea lui Tabulating Machine Corporation ce va deveni mai trziu International Business Machine, cunoscut azi sub denumirea de IBM. In 1900, Torres Quevedo realizeaz o main n stare s rezolve ecuaii folosind reprezentri ale numerelor prin virgul flotant. n 1930, Louis Couffignal descrie o nou main de calculat i subliniaz, ntr-o comunicare la Academia de tiine, din 1936, importana folosirii reprezentrii binare n funcionarea mainilor. Abia n 1940 se face cu adevrat intrarea n era informatic, atunci cnd IBM depune brevetul unui totalizator electronic, n conceperea cruia n-au mai intrat dispozitive mecanice. 2

1.2.Istoria informatizrii bibliotecilor Utilizarea calculatorului Istoria" Informatizrii bibliotecilor ncepe cu adevrat in mijlocul anilor 1950 cnd primele calculatoare si-au fcut apariia In mediile universitare din Statele Unite. Pe atunci era vorba de calculatoarele din "prima generaie" de o concepie identica cu aceea a posturilor de radio cu lmpi", pe baza de tuburi electronice legate intre ele prin fire cablate manual si folosind cartele perforate , apoi benzi magnetice. Mrimea lor o depea cu mult pe aceea a fiierelor manuale ale unei biblioteci mijlocii, necesitau prezena constant a unei echipe de informaticieni, iar capacitile lor n materie de prelucrare documentar erau mai mult dect limitate, cci tehnologia n evoluie nu le permitea s ndeplineasc dect prelucrri ulterioare; aceste maini costisitoare, complexe, lente i greu de manevrat, erau mai mult calculatoare dect maini capabile s prelucreze un text. Anii 1960 In istoria informaticii, aceasta e perioada marilor descoperiri, fie c e vorba de progresele dobndite cu ajutorul diferitelor echipamente, fie de apariia reetelor i a serverelor de date. Apariia formatului MARC Dup experimentarea sa ntre 1966 i 1968 de ctre Biblioteca Congresului i de alte aisprezece biblioteci din Statele Unite, inovaia s-a rspndit foarte repede pe tot teritoriul Statelor Unite, lundu-se n considerare o situaie la scar naional cu totul specific i necunoscut n Frana : bibliotecile nord-americane, fie ele publice, universitare sau de cercetare, obinuiau deja s-i procure fiele noilor achiziii de la Biblioteca Congresului, reducnd astfel considerabil timpul consacrat catalogrii locale : ntr-adevr, aceste fie cuprindeau nu numai o descriere bibliografic standardizat, ci i n afara cotei Bibliotecii Congresului, o indexare pe materii conform Library of Congress Subject Headings (LCSH) i un indice Dewey. Din 1967, Biblioteca Congresului a publicat o a doua versiune a formatului su, botezat MARC II, ulterior denumit USMARC, conceput n mod mai specific pentru facilitarea schimbului de notie bibliografice, Trecerea la o nou structurare a datelor nu a declanat fenomenul de respingere i

3

formatul MARC a devenit curnd un standard naional care permitea fiecrei biblioteci s primeasc o band magnetic sptmnal. Atenia s-a ndreptat rapid ctre reelele specializate n transportul datelor n pachete ce ofereau pentru prima oar posibilitatea de tranzacii interactive ; astfel ncepea era lucrului online". Ca un amnunt, ARPANET (Advanced Research Projects Agency Network) a fost, n 1969, prima reea de transmitere n pachete ntre principalele organisme de cercetare militar din Statele Unite ; devenit civil, dup numeroase dezvoltri tehnice i o spectaculoas criz de gigantism, azi e cunoscut sub numele de Internet. Anii 1970 Dintr-un punct de vedere general, am putea aprecia foarte schematic anii 1970 drept o perioad a timpului partajat".Atunci se produce marele val seismic ce atinge Frana din plin. Comercializarea mainilor de a patra generaie" ncepe o data cu apariia primului microcalculator construit n jurul microprocesorului inventat n 1970 dar care nu va ajunge n lumea bibliotecilor dect zece ani mai trziu. Totui performanele acestui tip de aparat sunt practic echivalente cu cele ale mainilor din prima generaie. Pe de alt parte, preurile snt n cdere liber costul unul tranzistor a fost mprit la 20.000 ntre 1960-1976... Dar va trebui ateptat anul 1980 pentru a se saluta apariia primului microcalculator portabil. Anii 1980 Sunt marcai de contientizarea comunitii bibliotecarilor francezi n privina standardizrii i a folosirii de instrumente comune. Catalogul colectiv naional al publicaiilor seriale apare n 1983 din fuziunea dintre IPPEC (Inventarul permanent al periodicelor n curs), AGAPE (Aplicarea gestiunii automatizate la periodice), CPI (Catalog de periodice interregional) i CIEPS (Centrul internaional de nregistrare a publicaiilor seriale). In plus, apare o preocupare fa de conceptul de catalog colectiv de lucrri (CCO); aceast idee este aplicat azi de o manier mai extins n Catalogul colectiv al Franei. Apariia microcalculatorului n bibliotec Deceniul 1980 a vzut introducerea primelor microcalculatoare n bibliotecile publice, cel mai adesea fiindc era instrumentul necesar pentru asigurarea regsirii notielor bibliografice pe un compact disc optic, dar deseori era un echipament dedicat, puin sau deloc legat la sistemul 4

informatic al bibliotecii; n paralel, microcalculatoarele au fost utilizate pentru lucrri de birou, cel mai adesea total independente de sistemul de gestionare a bibliotecii. La sfritul deceniului '80 au aprut softurile de gestionare a bibliotecii, deseori destinate unor mici instituii. In fine, a fost, din pcate, utilizat pentru meterirea", ca n anii 1970, a sistemelor locale" ; aceste sisteme, construite cu softuri de aplicaii birotice (Word,- Excel etc.) sau de sisteme de gestionare a bazelor de date (Dbase, Acces, Paradox etc.) nu sunt, din nefericire, viabile n contextul actual: n unele cazuri, se poate c ofer, posibilitatea regsirii unor date bibliografice, ceea ce ar rspunde unei nevoi precise, dar procesul lor de elaborare dovedete c analiza e pe Termen foarte scurt, ceea ce ar avea, cu certitudine, grave consecine economice pentru instituie. Dezvoltarea microinformaticii n anii 1980 a avut i o alt consecin: vechea discuie ce opune lumea bibliotecilor celei a centrelor de documentare a prilejuit evoluia unor aplicaii separate : - Pe de o parte, pachetele de programe zise documentare", ignornd adesea formatele MARC i fiierele de autoritate, dar care aveau importante funcii de indexare pe subiecte, ba chiar de interogare n text; n pofida tuturor calitilor de putere de cutare, aceste produse devin, in general, total proprietare", deci incompatibile ntre ele. - Pe de alt parte, pachetele de programe zise de bibliotec", cu o structura mai rigid", tiind n mod normal s administreze la intrare i n ieire datele structurate n format MARC i avnd funci speciale cu, de pild, un modul de mprumut. Anii 1990 Dup perioada timpului partajat i a anilor micro, iat-ne n era lui multimedia, a interactivitii, a reelelor interconectate i a informaticii de comunicaii", graie unei dezvoltri rapide a reelelor. In 3 ianuarie 1994, din fuziunea dintre Biblioteca Naional i Biblioteca Franei ia natere Biblioteca Naional a Franei, care trece la realizarea unui sistem de informare (SI) foarte ambiios, total integrat, sprijinit pe conceptele tehnice cele mai moderne i care va trebui s devin centrul unei vaste reele naionale. Pe un plan mai general, primii ani ai deceniului '90 arat o tendin de reunificare a activitii bibliotecilor universitare i de cercetare i a bibliotecilor publice : bibliotecile universitare adopt sistemele integrate, folosind astfel aceleai pachete de programe ca bibliotecile publice ; n plus, apare o nou pia : localitile mici i informatizeaz bibliotecile. Supremaia furnizorilor francezi demonstreaz o tendin spre uzur n faa produselor anglosaxone, formatul MARC i sistemul de operare UNIX pe minicalculator se impun, dar ambele cu 5

grade foarte diverse de standardizare. De altfel, pachetele de programe documentare" i cele de bibliotec" arat o tendin evolund spre un tip de pachete de programe unic integrnd gestionarea documentului. In zilele noastre, se afirm tendinele tehnice; sunt de remarcat mai multe mutaii importante n curs de desfurare : o net schimbare de destinaie a sistemelor specifice nspre aplicaii portabile, o tendin de standardizare a sistemelor de gestionare a bazelor de date (SGBD), o remarcabil deschidere ctre sistemele integrate de pe piaa, dezvoltarea rapid a reelelor locale datorat, n parte, unei creteri importante a performanelor modemelor, o tendin nc modest de standardizare a limbajelor de cutare, apariia de baze de date distribuite, programarea orientat pe obiect, utilizarea n cretere, a sistemelor de gestionare a bazelor de date relaionale (SGBDR), indexarea n text integral sau interogarea bazelor de date n limbaj natural. ns, cea mai important tendin i ale crei consecine vor fi foarte puternice n lumea informaticii nu i-a ncheiat nc evoluia : este vorba de modelul client/server.

2.Activitile de proiectare a bazei de date

6

Activitile de proiectare a bazei de date, constituie obiect de studiu pentru doua domenii ale sistemelor informaionale. Este vorba, pe de o parte, de dezvoltarea de aplicaii software, iar pe cealalt parte de un domeniu mai larg care intete mai mult dect la realizarea de aplicaii. Este vorba de analiza si proiectarea sistemelor informaionale. Analiza si proiectarea se ocup, printre altele si cu investigarea tuturor proceselor, operaiunilor si tranzaciilor dintr-o firma sau instituie, cerinele utilizatorilor si perspectivelor organizaionale, astfel incit toate aceste aspecte sa fie luate in calcul in realizarea unui sistem informaional coerent, aliniat misiunii, obiectivelor si politicilor firmei. Cu alte cuvinte analiza si proiectarea pornesc mai din amonte , de la utilizatori, procese, tranzacii economice, ncercnd sa modeleze realitatea sub forma unei largi game de diagrame , scheme, specificaii pe care le vor nainta realizatorilor modulelor de interferenta, prelucrri si date. Una dintre cele mai cunoscute scheme de Planificarea aplicaiilor de lucru cu baze de date realizare a BD sau schema de principiu a ciclului de viaa al aplicaiilor cu BD este cea din ediiile lucrrii lui Thomas Connoly si Carolyn Begg1, prezentata in figura 1.1. Amploarea activitilor din ciclul de viaa a unei BD depinde de anvergura aplicaiei. Cnd sistemul dezvoltat vizeaza un numr redus de utilizatori si se refera la un ansamblu de funcii nu din cale-afara de complex, multe etape sunt srite sau parcurse sumar. Planificarea BDcerinelor Colectarea si analiza Definirea sistemului

presupune, ealonarea pailor ciclului de viaa pentru atingerea unui maxim de eficacitate. Ca si in cazul planificrii software-ului, planificarea BD presupune identificarea si evaluarea activitilor ce trebuie derulate, resurselor necesare derulri activitilor, fondului de timp, specialitilor si banilor disponibili. Planificarea BD trebuie integrata in strategia de ansamblu a Proiectarea conceptuala firmei, unul dintre obiectivele eseniale fiind catalizarea activitilor, politicilor si a strategiei .SGBD Proiectarea BD Proiectarea logica Selectarea aplicaiei Proiectarea

Proiectarea fizica

Definirea sistemului Presupune specificarea domeniului si granielor aplicaiei ce lucreaz cu baza de date,Prototipizarea Implementarea

utilizatorilor, aplicabilitii sale, precum si a celorlalte componente ale sistemului informaional la care se va conecta noul subsistem.ncrcarea si conversia datelor1

. Connolly, T., Begg, C.E., Strachan, A.D., Database Systems. A practical Approach to Design, Implementation andTestarea

Management, Addison-Wesley, Harlow, 1996

7ntreinerea operaionala

Fig. 1.1 Ciclul de viaa al aplicaiilor ce folosesc baze de date Colectarea si analiza cerinelor Aceasta etapa implica adunarea si analiza cerinelor aplicaiilor din partea utilizatorilor. Cerina reprezint o opiune, un element ce trebuie inclus, tratat in noul sistem . Proiectarea BD se bazeaz pe informaii despre organizaii, informaii ce trebuie preluate si gestionate de baza. Acestea pot fi culese in diferite moduri: 8

-

intervievarea personalului din firme, cu precdere a celor mai apropiai, prin

specificul activitii lor, de profilul aplicaiei, avndu-se in vedere acordarea unei atenii mrite experilor in compartimentele funcionale considerate; utilizatori; Utilizarea experienei acumulate la proiectarea unor sisteme similare. Informaia culeasa trebuie sa includ: principalele domenii si grupuri de utilizatori; documentaia utilizata sau generata de si despre aceste domenii de utilizatori; detaliile tranzaciilor reclamate de fiecare domeniu in parte; o lista de cerine, pe prioriti, a fiecrui domeniu . Rezultatul acestei activiti l reprezint specificaiile cerinelor organizaionale, prezentate de obicei , sub forma unui set de documente in care sunt descrise , din diferite unghiuri, operaiile firmei. Proiectarea bazei de date Aceasta include proiectarea logic i fizic a BD. n urma acestei etape va fi elaborat modelul BD care va constitui suportul obiectivelor i operaiunilor organizaiei. Principalele obiective ale proiectrii BD sunt:-

Observarea modului de derulare a operaiilor in cadrul firmei; Examinarea documentelor, in principal a celor purttoare de informaii; Folosirea chestionarelor pentru preluarea de informaiilor de la un numr mare de

reprezentarea datelor i a relaiilor dintre date, formulare pe diferitele zone ale furnizarea unui model al datelor care s permit orice tranzacie autorizat asupra construirea unui proiect care va atinge cerinele de performan ale sistemului,

aplicaiei i ale grupurilor de utilizatori;-

acestora;-

cum ar fi: securitatea, timpul de rspuns etc. Deseori ns, realizarea unui obiectiv se face n detrimentul altuia. Spre exemplu, un nivel ridicat de securitate atrage dup sine scderea vitezei de rspuns. Dup Connoly i Begg2, exist dou abordri majore ale proiectrii BD. Abordarea bottom-up pornete de la nivelul elementar, cel al atributelor, care sunt grupate n clase de entiti i asociaii. Normalizarea este un exemplu tipic de demers bottom-up, care d rezultate2

. Connolly, T., Begg, C.E., Database Systems. A practical Approach to Design, Implementation and Management, editia a III-a

Addison-Wesley, Harlow, 2002

9

bune atunci cnd numrul atributelor nu este prea mare. Cnd numrul de atribute este ridicat, mai nimerit este abordarea top-down care dezvolta mai nti un model sintetic, simplificat al datelor. Cele cteva entiti sunt descompuse ulterior In mai multe etape, pn la identificarea atributelor si entitilor elementare. Modelarea folosind diagrame E-R are la baz abordarea topdown. Selectarea sistemului de gestiune a bazei de date Considerat un pas opional, selectarea SGBD presupune alegerea celui mai adecvat SGBD pentru realizarea si exploatarea aplicaiei. Nu toate SGBD-urile satisfac cerinele aplicaiei, iar pe de alt parte, cele mai performante sunt i cele mai scumpe. Cerinele de funcionalitate trebuie coroborate cu resursele disponibile, n vederea identificrii celui mai adecvat SGBD comercial pentru realizarea si exploatarea aplicaiei. Proiectarea aplicaiei Proiectarea aplicaiei se refer la conceperea secvenelor de cod (instruciuni n limbaje de programare) ce vor lucra cu baza. Din fig.1.1 se observa ca proiectarea BD si proiectarea aplicaiei sunt activiti distincte, paralele ale ciclului de via al aplicaiilor cu BD. n cea mai mare parte a cazurilor, proiectarea aplicaiei nu poate fi finalizat nainte de proiectarea bazei. Pe de alt parte, informaiile proiectrii vor fi transmise proiectrii BD. n aceast etap trebuie verificat dac toate funciile specificate n cerinele utilizatorului se regsesc n proiectul aplicaiei. Proiectarea aplicaiei include i activitatea de proiectare a tranzaciilor. De asemenea, tot acum se elaboreaz i modelul interfeei cu utilizatorul a aplicaiei. Prototipizarea Dei opional, prototipizarea se poate dovedi deosebit de util prin construirea unui model de lucru iniial simplificat, model ce permite dezvoltatorilor i utilizatorilor s testeze i s amelioreze incremental noua aplicaie. Un mare avantaj al prototipizrii este gradul mult mai mare de acceptare a noului sistem la final, acesta fiind dezvoltat mpreun eu utilizatorii ce pot s-i exprime pe parcurs doleanele. Etapele prototipizrii sunt descrise n fig. 1.233

Connolly, T., Begg, C.E., Strachan, A.D., Database Systems. A practical Approach to Design, Implementation and

Management, Addison-Wesley, Harlow, 1996

10

Dezvoltarea modelului de lucru

Abandonarea aplicaiei Implementarea aplicaiei Decizie Redezvoltarea aplicaiei Demararea unui nou prototip

Construirea prototipului

Utilizarea si testarea prototipului

Revizuirea prototipului

Fig. 1.2 Schema de principiu a prototipizrii Implementarea Presupune crearea definiiilor BD la nivelurile conceptual, extern si intern, precum si punerea in lucru a aplicaiei, fiind realizata utiliznd limbajul de definire a datelor (DDL) pus la dispoziie de SGBD-ul selectat. Implementarea aplicaiei se realizeaz intr-un mediu de programare utiliznd un limbaj de tip 3GL sau 4GL. 4GL - fourth-generation programming language - este un limbaj de programare sau mediu de programare proiectat cu un anumit scop, cum ar fi dezvoltarea de software comercial de afaceri. Toate 4GLs sunt concepute pentru a reduce efortul de programare, timpul necesar pentru a dezvolta software-ul, precum i costurile de dezvoltare software4. Conversia i ncrcarea datelor Acest pas este necesar atunci cnd aplicaia dezvoltat nlocuiete o alta. Datele trebuie transferate din vechea aplicaie n cea nou, operaie ce implic de multe ori schimbarea structurii fiierelor, a formatului, logic i fizic, al datelor, n concordan cu cerinele noii aplicaii, dar i ale noului SGBD. Uneori sunt necesare (i posibile) i conversii ale unor programe din vechiul n noul sistem. Majoritatea SGBD-urilor actuale au module de importexport din/n alte SGBD-uri. Conversia aplicaiilor este, n general, mult mai complex atunci cnd se schimb limbajul/mediul de programare.4

http://en.wikipedia.org/wiki/4GL

11

Testarea Testarea este operaiunea sistematic de verificare a funcionalitii sistemului, a gradului de adecvare la cerinele utilizatorilor. Prin testare, aplicaia este lansat n execuie, urmrindu-se depistarea eventualelor erori i ameliorarea unor parametri precum viteza, securitatea etc. Urmnd o metodologie riguroas, msurtorile din cadrul testrii dau posibilitatea evalurii calitii i fiabilitii software-ului. Este de preferat ca utilizatorii aplicaiei s fie pe deplin implicai n procesul testrii, iar aplicaia testat s fie instalat pe un alt sistem dect cel pe care a fost conceput; n orice caz, trebuie avut n vedere i un mecanism de recuperare a datelor corupte n caz de avarie. Exist mai multe strategii de testare a corectitudinii i funcionalitii unei aplicaii de lucru cu BD ce pot fi aplicate individual sau combinate n cadrul aceluiai sistem:-

top-down; bottom-up; fire de execuie; test de stres.

Testarea top-down ncepe de la nivelul superior al funciilor majore ale aplicaiei. Este util n verificarea arhitecturii sistemului, reproiectrile majore fiind semnalate din primele momente ale testrii. Testarea bottom-up ncepe cu modulele elementare i continu pe vertical cu modulele compozite pn la nivelul general al aplicaiei. Testarea firelor de execuie este foarte important n sistemele de prelucrare n timp real, n care sunt rulate simultan o serie de procese ce coopereaz. Acest tip de testare este mult mai complex, fiind legat de detaliile tehnice ale sistemului de operare. Fiecrui proces i se aloc un fir de execuie (thread) care este urmrit de la declanarea sa, acordndu-se o mare importan punctelor de ntlnire cu celelalte fire executate pe sistem. Testul de stres presupune suprasolicitarea bazei i aplicaiilor. Astfel, BD se ncarc automat cu un numr extrem de mare de nregistrri, iar la aplicaie se conecteaz ct mai muli utilizatori. Astfel se depisteaz pn la ce limite rezist aplicaia. ntreinerea operaional Aceast activitate se deruleaz pe toat durata de utilizare a aplicaiei. n afar de monitorizarea BD, a programelor, de curarea" periodic i repararea eventualelor erori 12

hard/soft, tot n aceast activitate sunt ncorporate operaiunile de actualizare a datelor i programelor (ca urmare a unor noi oportuniti tehnologice), modificarea unor parametri (procente TVA, impozite etc.). Monitorizarea performanei sistemului se realizeaz prin raportarea la un nivel prestabilit de acceptare. Dac este cazul, o situare a performanei generale sub acest punct critic poate antrena reorganizarea BD. Altminteri, chiar i n cazul funcionrii n parametri normali, BD trebuie optimizat, avnd n vedere i facilitile oferite de SGBD. ntreinerea i actualizarea aplicaiei sunt necesare n mai mare sau mai mic msur. Spre exemplu, ntr-un mediu economic i legislativ dinamic, cum este cel din ara noastr, deseori este necesar modificarea unor pri importante ale aplicaiei. Uneori, modificarea presupune reluarea unora sau tuturor pailor din ciclul de via al aplicaiei de lucru cu BD.

3. Studiu asupra proiectrii si normalizrii unei baze de dateDescrierea unui model de date se bazeaz, n principal, pe trei elemente: structura - modul n care sunt organizate efectiv datele n baz, integritatea - mecanismul de asigurare a corectitudinii datelor, manipularea - n sensul modificrii i extragerii informaiilor din baz.

Pentru proiectarea bazei de date, ne intereseaz primele dou aspecte, dei, vrndnevrnd, atunci cnd ne vom pune problema implementrii tuturor restriciilor bazei n oricare dintre SGBD-uri, vom recurge copios la opiunile manipulative ale modelului. Modelul relaional s-a conturat n dou articole publicate n 1969 i 1970 de ctre E.F. Codd, matematician la centrul de cercetri din San Jose California, al firmei IBM. In acel moment, tehnologia bazelor de date era centrat pe modelele ierarhic i reea, modele ce depind ntr-o mai mare msur de organizarea intern a datelor pe suportul de stocare. Codd a propus o structur de date tabelar, independent de tipul de echipamente i de software-ul de sistem pe 13

care este implementat,o structur nzestrat" cu o serie de operatori pentru extragerea datelor. Fa de modelele ierarhic i reea, modelul relaional prezint cteva avantaje: su. propune structuri de date uor de utilizat; amelioreaz independena logic i fizic; pune la dispoziia utilizatorilor limbaje neprocedurale; optimizeaz accesul la date; mbuntete integritatea i confidenialitatea datelor; ia in calcul o larg varietate de aplicaii; abordeaz metodologic definirea structurii bazei de date.

Exist o larg tipologie a SGBDR-urilor, aa nct orice categorisire i are riscul Cele mai accesibile i, implicit, cele mai utilizate sunt SGBDR-urile dedicate iniial uzului individual: Access, Paradox, Visual FoxPro. Astzi, multe dintre acestea au caracteristici profesionale i pot fi folosite simultan la dezvoltarea aplicaiilor pentru zeci de utilizatori. Pentru aplicaiile complexe din bnci, corporaii, organizaii i instituii de mari dimensiuni s-au impus SGBDR-urile de categoria grea" : Oracle, DB2 (IBM), Informix (IBM), Sybase (Sybase), SQL Server (Microsoft). Acestea sunt mult mai robuste, mult mai fiabile, dar i costisitoare. n ultimul timp i-au fcut apariia, ca alternative la sus-amintiii coloi, aa-zisele SGBD-uri (aproape) gratuite, precum PostgreSQL, MySQL, mSQL, Firebird etc. Acestea ruleaz, de obicei, pe sisteme de operare de tip Linux (foarte ieftine) i se ntrevd ca adversari serioi ai marilor productori.

3.1 Relaii/tabele, domenii, atribute, valori nule.O baz de date relaional (BDR) poate fi definit ca un ansamblu de relaii (tabele); fiecare tabel, alctuit din linii (tupluri), are un nume unic i este stocat pe suport extern (de obicei disc). La intersecia unei linii cu o coloan se gsete o valoare atomic. O relaie conine informaii omogene legate de anumite entiti, procese, fenomene: CRI, ELEVI, LOCALITI, PERSONAL, FACTURI etc. Spre exemplu, n fig. 4.1este reprezentat tabela STUDENTI ce stocheaz informaii privitoare la studenii nscrii la cursurile unei faculti. relaie/tabela atribute/coloane 14

tuplu Fig. 3.1 Relaia STUDENTI

domenii

n teoria relaional se folosete termenul relaie. Practica ns a consacrat termenul tabel (engl. table). Un tuplu sau o linie este o succesiune de valori de diferite tipuri. n general, o linie grupeaz informaii referitoare la un obiect, eveniment etc., altfel spus, informaii referitoare la o entitate: o carte, un/o student(), o localitate, un angajat al firmei, o factur emis etc. n figur 3.1 este pus n eviden al saselea tuplu din tabela STUDENTI, tuplu referitor la studentul Ionescu Gh Vasile. Linia respectiv este alctuit din opt valori ce desemneaz: Numrul matricol al studentului; numele, iniiala tatlui si prenumele; codul numeric personal; adresa; anul de studiu; serie; grupa; tipul de bursa de care beneficiaz. Teoretic, orice tuplu reprezint o relaie ntre clase de valori (n cazul nostru, ntre opt clase de valori); de aici provine sintagma baze de date relaionale, n sensul matematic al relaiei, de asociere a dou sau mai multe elemente. Firete, toate tuplurile relaiei au acelai format. Ordinea tuplurilor nu prezint importan din punctul de vedere al coninutului informaional al tabelei. Fiecare atribut este caracterizat printr-un nume i un domeniu de valori pe care le poate lua. Domeniul poate fi definit ca ansamblul valorilor acceptate pentru un element component al relaiei5:-

ntr-o tabel destinat datelor generale ale angajailor, pentru atributul Sex, domeniul este alctuit din dou valori: femeiesc i brbtesc; domeniul atributului jude este alctuit din numele fiecrui jude (plus Bucureti);

-

5

Marin Fotache Proiectarea bazelor de date . Normalizarea si postnormalizare. Implementari SQL si Oracle Ed. Polirom 2005

15

-

domeniul unui atribut precum Pre_unitar, care se refer la preul la care a fost vndut un produs/serviciu, este cu mult mai larg, fiind alctuit din orice valoare cuprins ntre 1 i 99999999999 lei (avnd n vedere rata inflaiei).

Reinem corespondena noiunilor relaie-tabel, tuplu-linie i atribul-coloan. Numrul de tabele pe cate le conine o baz de date, atributele adunate" n fiecare tabel, domeniul fiecruia dintre atribute prezint diferene majore de la o baz la alta, chiar dac uneori reflect acelai tip de procese. Intrm astfel n sfera proiectrii bazelor de date, a dependenelor i normalizrii. Principalele caracteristici ale unei relaii sunt: -

n cadrul unei baze de date, o relaie prezint un nume distinct de al celorlalte relaii; valoarea unui atribut ntr-un tuplu oarecare conine a singur valoare (o valoare atomic) fiecare atribut are un nume distinct; orice valoare a unui atribut face parte din domeniul pe care a fost definit acesta; ordinea dispunerii atributelor n relaie nu prezint importan; flecare tuplu este distinct, adic nu pot exista dou tupluri identice; ordinea tuplurilor nu influeneaz coninutul informaional al relaiei.

-

3.2. Restricii ale bazei de date.Principalele restricii definibile n modelul relaional sunt: de domeniu, de nenulitate, de atomicitate, de unicitate, referenial i cele definite de utilizator. Restricia de domeniu. Dup cum am vzut n paragraful anterior, un atribut este definit printr-un nume i un domeniu. Orice valoare a atributului trebuie s se ncadreze n domeniul definit. Exist mai multe moduri de percepie a acestei restricii. O parte din informaticieni substituie domeniul tipului atributului: numeric, ir de caractere, dat calendaristic, logic (boolean) etc, i, eventual, lungimii (numrul maxim de poziii/ caractere pe care se poate ntinde" un atribut). Dup cum 16

se observ, este luat n calcul numai aspectul sintactic al domeniului. Faptul ca anul de studiu al unei clase poate fii una dintre valorile 9, 10, 11, 12 reprezint o restricie de comportament sau mai simplu o restricie definita de utilizator. Cea de-a doua categorie privete deopotriv domeniile sintactic i semantic. Astfel, domeniul sintactic al atributului LitClasa (litera) dintr-o relaie precum ELEVI_LICEU este un caracter, obligatoriu liter, i chiar mai restrictiv, litera e obligatoriu majuscul. Din punct de vedere semantic, LitClasa poate lua una dintre valorile: A, B, C,..., n funcie de numrul de clase dintr-un an de studiu (cinci clase de a IX-a, patru de a X-a etc.). Nenulitatea. Dei inventat de nsui E.F. Codd, valoarea nul este vehement contestat de cea mai mare parte a liniei purist-relaionale (Date, Darwen6, Pascal). Nu discutm legitimitatea unei asemenea meta-valori, ci doar amintim c, ntr-o baz de date, unora dintre atribute li se poate interzice valoarea NULL. Atomicitate. Conform teoriei bazelor de date relaionale, orice atribut al unei tabele oarecare trebuie s fie atomic, n sensul imposibilitii descompunerii sale n alte atribute. n aceste condiii, se spune c baza de date se afl n prima form normal sau prima form normalizat (1NF). n tabela STUDENI un atribut cu valori neatomice poate fi considerat, pentru majoritatea situaiilor, Adresa, ntruct valorile sale ngrmdesc elemente ce pot fi i individualizate: strada, numr, bloc, scara, etaj, apartament, localitate i jude. Unicitate. ntr-o relaie nu pot exista dou linii identice (dou linii care prezint aceleai valori pentru toate atributele). Mai mult, majoritatea relaiilor prezint un atribut sau o combinaie de atribute care difereniaz cu siguran un tuplu de toate celelalte tupluri ale relaiei. Cheia primar a unei relaii (tabele) este un atribut sau un grup de atribute care identific fr ambiguitate fiecare tuplu (linie) al relaiei (tabelei). Exist trei restricii pe care trebuie s le verifice cheia primar : 6

unicitate: o cheie identific un singur tuplu (linie) al relaiei;

Date, C.J., Darwen, H.,Foundation for Database Systems. The Third Manifesto, editia a II-a, Addison-Wesley, Reading,

Massachusetts, 2000

17

-

compoziie minimala: atunci cnd cheia primar este compus, nici un atribut din cheie nu poate fi eliminat fr distrugerea unicitii tuplului n cadrul relaiei; n cazuri limit, o cheie poate fi alctuit din toate atributele relaiei;

-

valori nenule : valorile atributului (sau ale ansamblului de atribute) ce desemneaz cheia primar sunt ntotdeauna specificate, deci nenule; mai mult, nici un atribut din compoziia cheii primare nu poate avea valori nule. Cea dea treia condiie se mai numete i restricie a entitii.

Domeniul unui atribut care este cheie primar ntr-o relaie este denumit domeniu primar. Dac ntr-o relaie exist mai multe combinaii de atribute care confer unicitate tuplului, acestea sunt denumite chei candidate. O cheie candidat care nu este identificator primar este referit ca cheie alternativ. n tabela STUDENI exist dou chei candidate, Matricol i CNP. Am ales Matricol drept cheie primar, CNP-ul devenind cheie alternativ. Dac cheia primar a tabelei STUDENI este una simpl, exist ns suficiente cazuri n care cheia primar este compus din dou, trei sau, la extrem, toate atributele relaiei. S lum spre analiz o relaie PERSONAL care conine date generale despre angajaii firmei. Fiecare tuplu al relaiei se refer la un angajat, atributele fiind : Nume, Prenume, DataNaterii, Vechime, SalariuTarifar. Atributul Nume nu poate fi cheie, deoarece chiar i ntr-o ntreprindere de talie mijlocie este posibil s existe doi angajai cu acelai nume. Dac apariia a dou persoane cu nume identice este posibil, atunci apariia a dou persoane cu acelai Prenume este probabil. Nici unul dintre atributele Data Naterii, Vechime i Salariu Tarifar nu poate fi nzestrat" cu funcia de identificator. In acest caz, se ncearc gruparea a dou, trei, patru atribute, pn cnd se obine combinaia care va permite diferenierea clar a oricrei linii de toate celelalte. Combinaia Nume+Adres pare, la prima vedere, a ndeplini cerinele" de identificator. Ar fi totui o problem: dac n aceeai firm (organizaie) lucreaz mpreun soul i soia? Ambii au, de obicei, acelai nume de familie i, tot de obicei, acelai domiciliu. Este adevrat, cazul ales nu este prea fericit. Dar este suficient pentru compromiterea combinaiei. Urmtoarea tentativ este grupul Nume + Prenume + Adres, combinaie neoperant dac n organizaie lucreaz tatl i un fiu (sau mama i o fiic), avnd aceleai nume i prenume i domiciliul comun. 18

Ar rmne de ales una dintre soluiile (Nume + Prenume +Adres+Vechime) sau (Nume + Prenume + Adresa + DataNasterii). Oricare dintre cele dou combinaii prezint riscul violrii restriciei de entitate, deoarece este posibil ca, la preluarea unui angajat n baz, s nu i se cunoasc adresa sau data naterii, caz n care atributul respectiv ar avea valoarea NULL. Dificultile de identificare fr ambiguitate a angajailor au determinat firmele ca, la angajare, s aloce fiecrei persoane un numr unic, numr denumit Marca. Prin adugarea acestui atribut la cele existente, pentru relaia PERSONAL, problema cheii primare este rezolvat mult mai simplu. Actualmente, sarcina este simplificat i prin utilizarea codului numeric personal (CNP), combinaie de 13 cifre care prezint avantajul c rmne neschimbat pe tot parcursul vieii persoanei.

Restricia referenial O baz de date relaional este alctuit din relaii (tabele) aflate n legtur. Stabilirea legturii se bazeaz pe mecanismul cheii strine i, implicit, al restriciei refereniale. De exemplu, avem o relaie n care sunt implicate tabelele TIP_BURSE (Tip_bursa, Den_bursa, Cuantum_bursa) i STUDENI ( Matricol, Nume_pren, CNP, Adresa, An_studiu, Seriem Grupa, Tip_bursa ). Atributul Tip_Bursa joac un rol de agent de legtur" ntre cele dou relaii. Pentru tabela TIP_BURSE, atributul Tip_bursa este cheie primar, n timp ce n tabela STUDENI, Tip_bursa reprezint o coloan de referin sau cheie strin (extern), deoarece numai pe baza valorilor sale se poate face legtura cu relaia-printe TIP_BURSE. Cheile strine sau coloanele de referin sunt deci atribute sau combinaii de atribute care pun n legtur linii (tupluri) din relaii diferite. Tabela n care atributul de legtur este primar se numete tabelprinte (n cazul nostru, TIP_BURSE), iar cealalt, tabel-copil. Legat de noiunea de cheie strin apare conceptul de restricie referenial. O restricie de integritate referenial apare atunci cnd o relaie face referin la o alt relaie. Cnd dou tabele (relaii), T1 i T2, prezint atributul sau grupul de atribute notatCH,

care pentru T1 esteCH

cheie primar, iar pentru T2, cheie strin, daca n T2 se interzice apariia de valori nenule ale referenial.

care nu exist n nici un tuplu din TI, se spune ca ntre T2 i TI s-a instituit o restricie Instituirea restriciei refereniale ntre tabelele TIP_BURSE (printe) i STUDENI (copil) permite cunoaterea, pentru fiecare student, a denumirii bursei i a cuantumului lunar. 19

Restricii-utilizator. Restriciile-utilizator mai sunt denumite i restricii de comportament sau restricii ale organizaiei. De obicei, aceste restricii iau forma unor reguli de validare la nivel de atribut, la nivel de linie sau de tabel sau a unor reguli implementate prin declanatoare(triggers). Spre exemplu, se poate institui o regul care interzice emiterea unei noi facturi (o nou vnzare) dac datoriile firmei client sunt mai mari de 2.000.000.000 lei, iar directorul acesteia nu este membru n partidul/partidele de guvernmnt.

3.3. NormalizareaProiectarea bazelor de date relaionale (BDR) presupune definirea atributelor, gruparea lor n tabele, stabilirea legturilor dintre ele, a mecanismelor de integritate i securitate, fiind un proces dificil n care cunotinele teoretice, experiena, inteligena, intuiia i creativitatea proiectanilor se mbin ntr-un mod mai mult sau mai puin armonios. Structura final a BD trebuie s asigure un echilibru ntre, obinerea unui volum maxim de informaii ntr-un interval de timp ct mai scurt i, eliminarea anomaliilor de stocare i actualizare, toate n condiiile unui grad apreciabil de securitate i integritate. Elaborarea schemei unei BD poate ncepe cu gruparea tuturor atributelor bazei de date ntr-o singur tabel (relaie universal). Dincolo de avantajul compactitii, lucrul cu o singur relaie atotcuprinztoare ridic serioase probleme privind redundana datelor i genereaz anomalii importante la adugarea, modificarea sau tergerea unor linii (tupluri). Ca o consecin direct, este necesar spargerea bazei n mai multe tabele care s fie legate prin restricii de integritate referenial. Este tocmai obiectivul central al normalizrii. Spargerea relaiei nu trebuie fcut oricum, deoarece apare riscul pierderilor de informaii. De asemenea, un numr prea mare de tabele necesit un efort sporit pentru controlul bazei i respectarea restriciilor. In plus, trebuie s inem seama de faptul c obinerea multor informaii dintr-o baz de date fragmentat este posibil prin operaiunea de jonciune, mare consumatoare de resurse. 20

Principalele obiective ale normalizrii sunt : -

minimizarea spaialului necesar stocrii datelor; minimizarea riscului apariiei de date inconsistente n cadrul BD; minimizarea anomaliilor ce pot aprea la actualizare (inserarea datelor, dar mai ales modificri i tergeri); ameliorarea structurii bazei, reprezentarea diverselor conexiuni dintre atributele bazei; diminuarea nevoii de reorganizare periodic a modelului.

-

Codd, printele modelului relaional, a definit iniial trei forme normale, notate prin 1NF, 2NF i 3NF. ntruct, ntr-o prim formulare, definiia 3NF ridica ceva probleme, Codd i Boyce au elaborat o nou variant, cunoscut sub numele Boyce-Codd Normal Form (BCNF). Dei este vorba, n principiu, despre o formulare mai riguroas a aceleiai 3FN, BCNF este prezentat separat n majoritatea lucrrilor. Formele 4 i 5, legate de numele lui Ronald Fagin, sunt tratate mai cu reinere, n literatura consacrat analizei i proiectrii bazelor de date. Ba chiar unele lucrri cu tent mai pragmatic se opresc declarat la 3FN, pe care o consider suficient n elaborarea BDR. Etapele normalizrii Fundamentul normalizrii BDR l constituie dependenele dintre atribute. Primele trei forme normale pot fi determinate pe baza dependenelor funcionale elementare (totale) i tranzitive. Forma a patra (4FN) se bazeaz pe dependenele multivaloare, n timp ce a cincea form normal (5FN) - pe dependenele de jonciune. Problema este c dependenele multivaloare i mai ales cele de jonciune sunt dificil de identificat i rar ntlnite n practic. Normalizarea BDR poate fi imaginat ca un proces prin care, pornindu-se de la relaia iniial R (universal), se realizeaz descompunerea succesiv a acesteia n subrelaii, dup succesiunea din Fig 4.27. Relaia R poate fi ulterior reconstruit din cele n relaii obinute n urma normalizrii, prin operaii de jonciune aplicate asupra acestora. Normalizarea reflect relaii care se manifest ntre atribute ale bazei. Este imposibil de normalizat o relaie fr a cunoate fenomenul, procesul pe care l reflect.

7

Oprea, D., Analiza sistemelor informationale, Editura Polirom, Iasi, 1999

21

Descompunere fr pierdere de informaii Prin normalizare se ncearc a se elimina redundane i anomalii manifestate la actualizare. Eliminarea se realizeaz prin sfrmarea" relaiei n dou sau mai multe relaii legate" prin restricii de integritate referenial. Ulterior, prin operaiuni de jonciune, tabela nceput iniial poate fi recompus, ori de cte ori va fi cazul.universala - R Relaie Cu ct desfacem" relaia iniial (universal) n mai multe tabele, cu att redundanaExista evocate. Exist ns o limit, deoarece la datelor este mai redus si implicit, anomaliile grupuri repetitive ? Atomizarea atributelor descompunere trebuie avut n vedere pstrarea unor structuri care s permit, ulterior, obinerea

informaiilor necesare prin operaiuni de jonciune (apare noiunea de jonciune conservativ).Relaia R are cheie primara? Descompunere in relaii ce au cheie primara

NU1FN Exista DF pariale ?

DA

NU2FN

DA

Aducerea relaiilor in 2FN

Exista DF tranzitive ?

NU

DA

Aducerea relaiilor in 3FN

3FN

NUAducerea relaiilor in BCFN

Toi determinanii sunt chei candidate ?

DA

BCNF

NU

Exista DF multivaloare?

DAAducerea relaiilor in 4FN

4FN Exista dependene de jonciune?

NU

DAAducerea relaiilor in 5FN

22

5FN Sfrit

NU

DA

Fig. 3.2 Etapele clasice ale normalizrii bazelor de date relaionale Relaia universal Prima etap a normalizrii const n identificarea informaiilor ce trebuie stocate i gestionate cu ajutorul bazei de date. Noiunea de relaie universal este unul dintre destulele ingrediente ale modelului relaional. Noi o s considerm relaia universal drept relaia alctuit din toate atributele identificate ca fiind relevante pentru aplicaie i toate tuplurile posibile cu valorile acestor atribute. Prin urmare, schema relaiei universale trebuie sa conin toate atributele bazei de date.

3.4. Prima form normalizat 1NFPrima form normalizat (1NF) este, n general, tratat cu superficialitate de majoritatea practicienilor n materie de proiectare a bazelor de date. Aceasta deoarece principala cerin atomicitatea valorilor - este un deziderat uor de ndeplinit, cel puin la prima vedere. Cele mai sensibile chestiuni n aducerea relaiilor n INF sunt legate de atomicitate, eliminarea grupurilor repetitive, precum i de stabilirea cheii primare, care devine o problem delicat atunci cnd se pornete de la o relaie cu zeci sau sute de atribute. Definiii ale primei forme normalizate Dup Codd, o relaie este n prima form normal dac [...] nici unul dintre domeniile sale nu conine elemente care sunt, la rndul lor, seturi (ansambluri)8.Se cuvine de adugat

8

Codd,E.F.Further Normalization of the Database Relational Model, Database Systems, Courant Computer Science Symposia

Series, vol.6, Englewood Cliffs, N.J., Prentice Hall, 1972.

23

remarca lui Date care crede c ar fi fost mai nimerit ca, n locul termenului domenii, Codd s-1 fi folosit pe cel de atribute. Unele lucrri definesc o relaie aflat n 1NF ca acea relaie n care fiecare atribut prezint numai valori atomice, adic toate atributele sunt nedecompozabile; dup R. Riordan, o relaie este n INF dac domeniile pe care sunt definite atributele relaiei sunt scalare9. n ediia a treia a crii dedicate sistemelor de baze de date, Connoly i Begg sunt mai tranani: o relaie n 1NF este o relaie n care intersecia oricrei linii cu oricare coloan conine o valoare si numai una.10 Astfel, 1NF respinge ideea de set de valori, tuplu de valori sau combinaia acestora ca valoare a unui singur atribut pe un oricare tuplu (linie) a relaiei. Formularea care a generat cele mai multe confuzii este legat de noiunea de grupuri repetitive: o relaie n 1NF nu trebuie s conin grupuri repetitive. De obicei, noiunea de grup repetitiv este raportat direct la cea de atomicitate. O relaie este n 1 NF dac domeniile pe care sunt definite atributele relaiei sunt constituite numai din valori atomice (elementare), n plus, un tuplu nu trebuie s conin atribute sau grupuri de atribute repetitiveDefiniia lui Toby Teorey, spune ca o relaie este n 1NF dac i numai dac toate

coloanele conin numai valori atomice; aceasta nseamn c nu exist grupuri (coloane) repetitive n cadrul vreunei linii a tabelei. Imediat autoarea precizeaz c un grup repetitiv apare ntr-o tabel atunci cnd unui atribut multi-valoare i sunt permise dou sau mai multe valori reprezentate n cadrul unei aceleiai linii.11 Aducerea unei relaii n INF presupune discutarea urmtoarelor elemente: raportul atribut simplu/atribut compus; grupuri repetitive de atribute (pe orizontal); grupuri repetitive de valori n cadrul fiecrei celule a tabelei.

Atribute simple i atribute compuse Primele vizate de stigmatul" neatomicitii sunt atributele compuse.Un exemplu celebru privind atribute compuse (non-atomice) este Adresa. Fiind alctuit din Strad, Numr, Bloc,9

Riordan, R., Designing Relational Database Systems, Microsoft Press, 1999 Connolly, T., Begg, C.E., Database Systems. A practical Approach to Design, Implementation and Management, editia a III-a

10

Addison-Wesley, Harlow, 200211

Teorey, T.J., Database Modeling & Design, Morgan Kaufman, San Francisco, 1999

24

Scar, Etaj, Apartament, plus CodPotal (dup noul sistem de codificare), discuia despre atomicitatea adresei pare de prisos, iar descompunerea sa imperativ. Din nou ns trebuie s ne raportm la obiectivele bazei. Fr ndoial c, pentru BD a unei filiale CONEL sau ROMTELECOM, sau pentru Poliie, preluarea separat a fiecrui element constituent al adresei este vital. Intereseaz, spre exemplu, ce abonai sunt pe strada Tranziiei sau cte cereri sunt depuse de cetenii de pe strzile Lascr Catargi, Titu Maiorescu si Marina Scupra. Alte exemple de atribute ce pot fi considerate, n funcie de circumstane, simple sau compuse: trei litere). Despre grupuri repetitive i urmrile lor O relaie (tabel) n 1NF nu trebuie s conin atribute care se repet ca grupuri. Intr-o alt formulare, toate liniile unei tabele trebuie s conin acelai numr de atribute. Fiecare celul a tabelei, altfel spus, valoarea unui atribut pe o linie, trebuie sa fie atomic. Un grup repetitiv este un atribut sau grup de atribute dintr-o tabel care apare cu valori multiple pentru o singur apariie a cheii primare a tabelei nenormalizate. S lum exemplul tabelei BIBLIOTEC_1 din Fig.3.3. Tabela gestioneaz informaii despre crile existente n depozitul bibliotecii UTM Pitesti. De remarcat c n bibliotec exist dou exemplare ale crii cu ISBN-ul 973-683-709-2 i trei exemplare de cea dedicat Visual FoxPro. Prima carte a fost scris de patru autori i ei i sunt asociate opt cuvinte-cheie, iar a doua are un singur autor. Relaia nenormalizat conine trei grupuri repetitive: Cote, Autori i CuvinteCheie.BIBLIOTECA ISBN973-683-889-7 973-683-709-2

DataOperaiuniiBancare

(Data+Ora),

BuletiIldentitate

(Seria+Numr),

NrnmatriculareAuto (privit global, sau pe cele trei componente : jude, numr i combinaia de

TitluVisual Fox Pro. Ghidul dezvoltarii aplicatiilor profesionale SQL. Dialecte DB2, Oraclesi Visual FoxPro

CotaIII-13421, III-13422, III-13423 III- 10678, III-10679

AutoriMarin Fotache, Ioan Brava, Catalin Strambei,Liviu Cretu Marin Fotache

EdituraPolirom Polirom

LocSediuEdIasi Iasi

AnAparitie2002 2001

CuvinteCheiebaze de date,SQL, proceduri stocate, Fox Pro, formulare, orientare pe obiect , client-server, Web baze de date, algebra relationala, SQL

Fig. 3.3. Relatia Biblioteca_1 25

Una dintre cele mai nerecomandate soluii pentru eliminarea grupurilor repetitive ine de extinderea pe orizontal a tabelelor, prin duplicarea forat a unor atribute. Pentru a nltura grupurile repetitive de pe primele dou linii, putem fi tentai s modificm structura tabelei, ca in urmatoarea structura : Biblioteca_2 ( ISBN, Titlu, Cota1, Cota2, Cota3, Autor1, Autor2, Autor3, Autor4, Editura, LocSediuEd, AnAparitie, CuvantCheie1, CuvantCheie2, CuvantCheie3, CuvantCheie4, CuvantCheie5, CuvantCheie6, CuvantCheie7) Dei tabela se afl n prima form normal, structura acesteia este hilar. Ar trebui s rezervm" cteva zeci de atribute pentru cotele crilor, alt serie de atribute pentru autori, ca s nu mai vorbim de cuvintele-cheie. Dei hilar, schema de mai sus nu violeaz conceptul de atomicitate, oricare ar fi formularea acestuia. Eliminarea grupurilor repetitive prin adugarea de tupluri A doua variant pstreaz structura relaiei, n sensul c nu se modific numrul de atribute, adugndu-se tupluri (linii) suplimentare astfel nct orice valoare a celor trei atribute de tipul grupuri repetitive" s devin atomic. Apare ns problema: cum anume completm tuplurile pentru ca s fie preluate toate informaiile, iar, pe de alt parte, eventualele actualizri s nu antreneze pierderi sau alterri de informaii. n acest sens, am putea lua n discuie trei soluii, dup cum urmeaz: Numr minim de linii - o singur valoare atomic pentru flecare atribut compozit. Avem trei atribute non-atomice (multivaloare), pentru fiecare carte, numrul de linii din tabel va fi maximul dintre numrul cotelor, numrul autorilor i numrul cuvintelor-cheie. Astfel, pentru Visual FoxPro sunt trei cote, patru autori i opt cuvinte-cheie; aadar, vom avea opt linii. Valorile cotelor n liniile 4-8 vor fi NULL; la fel i valorile atribului Autor pentru liniile 5-8. Deoarece o cot nu poate identifica dect o singur carte, cheia primar a noii relaii este alctuit din trei atribute (Cot. Autor, Cuvntcheie). Redundana datelor este evident. Dac pentru cartea de Visual FoxPro am dori s mai introducem un nou cuvnt-cheie, ar trebui inserat o linie nou n tabel, n care valorile atributelor Autor i Cot s fie NULL. Aceasta nu este ns singura problem. S presupunem c sintagma proceduri stocate este greit asociat crii de Visual FoxPro. n mod normal, corectarea acestei greeli presupune tergerea celui de-al treilea tuplu: 26

DELETE FROM BIBLIOTEC_2 WHERE ISBN - '97 3-683-8 8 9-7' AND cuvntcheie = 'proceduri stocate') Necazul e c tergerea liniei se face cu dou pierderi de informaii. Prima pierdere ine de calitatea de coautor ai acestei cri a lui Ctlin Strmbei, iar a doua este legat de exemplarul crii ce are cota III-13423. Aceasta deoarece tuplul ters era singurul care se referea la autorul i la cota cu pricina. Am putea ncerca un artificiu, i anume ca tergerea unui cuvnt-cheie, a unui autor ori a unei cote s nu se fac prin tergerea liniei respective, ci prin setarea pe NULL a valorii de pe linia incriminat: UPDATE BIBLIOTEC _2 SET cuvntcheie = NULL WHERE ISBN = '97 3-68 3-8 8 9-7' AND cuvntcheie = ('proceduri stocate') Nici aceast idee nu e din cale-afar de inteligent. Dac am dori eliminarea sintagmei Web pentru aceeai carte: UPDATE BIBLIOTEC_2 SET cuvntcheie = NULL WHERE ISBN - '97 3-683-68 9-7' AND cuvntcheie = 'Web') atunci linia modificat devine cu totul de prisos n tabel, toate cele trei atribute, cota, Autor i cuvntcheie, avnd valori NULL. Cu alte cuvinte, dup modificare, tuplul nu spune nimic, nu are valoare informaional. Practic, dup fiecare NULL-izare pe o linie a unuia dintre cele trei atribute, trebuie verificat dac pe linia respectiv celelalte dou atribute au valori NULL, caz n care linia se poate terge. Mai exist o problem i din punct de vedere al coninutului informaional. S presupunem c ne intereseaz s aflm care sunt autorii ce au scris despre SQL. innd seama de stuctura relaiei de mai sus, am fi tentai s folosim o selecie dup cuvntul-cheie SQL, urmat de o proiecie a valorilor atributului Autor : SELECT autor FROM BIBLIOTEC_2 WHERE cuvntcheie = ( 'SQL')

27

Rezultatul furnizat este alctuit din dou linii, una ce conine valoarea Ioan Brava, iar cealalt valoarea NULL. Lipsesc deci ceilali trei autori ai crii despre Visual FoxPro, dintre care unul a scris chiar o carte despre SQL. Interogarea ce furnizeaz rspunsul corect trebuie s foloseasc o jonciune sau corelare dup atributul ISBN. Prin urmare, este necesar de tiut c structura informaional pe care o reprezint tabela de mai sus are o serie de neajunsuri. Cel mai bine ntemeiat motiv de renunare la aceast variant este prezena valorilor nule n componena atributelor chei primare. Numr de linii egal cu suma valorilor elementare ale atributelor de tip grup repetitiv. A doua soluie de completare are n vedere eliminarea problemei care apare la tergerea unei linii n cazul soluiei precedente, i anume: pe oricare linie, o valoare nenul a unuia dintre cele trei atribute atrage dup sine nulitatea celorlalte dou. Spre exemplu, prima carte are 3 cote, 4 autori i 8 cuvinte-cheie; prin urmare, vor fi necesare 3 + 4 + 8 = 15 linii. Aceast secund soluie, dei presupune un numr mai mare de linii, elimin necazul pierderii involuntare de informaii. Astfel, tergerea unui cuvnt-cheie nu va afecta, cu siguran, nici un autor sau exemplar al crii respective. Ca i n cazul soluiei anterioare, indezirabilitatea variantei este legat de prezena valorilor nule n componena atributelor chei primare. Numr maxim de linii, egal cu produsul valorilor elementare ale atributelor de tip grup repetitiv. De data aceasta, tiem valorile nule de la rdcin, introducnd n relaie toate combinaiile Autor-Cota-CuvntCheie. Cum prima carte are 3 cote, 4 autori i 8 cuvinte-cheie, n relaia BIBLIOTEC_3 vor exista 3 * 4 * 8 = 96 de tupluri referitoare la aceasta. Aducerea relaiei n 1NF eliminnd grupurile repetitive prin adugarea de noi tupluri de aceast manier se dovedete mai mult dect costisitoare. Aceasta nu numai din punctul de vedere al spaiului excesiv consumat din pricina redundanei masive, dar i dac ne gndim la anomaliile de actualizare. Spre exemplu, pentru a nu pierde informaii, atunci cnd adugm un cuvnt-cheie nou pentru cartea luat spre analiz, e nevoie s inserm n tabel nu mai puin de 3 (cote) * 4 (autori) = 12 Unii. Dezvoltnd aceast idee optimist, imaginai-v cum stau lucrurile

28

pentru o lucrare monumental cu 10 autori i 78 de cuvinte-cheie din care n bibliotec exist 40 de exemplare !?!?!

Eliminarea grupurilor repetitive prin construirea de noi relaii. Consta n ruperea" din relaia universal a grupurilor i constituirea de relaii noi. Spre exemplu, pentru aducerea unei relaii n 1NF parcurgem patru pai: n relaia universal, n locul atributelor compuse se trec componentele acestora, ca atribute simple; se constituie cate o relaie pentru fiecare grup repetitiv; in schema fiecrei noi relaii obinute la pasul doi se introduce si cheia primara a relaiei nenormalizate; cheia primara a fiecrei noi relaii va fii compusa din atributele/atributele chei ale relaiei plus unul sau mai multe atribute proprii. Aplicand acest algoritm la relatia Biblioteca_1 , obtinem patru tabele : Cote ( ISBN, Cota), Autori_Carti (ISBN, Autor) , Carti_Cuvcheie (ISBN, Cuvantcheie) , Carti(ISBN, Titlu, Editura, LocSediuEd, AnAparitie). Structura obinut se detaeaz prin cel mai mic volum de redundan de pn acum, ceea ce antreneaz i economii de stocare, i reducerea sensibil a anomaliilor de actualizare. Personal ns, reproez acestui stil de normalizare bazat pe eliminarea grupurilor repetitive caracterul prea ochiometric". Observarea grupurilor repetitive depinde decisiv de ordinea n care sunt dispuse atributele n relaie (teoria relaional prevede clar c nici ordinea coloanelor, nici cea a liniilor nu influeneaz coninutul informaional al unei tabele). S discutm relaia BIBLIOTEC_4, ce are aceeai structur ca BIBLIOTEC_1, dar ordinea atributelor este schimbat - vezi figura 3.4. Tabela BIBLIOTEC_4 este mai aproape de realitate dect BIBLIOTEC_1. n depozit sunt trei exemplare ale crii dedicate Visual FoxPro, acestora corespunznd cu trei tupluri nBIBLIOTECA_4 Cota III-13421 III-13422

ISBN 973-683-889-7 973-683-889-7

Titlu Visual Fox Pro. Ghidul dezvoltarii aplicatiilor profesionale Visual Fox Pro. Ghidul dezvoltarii aplicatiilor profesionale

Autori Marin Fotache, Ioan Brava, Catalin Strambei,Liviu Cretu Marin Fotache, Ioan Brava, Catalin Strambei,Liviu Cretu

29

III-13423 III- 10678 III-10679 Editura Polirom Polirom Polirom Polirom Polirom

973-683-889-7 973-683-709-2 973-683-709-2 LocSediuEd Iasi Iasi Iasi Iasi Iasi

Visual Fox Pro. Ghidul dezvoltarii aplicatiilor profesionale SQL. Dialecte DB2, Oraclesi Visual FoxPro SQL. Dialecte DB2, Oraclesi Visual FoxPro AnAparitie 2002 2002 2002 2001 2001

Marin Fotache, Ioan Brava, Catalin Strambei,Liviu Cretu Marin Fotache Marin Fotache

CuvinteCheie baze de date,SQL, proceduri stocate, Fox Pro, formulare, orientare pe obiect , client-server, Web baze de date,SQL, proceduri stocate, Fox Pro, formulare, orientare pe obiect , client-server, Web baze de date,SQL, proceduri stocate, Fox Pro, formulare, orientare pe obiect , client-server, Web baze de date, algebra relationala, SQL baze de date, algebra relationala, SQL

Fig. 3.4. Relaia Biblioteca_4 noua relaie. Cheia primar este Cot (observai c ISBN se repet pe primele trei linii i pe ultimele dou). Dup calapodul aplicat ceva mai sus, exist dou grupuri repetitive, Autori i Cuvintecheie. Drept care ne grbim s descompunem relaia universal in trei relaii aflate in 1NF, dupa cum urmeaza:-

Cote_Autori (Cota, Autori ), Cote_Cuvcheie (Cota, Cuvantcheie), Carti (Cota, ISBN, Titlu, Editura, LocSediuEd, AnAparitie).

Aceasta reprezentand prima forma normalizata a relatiei Biblioteca_4. Pentru remedierea problemelor cauzate de caracterul arbitrar al dispunerii atributelor n relaie, am putea institui o regul: se ncepe cu atributele cele mai generale (non-repetitive") i se continu apoi ctre cele mai repetitive". n cazul relaiei BIBLIOTEC, s-ar putea ncepe cu, ISBN-ul continund cu Titlu, Editur, LocSediuEd, AnApariie, apoi Autori i CuvinteCheie. Prima form normal i problema cheii primare a relaiei universale. De cele mai multe ori, constituirea unei relaii universale atotcuprinztoare se lovete de o problem major - cea a cheii primare. Modelul relaional prezint dou restricii eseniale vizavi de cheia primar: unicitate i valori nenule pentru atributele din alctuirea cheii (restricia de entitate). 30

Dac dorim s identificm fiecare linie a relaiei, trebuie s definim, n cele mai multe situaii, o cheie primar cu mai multe atribute, care ns n anumite tupluri ar avea valori nule. Pe de alt parte, dac nu vrem s fie violat restricia de entitate, trebuie s renunm la a prelua n relaia universal linii vitale din punctul de vedere al coninutului informaional al bazei de date. Sa luam exemplu relaia Biblioteca_4. Sa studiem toate atributele si sa vedem care ar putea sa fie cheie primara pentru aceasta relaie. CuvinteCheie nu ar putea sa fie cheie primara deoarece nu ndeplinete conditia de unicitate a cheii, se tot repeta pentru carti care studiaza aceleasi probleme ( VisualFoxPro. Ghidul dezvoltarii aplicatiilor profesionale si SQL. Dialecte DB2, Oracle si Vizual FoxPro au cuvinte cheie care se repeta : baze de date, SQL). Deci nu ne defineste tuplul ca fiind unic. AnAparitie, in nici un caz nu poate sa indeplineasca conditiile , pentru ca intr-un an se scot foarte multe cari pe piaa. In aceiai situaie se afla si LocSediuEd, Editura. Autorii , pot scoate pe piaa mai multe cri, atributul Autori , nu ndeplinete condiia de unicitate. Titlu, ar putea sa fie cheie candidata pentru o carte , dar sa nu uitam ca intr-o biblioteca nu se gsesc numai cate un exemplar dintr-un anumit titlu de carte si mai sunt si reeditrile, care la rndul lor se pot suprapune peste prima ediie apruta pe pia. ISBN, este intr-adevr o cheie candidata la cheia primara, nu poate avea valori nule, este unic pentru un anumit titlu de carte, scos intr-o ediie dar se tipresc mai multe exemplare din acelai titlu. Deci, nici atributul ISBN nu poate fii cheie primara in aceasta relaie. Cota, un ansamblu de semne, simboluri , cifre, litere care indic locul unor cri, al unor documente ntr-o bibliotec, ntr-un inventar12. Acest atribut ndeplinete condiia de unicitate a cheii si nu poate lua valori nenule. Ea definete un singur tuplu din tabelul nostru. Este cheie primara , unica.

3.5. A doua forma normalizata 2NFCea de-a doua form normal (2NF) se bazeaz pe dependenele funcionale totale sau elementare. Dependente funcionale Problema stabilirii dependenelor dintre atribute este fundamental n procesul elaborrii bazelor de date relaionale. Aducerea structurii bazei ntr-o variant care minimizeaz12

http://www.webdex.ro/online/dictionar/cot%C4%83

31

redundanele i anomaliile manifestate la adugarea/modificarea/tergerea unor linii din tabele presupune parcurgerea unui proces de normalizare a relaiilor, normalizare care este centrat tocmai pe conceptul de dependen ntre atributele bazei. Definiie Dependena funcional reprezint o generalizare a conceptului de cheie primar. Desemnm prin Data2 un atribut sau o combinaie de atribute dintr-o relaie oarecare i prin Data1 un alt atribut sau grup de atribute din aceeai relaie. Se spune c Data2 este n dependen funcional (sau depinde funcional) de Data1 atunci cnd cunoaterea unei valori pentru Data1 permite determinarea (cunoaterea) a maximum o valoare pentru Data2. Data1 se numete sursa sau determinantul dependenei funcionale, iar Data2 reprezint destinaia (scopul sau determinatul) dependenei funcionale. Formal, dac notm relaia R {A1 A2,, An} - unde R este numele relaiei i Ai sunt atributele relaiei R - i prin X i Y dou subansambluri din {A1 A2,...,An}, se spune c exist o dependen funcional ntre X i Y (simbolizat X->Y) dac i numai dac: fiecare apariie (valoare) a lui X poate fi asociat unei singure apariii a lui Y ; dou apariii identice ale lui X nu pot fi asociate dect aceleiai apariii a lui Y. Dependenele funcionale reprezint legturi semantice ntre atribute ale bazei de date. Dependene funcionale cu sursa compus Exist dependene funcionale care prezint n partea stng (sursa dependenei funcionale sau determinantul) dou sau mai multe atribute. Acestea sunt dependenele funcionale cu sursa compus. Relaia BIBLIOTEC_3 (ISBN, Titlu, Cota, Autor, Editura, LocSediuEd, AnAparitie, CuvantCheie), aflat n prima form normal, prezint ca cheie primar combinaia (Cota, Autor, CuvntCheie). De aceea, se pot inventaria urmtoarele cinci dependene funcionale, n care destinaii sunt atributele necheie: (l)(Cota, Autor, CuvntCheie) -> ISBN (2)(Cota, Autor, CuvntCheie) -> Titlu (3)(Cota, Autor, CuvntCheie) -> Editura (4) (Cota, Autor, CuvntCheie) ->LocSediuEd (5)(Cota, Autor, CuvntCheie) -> AnApariie 32

Alte elemente luate n discuie pentru stabilirea DF: - o carte poate fi scris de mai muli autori: ISBN/-> Autor ; - un autor scrie mai multe cri: Autor /-> ISBN i - despre mai multe subiecte: Autor /-> CuvntCheie ; - ntr-o carte sunt tratate mai multe subiecte: ISBN /-> CuvntCheie ; - pentru o carte sunt n depozit mai multe exemplare: ISBN /-> Cota. Cota este codul care identific n mod unic o carte aflat n depozit, aadar: (6)Cota -> ISBN (7)Cota -> Titlu (8)Cota -> Editura (9) Cota -> LocSediuEd (10) Cota -> AnApariie Fiecare titlu de carte este identificat fr ambiguitate de ISBN: (11) ISBN -> Titlu (12) ISBN -> Editura (13) ISBN -> LocSediuEd (14) ISBN -> AnApariie O editur are un singur sediu central: (15)Editura -> LocSediuEd Prin urmare, dintre cele 15 DF inventariate, primele cinci au sursa compus, celelalte, sursa simpl. Chiar pentru cazuri simple, ansamblul tuturor DF ntr-o baz de date poate s devin extrem de stufos. De aceea, n procesul normalizrii trebuie avut n vedere un echilibru ntre: identificarea tuturor DF ce reflect restricii, reguli ale fenomenului/procesului modelat, includerea n setul DF numai a celor relevante, adic a unui ansamblu minimal din care, prin reguli de genul celor de mai sus, se pot obine toate celelalte DF. In teorie, dat fiind un set de DF notat S, ansamblul tuturor DF determinate pe baza acestuia se numete nchidere a lui S i se noteaz S+.

33

Mult mai important este determinarea acoperirii minimale, adic a setului minim de DF prin care pot fi determinate toate celelalte dependene din relaie. Dup Chris Date, un set S de dependee funcionale este ireductibil dac i numai dac satisface urmtoarele trei proprieti13: 1. Partea dreapt (destinaia) a fiecrei dependene din S implic un singur atribut. 2. Sursa fiecrei DF este ireductibil, adic nici un atribut nu poate fi eliminat fr distrugerea dependenei; se spune c DF este ireductibil la stnga. 3. Nici o DF din S nu poate fi eliminat fr afectarea nchiderii S +, altfel spus, fr pierderea unei serii de informaii. Din pcate, dei elegant postulat, acoperirea minimal ridic probleme majore chiar i la un numr mediu de atribute, ca s nu vorbim ct de alunecoas este proprietatea a treia formulat de Date. n plus, de multe ori, pentru o baz de date exist mai multe acoperiri minimale. Lucrurile pot fi ns simplificate parial eliminnd din discuie dependenele simetrice i redundante. Dependene funcionale simetrice i redundante Deseori, o baz de date sau relaie prezint mai multe chei candidate. Alegerea dintre acestea a cheii primare are n vedere, pe lng unicitate, compoziia minimal i valorile nenule ale oricrui atribut component, precum i elemente ce in de facilitatea utilizrii: uurina reinerii (de ctre utilizator), lungime ct mai mic, constan n timp etc. n procesul normalizrii, problemele ridicate de aceste dependene reciproce dintre cheile candidate trebuie tratate cu pruden. De cele mai multe ori, este recomandat ca dintre dependenele unei relaii s fie eliminate toate cele n care sursa este o cheie candidat i pstrarea numai a celor n care determinantul este atributul cheie primar.

Reprezentri ale dependenelor funcionale Elaborarea structurii bazelor de date prin tehnica normalizrii necesit o gestiune riguroas a tuturor dependenelor funcionale. n practic, parcurgerea tuturor relaiilor dintre atributele unei baze de date se poate solda cu identificarea a zeci sau chiar sute de dependene. Conectarea lor, determinarea redundanelor, incluziunilor, tranzitivitilor ridic astfel uneori

13

Date, C.J., Darwen, H.,Foundation for Database Systems. The Third Manifesto, editia a II-a, Addison-Wesley, Reading,

Massachusetts, 2000

34

probleme apstoare. Drept pentru care au fost elaborate diverse instrumente menite a simplifica vizualizarea i lucrul cu DF: a) diagrame, b) grafuri i c) matrice ale dependenelor funcionale. a) Diagrame ale DF Diagramele DF au o utilizare limitat, deoarece la un numr mare de atribute reprezentarea dependenelor este foarte anevoioas. O dependen dintre dou atributeeste indicat printr-o linie (sau un numr de segmente) ce pornete din surs i se termin printr-o sgeat nfipt" n destinaie (determinant). Cnd sursele sau destinaiile sunt compuse, atunci, mai nti, se unesc atributele din grupul determinant/destinaie, iar terminaiile dependenelor vizeaz segmentele de grup. Relaia BIBLIOTEC_3 (ISBN, Titlu, Cota, Autor, Editura, LocSediuEd, AnAparitie, CuvantCheie). Diagrama dependenelor acestei relaii, este prezentat n figura de mai jos.

ISBN

Titlu

Cota

Autor

Editura

LocSediuEd AnAparitie CuvantCheie

Figura 3.5. Diagrama DF a relaiei BIBLIOTEC_3 b) Graful dependenelor funcionale Intr-un graf al dependenelor funcionale, acestea sunt reprezentate prin sgei ce leag sursa i destinaia. La dependenele funcionale simple, sgeata unete cele dou atribute. Cnd sursa este compus, se folosete un conector care leag, n prim instan, atributele determinant, iar sgeata unete acest conector cu atributul destinaie. Ct privete dependenele relaiei BIBLIOTEC_3 corespunztor diagramei din figura 3.5 este graful din figura urmtoare, n ciuda densitii de sgei, se remarc un plus de claritate i folosirea mai judicioas a spaiului. Cota Autor CuvantCheie

35

ISBN

AnAparitie

Titlu

Editura

LocSediuEd

Fig. 3.6. Reprezentarea sub forma de graf a diagramei din fig.3.5. c) Matricea dependenelor funcionale Construirea matricei dependenelor funcionale demareaz prin crearea unui tabel n care fiecrui atribut i se va asocia o linie i o coloan. Dup includerea tuturor atributelor, se adaug toate grupurile de atribute care constituie surse de dependene funcionale. Apoi se parcurg, pe rnd, coloanele, n fiecare celul scriindu-se 1 atunci cnd atributul de pe coloan este surs a unei DF n care destinaia este atributul/ grupul de pe linie. Sursa de DF 1 2 6 9 1 2 3 4 5 6 7 8 9 Cota ISBN Autor CuvantCheie Titlu Editura LocSediuEd AnAparitie (Cota, Autor,CuvantCheie) 1 1

1 1 1 1

1 1 1 1

1

1 1 1 1

Fig. 4.7. Matricea corespunztoare diagramei din fig 4.5. si a grafului din fig. 4.6.

Dependene funcionale totale Noiunea de dependen funcional total a fost introdus de Melkanoff, O dependen funcional Data1 -> Data2 este total dac nu exist nici un atribut/combinaie de atribute Dat3 ca subansamblu al Data1 care s verifice dependena funcional Dat3 -> Dat2. 36

Formal, dac x = {Ai, Aj, Ak} reprezint un grup de atribute ale relaiei R, iar Am un atribut al aceleiai relaii, unde AmX, se spune c exist o dependen funcional total ntre X i Am dac: 1. X >Am si 2. nu exist nici un subansamblu S de atribute, S X, pentru care S-> Am Se noteaz: Xtotal> Am Dependena funcional total mai este denumit i elementar, plin, deplin sau complet. Implicit, toate dependenele in care sursa este simpl (alctuit dintr-un singur atribut) sunt dependene funcionale complete. In relaia BIBLIOTEC_3, primele cinci dependene funcionale: (1) (Cota, Autor, CuvntCheie) -> ISBN (2) (Cota, Autor, CuvntCheie) -> Titlu (3) (Cota, Autor, CuvntCheie) -> Editura (4) (Cota, Autor, CuvntCheie) -> LocSediuEd (5) (Cota, Autor, CuvntCheie) ->AnApariie sunt pariale, deoarece: (6) Cota -> ISBN (7) Cota -> Titlu (8) Cota -> Editura (9) Cota -> LocSediuEd (10) Cota -> AnApariie Cu alte cuvinte, un atribut component al determinatului dependenelor (l)-(5) este, el singur, surs ntr-o serie de DF n care destinaiile sunt identice. Trecerea relaiilor n a doua form normal (2NF) ncepnd cu a doua form normal, relaiile pot fi decupate n subrelaii, n scopul diminurii problemelor legate de stocare i actualizare. n general, atunci cnd ntr-o relaie R exist o DF de tip x -> y i x nu este cheie candidat, atunci R conine o anumit doz de redundan. O relaie se afl n 2NF dac: 1. Se afl n 1NF. 2. Toate DF ce leag cheia primar la celelalte atribute sunt DF elementare (totale). 37

O baz de date este n 2NF cnd toate relaiile care o alctuiesc sunt n 2NF. Problema trecerii unei relaii din prima n a doua form normal se pune numai cnd cheia primar a relaiei este compus din mai multe atribute. ntr-o formulare mai lejer, se poate spune c o relaie n 2NF nu conine DF pariale ntre atributele cheie i celelalte atribute. In general, trecerea de la 1NF la 2NF se poate realiza dup urmtoarea succesiune de 6 pai: 1. Se identific posibila cheie primar a relaiei universale, care confer unicitate oricrui tuplu din relaie, chiar n condiiile violrii restriciei de entitate. 2. Se inventariaz toate dependenele dintre atributele relaiei (nchiderea DF), cu excepia celor n care destinaia este un atribut component al cheii primare. 3. Se trec n revist toate dependenele care au ca surs (determinant) un atribut sau subansamblu de atribute din cheia primar. 4. Pentru fiecare atribut (sau subansamblu) al cheii de la pasul 3 se creeaz o relaie care va avea drept identificator primar atributul (subansamblul) respectiv, iar celelalte atribute vor fi cele care apar ca destinaii n dependenele de la pasul 3. 5. Din relaia iniial sunt eliminate toate atributele destinaie (non-cheie) din relaiile proaspt" obinute, pstrndu-se numai atributele cheie ale noilor relaii (se asigur, astfel, cheile strine care vor face legturile ctre noile relaii). 6. In rmiele" relaiei universale (iniiale), se verific dac cheia primar iniial respect restricia de entitate, iar dac nu, se mai elimin dintre atribute, la limit, chiar toat relaia-rmie". La limit, prin descompuneri, din relaia universal (iniial) este posibil s nu rmn dect atributele cheie. Acum, ns, orice pericol privind nulitatea vreunui atribut cheie va atrage dup sine eliminarea atributului respectiv sau, la limit, a relaiei respective. Relaia BIBLIOTEC_3 prezint, dependene pariale i, astfel, constituie un bun obiect" de normalizare n 2NF. De altminteri, relaia abund n redundane i anomalii de genul: a) nregistrarea recepiei unui titlu, introducerea datelor despre o carte (titlu) sunt imposibile pn n momentul n care mcar o carte primete cot; b) dac un titlu a fost introdus iniial eronat, corecia trebuie operat pe destule linii ale tabelei; c) la fiecare achiziie ulterioar a aceleiai cri (ISBN) trebuie introduse din nou ISBN-ul, titlul, editura etc. 38

Parcurgem cei 6 pai, dup cum urmeaz : 1. Cheia primar a relaie iniiale este: (Cota, Autor, CuvantCheie). 2. Ansamblul DF: (1)-(15) 3. n dependenele (6)-(10), atributul Cota, component al cheii relaiei, este surs simpl. 4. Se constituie o relaie n care cota este cheie primar, iar celelalte atribute sunt destinaiile dependenelor (6), (7), (8). (9) i (10). 5. Din relaia iniial se elimin toate atributele destinaie preluate n proaspta tabel, rmnnd doar atributele cheie : (Cota, Autor, CuvntCheie); 6. Nici unul dintre cele trei atribute de la punctul 5 nu pericliteaz restricia de entitate, aa nct relaia - rmi" se pstreaz n aceast form. Prin urmare, n a doua form normalizat, relaia iniial (universal) s-ar putea descompune n: CRI (Cota. ISBN,Titlu,Editura, LocSediuEd, AnApariie) si TITLURI_AUTORI_CUVINTECHEIE (Cota. Autor. CuvntCheie) Coninutul acestor dou noi relaii este prezentat n figura de mai jos.

CRICot ISBN Titlu Visual FoxPro. Ghidul dezvoltrii aplicaiilor profesionale Visual FoxPro. Ghidul dezvoltrii aplicaiilor profesionale Visual FoxPro. Ghidul dezvoltrii aplicaiilor profesionale SQL. Dialecte DB2, Oracle i Visual FoxPro SQL. Dialecte DB2, Oracle i Visual FoxPro (fragment) CuvntCheie baze de date SQL proceduri stocate FoxPro Formulare orientare pe obiect client-server Web Editura Polirom Polirom Polirom Polirom Polirom LocSediuEd lai lai lai lai lai III-13421 973-683-8897 III-13422 973-683-8897 III-13423 973-683-8897 III-10678 973-683-7092 III-10679 973-683-7092 AnApariie 2002 2002 2002 2001 2001

TITLURI_AUTORI_CUVINTECHEIE Cota Autor III -13421 Marin Fotache III -13421 Marin Fotache III -13421 Marin Fotache III -13421 Marin Fotache III -13421 Marin Fotache III -13421 Marin Fotache III -13421 Marin Fotache III -13421 Marin Fotache .

Figura 3.8. Relaia BIBLIOTECA_3 n 2NF

39

3.6. A treia form normalizat -3NF i forma normal Boyce-Codd - BCNFA treia form normalizat (3NF) este considerat de muli specialiti drept un minimum acceptabil pentru structura unei baze de date relaionale. Bazat pe a doua form normal i pe dependenele funcionale tranzitive (de fapt, pe eliminarea lor), 3NF a cunoscut dou definiii majore, una original", formulat de Codd nsui i a doua ce acoper cteva lipsuri ale primei, numit, dup autorii si, Boyce-Codd Normai Form, n traducere oarecum liber forma normal Boyce-Codd, mai pe romnete, BCNF. Dependene funcionale directe/tranzitive O dependen funcional Datl -> Dat2 este direct atunci cnd nu exist o Dat3 care angajeaz o dependen funcional tranzitiv de genul: Datl -> Dat3 -> Dat2. Formal, dac Ai > Aj i Aj-> Ak, atunci Ai> Ak i se noteaz: Ai > Aj > Ak Pentru relaia BIBLIOTEC_TUPLURI_NOI_SOLUIA_2 dependenele (7), (8), (9) i (10) din paragraful 4.5.1.1. sunt tranzitive, deoarece: Cota -> ISBN -> Titlu Cota -> ISBN -> Editura Cota -> ISBN -> LocSediuEd Cota -> ISBN -> AnApariie In plus, i DF (13) este tranzitiv, ntruct: ISBN -> Editura -> LocSediuEd Pe baza noiunilor prezentate, se poate defini nchiderea tranzitiv a unui ansamblu de dependene funcionale. nchiderea tranzitiv reprezint ansamblul dependenelor totale directe + dependenele totale tranzitive. Acoperirea minimal, definit n capitolul anterior, este subansamblul minimal de dependene funcionale elementare care permit determinarea tuturor celorlalte dependene funcionale. Cu alte cuvinte: (1) nici o dependen funcional nu este redundant i (2) orice dependen funcional total face parte din nchiderea tranzitiv. Spre deosebire de ceea ce am discutat n capitolul anterior, acum suntem n msur s eliminm din ansamblul DF i pe cele tranzitive. Astfel, pentru relaia BIBLIOTEC_3, acoperirea minimal este alctuit din cinci DF: 40

- Cota -> ISBN - ISBN -> Titlu - ISBN -> Editura - ISBN -> AnApariie - Editura -> LocSediuEd iar nchiderea tranzitiv este urmtorul ansamblu de dependene: - Cota -> ISBN - Cota -> Titlu - Cota -> Editura - Cota -> LocSediuEd - Cota -> AnApariie - ISBN -> Titlu - ISBN -> Editura - ISBN -> LocSediuEd - ISBN -> AnApariie - Editura -> LocSediuEd Acoperirea minimal poate fi uor reprezentat prin graful DF. Dependenele tranzitive sunt foarte uor de identificat i eliminat. Spre exemplu, dac din figura 3.6. eliminm sgeile ce reprezint drumul direct dintre dou atribute/grupuri i un atribut destinaie, att timp ct ntre respectivele atribute/conectori exist un traseu ocolitor", se obine graful acoperirii minimale vezi figura 3.9. Cota Autor CuvantCheie

ISBN

Editura

Titlu

AnApariie

LocSediuEd

Figura 3.9. Graful DF de acoperire minimal pentru relaia BIBLIOTEC_3 41

Atributele Autor i CuvantCheie atrn inutil n figur, stricnd imaginea grafului. Le-am pstrat ns pentru a nu omite nici un atribut din relaia universal i a indica cheia primar a relaiei.

Aducerea relaiilor n a treia form normal Prima definiie a celei de-a treia forme normale a unei relaii poate fi formulat relativ simplu i incremental, prin raportare la 2NF. O relaie se afl n 3NF dac: 1. Se gsete n 2NF. 2. Toate atributele care nu aparin cheii primare nu depind funcional de un alt atribut (ansamblu de atribute) care nu face parte din cheie. A doua condiie poate fi exprimat si n maniera: toate dependenele funcionale care leag cheia primara de celelalte atribute sunt directe (netranzitive). Trecerea din 2NF n 3NF presupune eliminarea DF tranzitive i se poate face, pentru o relaie, n urmtoarea manier: a) Se identific toate atributele ce nu fac parte din cheie i sunt surse ale unor dependene funcionale. b) Pentru toate atributele identificate la punctul a se constituie cate o relaie in care cheie primara va fii atributul respectiv, iar celelalte atribute, destinaiile din dependentele considerate. Operaiile a si b se repeta pentru relaiile nou obinute prin decompoziie. De fiecare data din relaiile supuse descompunerii se elimina atributele destinaie ale surselor non-cheie, pstrndu-se atributele sursa , in vederea stabilirii legturilor intre tabele si , implicit declarrii restriciilor refereniale. Relaia BIBLIOTEC_3 a fost adus n 2NF n fig.3.8 prin ruperea sa n CRI (Cota. ISBN,Titlu,Editura, LocSediuEd, AnApariie) si TITLURI_AUTORI_CUVINTECHEIE (Cota. Autor. CuvntCheie) Cea de-a doua este alctuit exclusiv din atribute cheie, deci nu se pune n discuie 3NF (adic relaia este deja n 3NF). Altfel stau lucrurile n CRI. Relaia este n 2NF i conine dependene tranzitive. Exist dou atribute din afara cheii primare, ISBN i Editura, care sunt

42

surse de DF, astfel nct dependenele (7), (8), (9), (10) i (13) sunt tranzitive. Trecerea n 3NF se realizeaz prin constituirea a dou relaii pe care o s le numim EDITURI i TITLURI: EDITURI (Editura, LocSediuEd) si TITLURI (ISBN. Titlu, Editura, AnApariie) iar din CRI rmne: EXEMPLARE (Cota. ISBN) n concluzie, n 3NF, baza de date BIBLIOTEC este alctuit din patru tabele: EDITURI (Editura. LocSediuEd) TITLURI (ISBN. Titlu, Editura, AnApariie) EXEMPLARE (Cota, ISBN) TITLURI_AUTORI_CUVINTECHEIE (Autor, CuvntCheie ) Din pcate, ne rmne pe contiin ultima tabel, TITLURI_AUTORI_CUVINTECHEIE, care conine un grad ridicat de redundan a datelor, problem rezolvat pe baza unui alt tip de dependente - muli valoare. Forma normal Boyce-Codd Definirea celei de-a treia forme normale, aa cum a fost formulat iniial de Codd, ridica o serie de probleme n anumite circumstane, probleme pe care formularea din acest paragraf le rezolv. Chris Date este de prere c situaiile n care definiia original a 3NF este insuficient se traduc prin trei condiii simultane: relaia are mai multe chei candidate; o parte dintre cheile candidate sunt compuse; cheile compuse au atribute n comun. ntruct ndeplinirea simultan a celor trei condiii se ntlnete destul de rar n practic, a treia form normal, aa cum a fost formulat n paragraful precedent, este suficient. Se spune despre o relaie c este n forma normal Boyce-Codd (BCNF) dac: 1. se afl deja n 3NF; 2. nu exist nici o DF a crei surs s fie un atribut necomponent al cheii, iar destinaia, un atribut din cheie. Intr-o alt formulare, o relaie R este n BCNF dac i numai dac orice determinant (surs de dependen funcional sau supercheie) este o cheie candidat. Aceast exprimare are i avantajul de a nu lega BCNF de 3NF, unii autori prefernd s discute problema normalizrii direct n termenii BCNF, fr a trece prin formele intermediare. 43

In cazul relatiei BIBLIOTEC_TUPLURI_ NOI_SOLUTA_2 combinaia care difereniaz orice linie de toate celelalte este(Cota, Autor, Cuvntcheie). Intuim ns un aspect pe care dependenele i, implicit, normalizarea il scap, i anume c autorii i cuvintele-cheie se refer la o carte (adic ISBN), i nu la un exemplar fizic din depozit (Cota). Atunci, in schema bazei de date n 3NF se schimb ultima tabel, TITLURI_AUTORI_CUVINTECHEIE2 (ISBN, Autor, Cuvntcheie). Se observ cu ochiul liber o diminuare a volumului ultimei tabele. Rmne, n schimb, un grad de redundant chiar i n forma comprimat a tabelei. Putem ncerca s adugm n BIBLIOTEC_3 cteva atribute care s atrag n dependene atributele Autor i CuvntCheie. Astfel, pornim de la faptul c, pe coperta unei cri, autorii sunt trecui ntr-o anumit ordine, deloc ntmpltoare, iar la extragerea informaiilor despre cri aceast ordine trebuie respectat. Prin urmare, folosim atributul OrdineCopert, iar DF este: (ISBN, OrdineCopert) -> Autor De asemenea, pentru a putea extrage crile legate de unul sau mai multe cuvinte-cheie n ordinea relevanei, introducem atributul Relevan, ce indic nivelul la care este tratat ntr-o carte o anumit noiune/sintagm (cuvnt-cheie): (ISBN, CuvntCheie) -> Relevan Pe baza acestor dou noi dependene, relaiile construite sunt aproape impecabile: EDITURI (Editura, LocSediuEd) CRI (ISBN, Titlu, AnApariie, Editur) AUTORI_CARTI (ISBN, OrdineCoperta, Autor); CARTI_CUVINTE CHEIE (ISBN, CuvinteCheie, Relevanta); EXEMPLARE_CARTI (Cota, ISBN).

3.7.A patra form normal - 4NFCu toate c BCNF elimin toate anomaliile datorate dependenelor funcionale, mai exist un tip de dependen, numit dependen multivaloric, ce poate cauza probleme de redundan a datelor. Posibila existen a dependenelor multivalorice n cadrul unei relaii se datoreaz primei forme normale 1NF care nu permite unui atribut dintr-un rnd s aib o mulime de valori. De 44

exemplu, dac ntr-o relaie exist dou atribute multivalorice, trebuie s repetm fiecare valoare a unuia din atribute mpreun cu fiecare valoare a celuilalt, dar efectul este apariia redundanei datelor. O relaie este n 4NF dac i numai dac: 1. este n BCNF; 2. toate dependenele care se manifest n cadrul su sunt dependene funcionale, altfel spus, eventualele dependene multivaloare coninute sunt, de fapt, dependene funcionale. Este o form mai strict dect BCNF pentru c mpiedic relaiile s conin dependene multivalorice, prevenind astfel redundana datelor. Relaia BIBLIOTEC_3, dup cum am vzut in paragraful precedent, conine o dependent multivaloare prin eliminarea creia vom aduce relaia n 4NF. Se va constitui cte o relaie pentru fiecare surs de dependen funcional (Cota, ISBN i Editura). La aceste relaii se va aduga cte o relaie pentru fiecare destinaie de dependen multivaloare (Autor i CuvntCheie). Schema final a bazei de date, precum i coninutul relaiilor sunt ilustrate mai jos.

EDITURI EDITURA Polirom TITLURI ISBN

LocSediu Iasi

973-683-889-7 973-683-709-2 EXEMPLARE Cota III-13421 III-13422 III-13423 III-10678

Titlu Visual FoxPro. Ghidul dezvoltarii aplicatilor profesionale SQL. DialecteDB2, Oracle si Visual FoxPro

Editura AnAparitie Polirom Polirom 2002 2001

ISBN

973-683-889-7 973-683-889-7 973-683-889-7 973-683-709-2

TITLURI_AUTORI ISBN Autor 973-683-8897 Marin Fotache 973-683-8897 Ioan Brava 973-683-8897 Catalin Strambei 973-683-8897 Liviu Cretu 45

III10679

973-683-709-2

973-683-7092

Marin Fotache

TITLURI_CUVINTECHEIE ISBN CuvantCheie 973-683-889-7 baze de date 973-683-889-7 SQL 973-683-889-7 proceduri stocate 973-683-889-7 FoxPro 973-683-889-7 formulare 973-683-889-7 orientare pe obiect 973-683-889-7 client_server 973-683-889-7 web 973-683-709-2 baze de date 973-683-709-2 algebra relationala 973-683-709-2 SQL Fig.34.10. Relatia BIBLIOTECA forma finala

3.8. A cincea form normal 5NFCea de-a cincea form normal - denumit i forma normal proiecie-jonciune ProjectJoin Normal Form) - are la baz dependena de jonciune i a fost definit de Ronald Fagin: o relaie R este n 5NF dac i numai dac toate dependenele de jonciune sunt consecine ale cheilor candidate ale lui R. De remarcat c 5NF, 4NF i BCNF corespund definiiei unice: orice determinant al unei dependene este o cheie; ceea ce difer ine de faptul c pentru BCNF este vorba de dependen funcional, pentru 4NF - dependen multivaloare, iar pentru 5NF - dependen de jonciune. 5NF este o generalizare a 4NF, care este o generalizare a BCNF. Pn la 5NF, o relaie era descompus prin proiecie n dou relaii ce puteau, prin jonciune naturala, s refac" in orice moment relaia iniial. Cu dependena de jonciune, aceast descompunere fr pierderi poate fi generalizat nu la dou, ci la mai multe relaii. n fapt, dependena de jonciune corespunde existenei mai multor legturi care sunt independente n cadrul relaiei i care vor fi izolate prin descompunerea n 5NF. 46

4. Crearea bazei de date cu ajutorul limbajului SQL4.1. Fundamente limbaj SQL Limbajul SQL (Structured Query Language) este limbajul utilizat de majoritatea sistemelor de baze de date relaionale (SGBDR) pentru definirea i manipularea datelor. Majoritatea limbajelor posed un set de instruciuni comun unanim acceptat de toate marile companii productoare de soft, precum MICROSOFT sau ORACLE. Termenii utilizai de limbajul SQL sunt: -

tabel (Table) utilizat pentru a desemna o relaie; linie (row) utilizat pentru a desemna un tuplu; coloan (column) utilizat pentru a desemna un atribut. componenta de descriere a datelor relaionale (limbajul de descriere a datelor - LDD), componenta de manipulare a datelor relaionale (limbajul de manipulare a datelor LMD), ambele fiind absolut necesare n gestiunea BD