SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DAT DATE CURS
Tudor Tudor Nicoleta Liviana - 2007 -
1
CUPRINS
1.
2.
3.
5. . 8.
7. ).
9. 10.
Sisteme de gest estiune a bazelor de date …………………………………... ... - Funcii. - !r"itectur#. - Ti$uri de S%&'-uri. (odelul re relaional al al da datelor …… ……………………………………………. - *eguli de integritate. - !lgebra relaional#. - *egulile lui +odd. - Normalizare. Lim Limba,u ba,ull SL SL - crea creare reaa tabel abelel eloor in isual sual Fo/ Fo/ro ro ……… ………… ………… ……… …. - Limba,ul SL $rezentare generala ti$uri de date - +rearea tabelelor - !daugarea restrictiilor restrictiilor - rori care a$ar in cazul 4olosirii indecsilor indecsilor - +rearea com$let# a tabelelor Inserarea, modifcarea 6i 6tergerea inregistrarilor in limbajul SQL .……. Operat Operatori oriii algebr algebrei ei relat relation ionale ale - comand comanda a SELECT SELECT …. ………………… uncii agregat. !ruparea tuplurilor …………………………………….. - unctii agregat - Crearea grupurilor de tupluri - clau"ele !roup b#, $a%ing - Erori generate de &unctii de grup Subinterog#ri ……………………………………………………………. Cursoare. Tabele %irtuale ……………………………………………….. - Secvenializarea interogarilor - cursoare - Tabele %irtuale '%ie() *roceduri stocate declan6atoare 6i ………………………………………. Sisteme in&ormatice. *roiectarea *roiectarea unei aplicatii %i"uale. +ibliografe
2
3
)
1)
2) 3 52
1
80 88 78
+a$itolul 1
Sisteme de gestiune a bazelor de date. Funcţii. Arhitectură. Tiuri de S!"#$uri
:n sistem de gestiune a bazelor de date ;S%&'< este un ansamblu de $rograme ce $ermit utilizatorilor sa interactioneze cu o baza de date= in vederea crearii= actualizarii si interogarii acesteia>1?. rivit dintr-o alta $ers$ectiva= un S%&' $oate 4i considerat un $rodus so4t@are> 2? care asigura interactiunea cu o baza de date= $ermitand de4inirea= consultarea si actualizarea datelor dintr-o baza de date. Obiectivele unui SGBD sunt:
4urnizarea unui mediu e4icient= ada$tat utilizatorilor care doresc sa consulte sau sa actualizeze in4ormatiile continute intr-o baza de date asigura si su$ervizeazaA o introducerea de in4ormatii in baza de date o actualizarea si e/tragerea datelor din baza o autorizarea si controlul accesului la date o $astrarea inde$endentei dintre structura bazei de date si $rograme.
Arhitectur siste!el"r #e $estiune b%el"r #e #te
:n S%&' $rezinta= in general= urmatoarele module>3?A Gestionarul fisierelor = care aloca s$atiu de memorie $e disc si gestioneaza structurile 4izice de date care servesc la re$rezentarea in4ormatiei. Gestionarul bazei de date este un modul de $rograme ce realizeaza inter4ata dintre datele interne ;de $e disc< continute in baza si $rogramele ;sau comenzile< de consultare si actualizare. l traduce instructiunile '(L ;limba,ul de mani$ulare a datelor< in instructiuni-sistem= la nivel elementar= 4iind res$onsabil de buna des4asurare a o$eratiilor de citire B scriere a datelor din B in baza de date. Procesorul de consultare traduce instructiunile limaba,ului de consulatare in instructiuni elementare= CinteligibileD $entru gestionarul bazei de date. l o$timizeaza consultarea= $entru obtinerea rezultatelor intr-un tim$ cat mai scurt. Modulele DML ;'ata (ani$ulation Language< realizeaza conversia instructiunilor limba,ului de mani$ulare a datelor 4olosite intr-un $rogram= in $roceduri curente ale limba,ului-gazda= interactionand cu $rocesorul de consultare in vederea $roducerii secventelor de cod adecvate. 3
Modulele DDL ;'ata 'e4inition Language< traduc ;$rin com$ilare sau
inter$retare< si e/ecuta instructiunile ''L= obtinandu-se ansamblul de tabele ce re$rezinta metadatele stocate in dictionarul de date. &rinci'lele (unctii le unui SGBD sunt:
descrierea ansamblului de date la nivelurile 4izic si conce$tual crearea ;initializarea< si e/$loatarea ;consulatarea si actualizarea<
bazei de date controlul integritatii bazei de date con4identialitatea in4ormatiilor continute in baza accesul simultan al mai multor utilizatori la in4ormatii securitatea in 4unctionare 4urnizarea unui set de comenzi si insructiuni necesare atit utilizatorilor $entru consultarea bazei de date= $rin limba,ul de mani$ulare= cat si $rogramatorilor revizia si restructurarea bazei de date monitorizarea $er4ormantelor :n S%&' se caracterizeaza $rinA neredundanta datelor ;administrarea coerenta a datelor trebuie sa asigure nedu$licarea 4izica a datelor< $arta,area datelor ;a$licatiile sa $arta,eze simultan datele din baza de date< securitatea si con4identialitatea datelor ;datele trebuie $rote,ate de accesul neautorizat sau rau intentionat<.
Ti'uri #e SGBD)uri Modelele retea si ierarhice caracteristice $erioadei 1980-1970 1. 4oloseau o organizare a datelor la nivel de articol $rin legaturi ierar"ice;arbore< sau de ti$ gra4. E(S ;En4ormation (anagement Sstem<= conce$ut de E&(= a 4ost $rimul S%&' ierar"ic= conce$ut initial $entru $rocesarea datelor in industria aeros$atiala ;198)<. ersiunea curenta a acestuia= E(SBS ;En4ormation (anagement SstemBirtual Storage<= este im$lementata $e calculatoare E&( si 4oloseste limba,ul 'LB1 ;'ata Language Gne<. Sistemul E(S nu $oate re$rezenta relatia de ti$ul nAm ;Cmulti la multiD<. Ende$endenta 4izica redusa a S%&'-urilor ierar"ice com$lica administrarea si mani$ularea datelor. Limba,ul de mani$ulare a datelor im$unea $rogramatorului sa s$eci4ice drumurile de acces la date. E'(S ;Entegrated 'atabase (anagement Sstem< este un S%&' retea $rodus de 4irma +ullinet So4t@are Enc. si 4unctioneaza $e calculatoarele E&(= sub sistemul de o$erare 'GS. (odelele retea $rezinta o serie de dezavanta,e= $recum o$timizarea manuala a sistemuluiA nu utilizeaza baze de date statistice si nu $ermit sortarea dinamica. Totusi= S%&'-urile retea continua sa 4ie 4olosite datorita $er4ormantelor obtinute in $relucrarea la nivel de inregistrari. *e4eritor la modul de mani$ulare a datelor= modelele ierar"ic si retea erau orientate $e 4isiere. entru a inlatura aceste limitari= a 4ost introdus modelul relational= care este orientat $e multimi. Modelul relational a a$arut du$a 1970 si a revolutionat lumea 2. bazelor de date $rin buna sa 4undamentare teoretica si usurinta cu care se $oate
5
re$rezenta un volum mare de date= devenind 4oarte $o$ular. ! 4ost conce$ut si dezvoltat de .F. +odd= 4iind bazat $e teoria matematica a relatiilor. Foloseste structuri de date sim$le= intuitive= caracterizan-du-se $rin ine/istenta $ointerilor vizibili $entru utilizator= constrangeri de integritate= o multime de o$eratori a$licabili relatiilor= care $ermit de4inirea= cautarea si reactualizarea datelor. (odelului relational ii este asociata teoria normalizarii. En 1978= $roiectul SstemB* dezvoltat in +ali4ornia a constituit $unctul de $lecare $entru realizarea unuia dintre cele mai cunoscute S%&'-uri= '&2. En 1979 a 4ost lansat cu succes $rimul S%&' relational comercial= Gracle= care ocu$a un segment de $iata 4oarte mare. !st4el= Gracle +or$oration a devenit liderul $roduselor so4t@are dedicate mediilor de lucru cu bazele de date. Gdata cu marirea vitezei de acces si utilizarea limba,elor de generatia a E-a ;Seuel= SL<= S%&'-urile relationale s-au im$us $e $iata bazelor de date. Sistemele de gestiune a bazelor de date relationale ;S%&'*< de Ccategorie greaD $recum Gracle= '&2= En4ormi/= (icroso4t SL Server= asigura accesul simultan a mii de utilizatori la aceeasi baza de date. iata acestui segment este rezervata sistemelor de o$erare :ni/= Hindo@s NT= Hindo@s 2000 si Novell Net@are. Fata de modelele ierar"ice si retea= modelul relational $rezinta cateva avanta,e= $recumA inde$endenta logica si 4izica $une la dis$ozitia utilizatorilor limba,e ne-$rocedurale o$timizeaza accesul la date imbunatateste integritatea si con4identialitatea datelor= etc. :n S%&' relational su$orta intr-o 4orma limitata cunostinte ;asertiuni generale si abstracte asu$ra 4a$telor<= $rin constrangerile de integritate= iar restul trebuie integrate in $rogramele de a$licatie= ceea ce genereaza $robleme datorita im$osibilitatii $arta,arii cunostintelor intre utilizatori. S-a observat ca modelul relational de baze de date nu $oate re$rezenta as$ecte com$le/e ale realitatii ;documente incluzand date com$use= obiecte dinamice= imagini= sunete= gra4uri= liste<. !st4el= cercetarile s-au indre$tat asu$ra modelului relational orientat $e obiecte. SGBD-urile relationale orientate pe obiecte 4olosesc obiecte 3. $entru re$rezentarea in4ormatiei. Gbiectul este un ti$ de data si nu in4ormatia e4ectiva ;instanta<. Ti$urile de date atomice $ermit stocarea datelor 4ara utilizarea unui s$atiu $e disc su$limentar. Ensa crearea unui ti$ de date com$us conduce automat la asocierea unui GE' ;Gb,ect E'enti4ier - identi4icatorul obiectului< 4iecarei instante de acest ti$ care necesita s$atiu de stocare $e disc. :n sistem de gestiune relational orientat obiect 4oloseste indecsi asu$ra elementelor unei multimi= utili atat in interogari sim$le= cat si in o$eratii IGEN $entru doua sau mai multe tabele intre care e/ista o relatie many-to-many (multi-la-multi). 'intre S%&'-urile relationale orientate obiect se remarca Gracle versiunile Gracle ) si Gracle 9i= ostgreSL= care 4olosesc ca limba, de interogare SL. Standard-ul SL-3= a$arut in 1999 o4era $osibilitati $entru mosteniri multi$le= $olimor4ism= inca$sulare= su$ort $entru sisteme bazate $e gestiunea cunostintelor= $ermite declararea cam$urilor de ti$ LG& ;Large G&,ect<= care $ot satis4ace nevoile multimedia tot mai accentuate. Ensa LG& nu re$rezinta un ti$ de date= deoarece nu $oate 4i 4olosit in clauza HJ* a unei interogari si nu sunt $ermise o$eratii cu variabile sau cam$uri declarate LG&.
Oracle Serer este
cel mai utilizat sistem de gestiune de baze de date relationale orientate $e obiecte. ersiunile Gracle ) si Gracle 9i 4urnizeaza 4acilitati $recumA Ti$uri de date de4inite de utilizator ;obiect si colectie<= ti$ de date $rede4init *F ;re4erinta de obiect< Ti$uri $rede4inite $entru obiecte de dimensiuni mari ;LG&-large ob,ects= &LG&= +LG&= N+LG&= &4ile< ederi obiect. G vedere obiect constituie o colectie de tabele normalizate= $ermitand mani$ularea datelor ca $e niste obiecte. recom$ilatorii Gracle ;roK+B+< $ermit 4olosirea ti$urilor de date de4inite de utilizator in $rograme + si +. Gracle +all Enter4ace ;G+E< 4urnizeaza 4acilitati $entru accesarea si mani$ularea obiectelor din Gracle ). Gb,ect T$e Translator ;GTT< genereaza automat declaratii in + $entru ti$uri de date obiect de4inite in Gracle ). Post!res"# conce$ut in 19) la :niversitatea &erMele din +ali4ornia= dezvoltat in 1998 si redenumit Post!reS$L= este de4init ca 4iind relational= e/tensibil= cu orientare obiectuala. !cesta include elemente de limba, com$atibile ESG SL= !NSE SLB)9= SLB92 si !NSE SLB9). ostgreSL este construit con4orm unui model clientBserver in 4iecare sesiune sunt im$licate trei $rocese :ni/ coo$eranteA $ostmaster ;$roces su$ervizor<= bacMend ;$roces server de baze de date< si 4rontend ;$roces cerand cone/iune la bacMend<. Enclude inter4ete de $rogramare $entru += += erl= J ;limba, de scri$t $entru scrierea de $agini Heb generate dinamic<= driver I'&+ $entru $rogramatorii Iava G4era inter4ete gra4ice Sunt su$ortate baze de date de mari dimensiuni ;$este 200%btes<= dar $er4ormantele scad vizibil la baze mai mari de %btes $e masini cu $rocesor $e 32 biti. Sistemele de !estiune a bazelor de date inteli!ente = din anii 5. )0= utilizau conce$te ale inteligentei arti4iciale. ! a$arut ast4el necesitatea utilizarii si gestionarii unor volume mari de cunostinte. SGBD-urile deductie $relucreaza baze de date inteligente si gestioneaza cunostinte relativ la baze de date= care sunt= in general= relationale. :tilizand $rogramarea logica= acestea $ermit deducerea de noi in4ormatii= $lecand de la in4ormatiile stocate in baza de date. /ista $ac"ete so4t@are care $ermit inter4atarea bazelor de date relationale cu sisteme e/$ert. 'e e/em$lu= NO*T G&I+T Enter4aces re$rezinta un ansamblu de inter4ete ale sistemelor e/$ert de ti$ NO*T G&I+T cu S%&'-urile Gracle si Engres. entru eliminarea nea,unsurilor centralizarii datelor= s-au dezvoltat $rototi$uri de sisteme de date distribuite. . SGBD-urile distribuite utilizeaza calculatoare di4erite interconectate $rintr-o retea de comunicatie si o4era 4le/ibilitate in descom$unerea tranzactiilor in com$onente ce $ot 4i realizate local sau trans$ortate altor noduri. S''-1 a 4ost $rimul S%&' distribuit si im$lementat in 1979 $e calculatoare '+-20. Statiile sunt conectate $rin reteaua !*!NT si utilizeaza ca S%&' local 'atacom$uter. S''-1 su$orta modelul relational. Engres distribuit este realizat la :niversitatea din +ali4ornia. Se mai $ot cita ca S%&'-uri distribuite e/istenteA *K= ''(= orel= Sirius-'elta= (ultibase= ''TS ;'istributed Testbed Sstem<= etc. rinci$alul avanta, al S%&'-urilor distribuite il constituie cresterea $er4ormantelor sistemului $rin $arta,area si re$licarea datelor dar si e/istenta mai multor 8
$rocesoare. &azele de date distribuite $rezinta si o serie de dezavanta,e legate de com$le/itatea $roceselor= di4icultatea realizarii controlului concurentei si al tranzactiilor. Modelele semantice si functionale au $ermis cresterea 8. continutului semantic al datelor din baze de date. alorile atributelor asociate entitatilor se $ot obtine direct ;in modelul semantic< sau $rin intermediul unor 4unctii a$licabile entitatilor ;in modelul 4unctional<. Bazele de date multimedia imbina caracteristicile orientate $e 7. obiecte cu regulile deductive s$eci4ice inteligentei arti4iciale a$licate in4ormatiilor de ti$ multimedia ;te/te= obiecte gra4ice= imagini statice= video digitizat= secvente audio<. Sistemele de !estiune a bazelor de date orientate obiect ). (SGBDOO)% a$arute du$a 1990= $ermit integrarea descrierii structurale si com$ortamentale. !cestea 4urnizeaza $osibilitati su$erioare de deductie $rin 4olosirea ierar"iilor de clase si a mostenirii. Sc"ema unei baze de date orientate obiect include de4initiile structurale ;atribute si ti$uri< si com$ortamentale ;metode< ale obiectelor. :n sistem de gestiune a bazelor de date orientate obiect realizeaza o modelare su$erioara a in4ormatiei= $ermite 4olosirea obiectelor dinamice si asigura imbunatatirea inter4etei cu utilizatorul. rin $osibilitatea integrarii multimediei= S%&'GG $ermit crearea de ti$uri s$aiale de date $entru sisteme in4ormatice geogra4ice. /ista $osibilitati de re$rezentare a "artilor si a locatiilor acestora care interactioneaza cu utilizatorul sau $osibilitati de analiza a imaginilor= a sunetelor. /istenta unor categorii de $robleme $entru care solutia obiectuala este singura acce$tabila a determinat crearea de S%&'-uri orientate obiect C$ureD= cum ar 4iA %emStone= Gb,ectStore= Gntos= *aima= ersant= etc. Ob&ectStore este dis$onibil $entru $lat4ormele Hindo@s si :NEO. 'intre 4acilitatile sale se $ot amintiA - !sigura controlul concurentei si a integritatii re4erentiale - Enter4ata IavaA $ermite crearea de a$licatii Iava care sa stoc"eze si sa manevreze obiectele intr-un S%&' multi-user de $er4ormanta si accesibilitate deosebite. !$licatiile Iava $ot accesa obiecte native + e/istente in baza de date. Sybase &uild (onumentum o4era utilizatorilor de calculatoare (acintos" si celor bazate $e sistemul Hindo@s 4acilitati de lucru cu baze de date orientate $e obiect. (ulti$rocesarea in retele distribuite este realizata numai din $unct de vedere PclientP. &uild (onumentum detine un administrator care gestioneaza $rocese in multit"reading. Situat in gama S%&'*-urilor= &uild (onumentum este considerat de s$ecialisti ca 4iind un $rodus mai reusit decat $rodusele din aceeasi gama ale com$aniilor Gracle sau En4ormi/. En cadrul sistemului Sbase Sstem 10= Server-ul Sbase SL a 4ost $rimul care a utilizat cod com$ilatB$arta,at atat $entru gestionarea bazelor de date locale cat si $entru trimiterea de a$eluri de $roceduri *+ la alte servere a4late la distanta. (arii $roducatori de sisteme relationale au constientizat avanta,ele bazelor de date orientate obiect si au dezvoltat noi versiuni de S%&'-uri relationale orientate obiect= $recum Gracle )= Gracle 9i= Engres= Sbase. :nele S%&'-uri orientate $e obiecte o4era su$ort $entru te"nologii desc"ise= cum ar 4iA +G(= +G*&!= O(L= '!G= GL'& sau !'G. Su$ortul o4erit nu este universal $entru toate bazele de date obiect. 'omeniile in care sunt 4olosite cu succes &'GG sunt gestiunea retelelor sau a in4ormatiilor= tranzactiile 4inanciare= sistemele geogra4ice= cartogra4ie digitala= determinand o dezvoltare ra$ida a modelului orientat obiect. 7
S%&'-urile orientate obiect e/istente o4era 4unctionalitati si $er4ormante su$erioare in administrarea datelor com$le/e si voluminoase. Limba,ele de interogare si de mani$ulare ;e/tensii ale SL< o4era acestora un $lus de rigoare. Totusi= te"nicile de acces la obiecte sunt inca $er4ectibile deoarece tim$ii de rQs$uns sunt adesea nesatis4acatori.
+a$itolul 2
M"#elul relti"nl l #tel"r
&re%entre $enerl
(odelul relational a 4ost conce$ut si dezvoltat de . F. +odd= 4iind un model 4ormal de organizare conce$tuala a datelor= destinat re$rezentarii datelor si legaturilor dintre date= bazat $e teoria matematica a relatiilor. 'atele se $rezinta sub 4orma unor tabele ;relatii< in care liniile constituie inregistrari= iar coloanele sunt atribute ce caracterizeaza aceste inregistrari. Grice interogare ;sau consultare= e/tragere de date< este tot o relatie. 'in $unctul de vedere al mani$ularii datelor= modelul relational este orientat s$re multimi. (odelul relational nu este orientat s$re sistemul de calcul= deci nu include regulile= structurile si o$eratiile re4eritoare la im$lementarea 4izica a unui sistem de baze de date. (odelul relational a $ermis introducerea unui limba, de interogare= ne$rocedural de mani$ulare a datelor. :n model relational se caracterizeaza $rin trei elementeA Structura relationala a datelor G$eratorii modelului relational *egulile de integritate care guverneaza 4olosirea c"eilor in model. !ceste trei elemente cores$und celor trei com$onente ale ingineriei so4t@areA in4ormatie= $roces si integritate. Or$ni%re #tel"r
Structura datelor im$une de4inirea notiunilorA relatie= sc"ema relationala= valoare nll= tabel vizualizare ;vie@<= care $ot 4i e/$rimate 4ormal= uzual sau 4izic ;tabelul 1
+zual
)
*izic
relatie tu$lu atribut domeniu
tabel linie coloana ti$ de data
4isier inregistrare cam$ ti$ de data
:n domeniu este o multime de valori care $oate 4i de4inita 4ie enumerand elementele com$onente= 4ie de4inind o $ro$rietate distinctiva a domeniului valorilor. Fie '1= '2= …= 'n domenii 4inite= nu nea$arat dis,uncte. !tunci $rodusul cartezian '1 O '2 O …O 'n este de4init de multimea tu$lurilor ;v 1= v2= …= vn<= unde v1 R '1= v2 R '2= …= vn R 'n= unde n este aritatea tu$luluiA '1 O '2 O …O 'n ;v1= v2= …= vn< B vi R 'i= i 1= …= nU G relatie * $e multimile ' 1= '2= …= 'n este o submultime a $rodusului cartezian '1 O '2 O …O 'n= deci este o multime de tu$luri. G relatie $oate 4i considerata o multime 4inita de 4unctii. ,tribut A !sociem 4iecarui domeniu ' i un atribut !i si de4inim relatia * 4 1= 4 2= …= 4 n Uunde 4 i A !1= !2= …= !nU '1 O '2 O …O 'n si 4 i ;! ,< R ' ,= ∀ i=,. Schema relationala (ultimea numelor atributelor cores$unzatoare unei relatii * de4ineste sc"ema relationala a relatiei res$ective si se noteaza *;!1= !2= …= !n<. Se $oate re$rezenta o relatie $rintr-un tabel bidimensional in care 4iecare linie cores$unde unui tu$lu si 4iecare coloana cores$unde unui domeniu din $rodusul cartezian. G coloana ii cores$unde unui atribut. Numarul atributelor de4ineste !radul relatiei = iar numarul de tu$luri din relatie de4ineste cardinalitatea relatiei. G aloare null este un atribut necunoscut sau care nu $oate 4i de4init. :n tabel izualizare ; ie.= filtru= relatie irtuala= edere< este un 4iltru asu$ra tabelului initial care contine numai in4ormatia necesara unei anumite abordari sau a$licatii. G vedere este virtuala deoarece datele continute nu sunt in realitate memorate intr-o baza de date. /ista limitari in 4olosirea acestor tabeleA de e/em$lu= nu se recomanda inserarea= reactualizarea si stergerea. Re$uli #e inte$ritte
*egulile de integritate sunt asertiuni $e care datele din baza de date trebuie sa le satis4aca. /ista trei ti$uri de constrangeri structuraleA de c"eie de re4erinta de entitate care constituie multimea minimala de reguli de integritate $e care trebuie sa le res$ecte un sistem de gestiune a bazelor de date relationale. *estrictiile de integritate minimale sunt de4inite in ra$ort cu notiunea de c"eie a unei relatii. G cheie a unei relatii * este o multime M de atribute ast4el incatA 1. $entru orice doua tu$luri t 1= t2 ale lui *= sa avem t 1;M< V t2;M< 2. nu e/ista nici o submultime $ro$rie a lui M avand $ro$rietatea 1. Fiecare relatie are cel $utin o c"eie. 'aca e/ista mai multe c"ei= e/ista o c"eie $rimara. /heie e0terna ; straina
1e!uli de inte!ritate structurataA
(odelul relational res$ecta 3 reguli de
integritate structurataA 1e!ula A unicitatea cheii +"eia $rimara trebuie sa 4ie unica si minimala. 1e!ula 2A inte!ritatea entitatii !tributele c"eii $rimare trebuie sa 4ie di4erite de valoarea null. 1e!ula 3 inte!ritatea referirii 4 G c"eie e/terna trebuie sa 4ie ori null in intregime= ori sa cores$unda unei valori a c"eii $rimare asociate. &r"iectre !"#elului relti"nl Dia!rama 561 (entitate-relatie) este
un model ne4ormalizat $entru re$rezentarea
gra4ica a structurii relationale. (odelul B* im$arte elementele unui sistem real in doua categoriiA entitati si relatii ;legaturi= asocieri< intre aceste enti tati. G entitate $oate 4i o $ersoana= un loc= conce$t= activitate= eveniment care este semni4icativ $entru modelare. G relatie ;asociere< este o comunicare intre doua sau mai multe entitati= un ra$ort intre entitati. entru obtinerea schemei conceptuale a bazei de date relationale= se $leaca de la modelele conce$tuale ale datelor ;diagrama B*<. 50empluA Fie o institutie ce contine mai multe de$artamente= in care lucreaza salariati. Salariatii sunt atasati unor $roiecte= e/ecutand in cadrul acestora di4erite sarcini. Structura generala a modelului analizat este $rezentata in 4igura 1.A
Se $ot de4ini urmatoareleA 1. ntitati - S!L!*E!T= '!*T!(NT= *GE+T= S!*+EN! GbservatiiA ntitatile devin tabele in modelele relationale. +"eia $rimara identi4ica unic o entitate si 4ace distinctie intre valori di4erite ale entitatii. 2. *elatii - in modelul relational= devin tabele s$eciale sau coloane s$eciale care re4era c"ei $rimare ;inscrisWla= lucreazaWin= conduce= a$artine< 3. !tribut o $ro$rietate descri$tiva a unei entitati B relatii &r"iectre #i$r!ei entitte)reltie *E+R,
Se 4olosesc urmatoarele reguliA ntitatile se re$rezinta $rin dre$tung"iuri *elatiile se re$rezinta $rin arce neorientate 10
!tributele ce sunt c"ei $rimare sunt s$eci4icate $rin simbolul V +ardinalitatea ;numarul de tu$luri ale relatiei
'in diagrama B* se obtine sc"ema conce$tuala a bazei de date relationale. Se re$rezinta entitatile si legaturile dintre ele sub 4orma unor tabele s$eciale ;relatii<. 1e!ulile de conersie se bazeaza $e minimizarea numarului de valori null si a redundantei datelor= ast4elA a< Trans4ormarea entitatilor se bazeaza $e regulileA ntitatile inde$endente devin tabele inde$endente. +"eia $rimara nu contine c"ei e/terne. /em$luA entitatea inde$endenta S!L!*E!T genereaza un tabel inde$endent $entru care atributul cod7salariat este c"eia $rimara. ntitatile de$endente devin tabele de$endente. +"eia $rimara a entitatilor de$endente contine c"eia $rimara a entitatii de care de$inde $lus unul sau mai multe atribute aditionale. /em$luA c"eia $rimara a entitatii S!*+EN! este 4ormata din nr.W$roiect ;c"eia $rimara a entitatii *GE+T< si nr.Wsarcina. Subentitatile devin subtabele. b< Trans4ormarea relatiilor 4oloseste regulileA 11
*elatiile 1A1 si 1An devin c"ei e/terne. !st4el= relatia CconduceY devine coloana in tabelul '!*T!(NT si relatia XlucreazaWinY este coloana in tabelul S!L!*E!T. - Simbolul COD marc"eaza $lasamentul c"eii e/terne. - Simbolul COD - c"eia e/terna este continuta de c"eia $rimara. *elatia mAn devine un tabel s$ecial ;tabel asociativ< care are 2 c"ei e/terne $entru cele 2 tabele asociate. +"eia $rimara este 4ormata din com$unerea celor 2 c"ei e/terne $lus coloane aditionale. Se s$eci4ica $unctat. c< Trans4ormarea atributelor 4oloseste regulileA :n atribut singular devine o coloana. !tributele multi$le devin tabele de$endente ce contin c"eia $rimara a entitatii si atributul multi$lu. /em$luA un S!L!*E!T are mai multe numere de tele4on nr.Wtele4on este atribut multi$lu care genereaza tabelul de$endent TLFGN. /oncluzieA din diagrama B* se obtine diagrama conce$tuala ;4igura 3.< $entru $roiectarea modelului relational $rinA adaugarea tabelelor asociative marcarea c"eilor e/terne.
Schemele relationale obtinute suntA
1. S!L!*E!T;codWsalariatV= nume= $renume= salariu= lucreazaWin< 2. '!*T!(NT;codWde$artamentV= nume= localitate= conduce< 3. ENS+*ESWL!;codWsalariatV= nr.W$roiectV= 4unctie< 5. *GE+T;nr.W$roiectV= descriere= bugetWalocat< . S!*+EN!;nr.W$roiectV= nr.WsarcinaV= stare< 8. TLFGN;codWsalariatV= nr.Wtele4onV< 'eci ti$urile de tabele 4olosite in diagrama B* $ot 4iA inde$endente de$endente subtabele tabele asociative 12
Semni4icatia 4iecarui tabel si relatia dintre c"eie $rimara si c"eie e/terna sunt $rezentate in tabelul 2A 'abelul 2 tabel
reprezinta
cheia primara
inde$endent subtabel de$endent
entitate inde$endenta subentitate entitate de$endenta B atribute multi$le
asociativ
*elatie mAn B relatii de ti$ 3
nu contine c"ei e/terne contine o c"eie e/terna contine o c"eie e/terna si una sau mai multe coloane aditionale contine 2 sau mai multe c"ei e/terne si o$tional coloane aditionale
G relatie de ti$ 3 este o legatura intre 3 entitatiA S!L!*E!TWasociatWlaW*GE+TWinWF:N+TE!
Al$ebr relti"nl
! 4ost introdusa de . F. +odd ca o multime de o$eratii 4ormale actionand asu$ra unor relatii si avand ca rezultat alte relatii. &aza teoretica 4undamentala $entru limba,ele de interogare relationale o constituie cei o$t o$eratori introdusi de +odd $entru mani$ularea relatiilor. O'ert"rii l$ebrei relti"nle •
SELECT (operatorul selecţie) e/trage tu$luri ;linii< ce satis4ac o condiie s$eci4icat#
•
PROJECT (operatorul proiecţie) e/trage atributele s$eci4icate
•
UNION (operatorul reuniune) reune6te dou# relaii. G$eratorul :NEGN elimin#
automat liniile identice din rezultat •
INTERSECT (operatorul intersecţie) e/trage tu$luri care a$ar in ambele relatii este
o$erator binar comutativA 1 ∩ S = 1 − ; 1 − S < = S − ; S − 1< •
DIFFERENCE (operatorul dierenţa) e/trage tu$luri care a$ar intr-o relatie= dar nu
a$ar in cealalta. ste o$erator binar necomutativ. •
PRODUCT (operatorul produs carte!ian) genereaz# toate $erec"ile $osibile de
tu$luri= $rimul element al $erec"ii 4iind din $rima relaie= al doilea element din a doua relaie= 6.a.m.d. Fie *= S relatii de aritate n= res$ectiv m. rodusul cartezian al lui * cu S este multimea tu$lurilor de aritate nm unde $rimele n com$onente 4ormeaza un tu$lu in *= iar ultimele m com$onente 4ormeaza un tu$lu in S. DI"ISION (operatorul di#i!iune) e/trage valorile atributelor dintr-o relaie= care a$ar Zn toate valorile atributelor din cealalt# relaie= 4iind o$erator binar.
13
Fie dou# relaii * ;n< 6i S ;m<. !tunci 'EESEGN;*= S< ;sau 'EE';*= S<< $ermite selectarea acelor tu$luri de dimensiune n-m la care= ad#ug[nd orice tu$lu din S= se obine un tu$lu din *. G$eratorul 'EESEGN este legat de cuanti4icatorul universal X ∀ Y care nu e/ist# Zn limba,ul SL= dar $oate 4i simulat ast4elA Fie un $redicat ;/<. !tunci are loc identitateaA
JOIN (operatorul de co$punere% de &oncţiune) $ermite e/tragerea in4ormaiilor din
mai multe relaii corelate. Ionciunea este o combinaie de $rodus cartezian 6i selecie. Re$ulile lui C"##
En 19)= +odd a $ublicat un set de 13 reguli in ra$ort cu care un S%&' $oate 4i a$reciat ca relationalA 1e!ula re!ula !estionarii datelor :n S%&' relational trebuie sa 4ie ca$abil sa gestioneze o baza de date $rin $osibilitatile sale relationale. 1e!ula 2 re!ula reprezentarii informatiei Entr-o baza de date relationala= in4ormatia este re$rezentata la nivel logic sub 4orma unor tabele ;relatii<. 1e!ula 3 re!ula accesului !arantat la date Fiecare valoare dintr-o baza de date relationala trebuie sa $oata 4i adresata in mod logic $rintr-o combinatie 4ormata din numele relatiei= valoarea c"eii $rimare si numele atributului. 1e!ula 8 re!ula reprezentarii informatiei necunoscute :n sistem relational trebuie sa $ermita utilizatorului de4inirea unui ti$ de date numit null $entru re$rezentarea in4ormatiei necunoscute la momentul res$ectiv. 1e!ula # re!ula dictionarelor de date !su$ra descrierii bazei de date ;in4ormatii relative la relatii= vizualizari= indecsi< trebuie sa se $oata a$lica aceleasi o$eratii ca si asu$ra datelor din baza de date. 1e!ula 9 re!ula limba&ului de intero!are Trebuie sa e/iste cel $utin un limba, $entru mani$ularea bazei de date ;limba,ul SL<. 1e!ula : re!ula de actualizare a izualizarii :n S%&' trebuie sa $oata determina daca o vizualizare $oate 4i actualizata si sa stoc"eze rezultatul interogarii intrun dictionar de ti$ul unui catalog de sistem. 1e!ula ; re!ula limba&ului de niel inalt *egulile de mani$ulMare asu$ra unei relatii luata ca intreg sunt valabile atat $entru o$eratiile de regasire a datelor= cat si asu$ra o$eratiilor de inserare= actualizare si stergere a datelor. 1e!ula " re!ula independentei fizice a datelor rogramele de a$licatie nu de$ind de modul de stocare a datelor sau de modul de acces la date. 1e!ula < re!ula independentei lo!ice a datelor rogramele de a$licatie trebuie sa 4ie trans$arente la modi4icarile de orice ti$ e4ectuate asu$ra datelor. 1e!ula re!ula independentei datelor din punct de edere al inte!ritatii *egulile de integritate trebuie sa 4ie de4inite intr-un sublimba, relational= nu in $rogramul de a$licatie. 1e!ula 2 re!ula independentei datelor din punct de edere al distribuirii datelor 'istribuirea datelor $e mai multe calculatoare dintr-o retea de comunicatii de date= nu trebuie sa a4ecteze $rogramele de a$licatie.
15
re!ula ersiunii procedurale a unui SGBD Grice com$onenta $rocedurala a unui S%&' trebuie sa res$ecte aceleasi restrictii de integritate ca si com$onenta relationala. 'eoarece regulile lui +odd sunt $rea restrictive $entru a 4i res$ectate de un S%&' relational= s-au 4ormulat criterii minimale de de4inire a unui sistem de gestiune relational. :n SGBD este minimal relational dacaA toate datele bazei sunt re$rezentate $rin valori in tabele nu e/ista $ointeri observabili de catre utilizator sistemul su$orta o$eratorii relationali de $roiectie= selectie si com$unere naturala= 4ara limitari im$use din considerente interne. :n SGBD este complet relational daca este minimal relational si satis4ace in $lus conditiileA sistemul su$orta restrictiile de integritate de baza ;unicitatea c"eii $rimare= constrangerile re4erentiale= integritatea entitatii< sistemul su$orta toate o$eratiile de baza ale algebrei relationale. (ecanismele de lucru de care dis$une un S%&' relational suntA un limba, relational $entru descrierea datelor la nivel 4izic= logic si conce$tual un limba, relational $entru mani$ularea datelor mecanisme $entru controlul integritatii semantice a datelor mecanisme $entru o$timizarea cererilor de date mecanisme $entru asigurarea coerentei datelor utilitare $entru generarea de ra$oarte= a$licatii sau statistici re4eritoare la starea si activitatea bazei de date. 1e!ula 3
N"r!li%re reltiil"r
Normalizarea relatiilor conce$tuale $ermite obtinerea de relatii CmoleculareD= 4ara a $ierde nimic din in4ormatie= $entru a elimina redundanta si anomaliile reactualizarii in4ormatiilor. ste un $roces de ameliorare $rogresiva a unei sc"eme conce$tuale initiale a bazei de date relationale. 'u$a 4iecare eta$a de ameliorare= relatiile din baza de date ating un anumit grad de $er4ectiune= deci se a4la intr-a anumita forma normala. Trecerea unei relatii dintr-o 4orma normala in alta= $resu$une eliminarea unui anumit ti$ de de$endente nedorite= care sunt trans4ormate in de$endente care nu $rovoaca anomalii ;admisibile<. rocesul de ameliorare trebuie sa satis4aca cerinteleA sa garanteze conservarea datelor sa garanteze conservarea de$endentelor dintre date sa re$rezinte o descom$unere minimala a relatiilor initiale. =ecesitatea normalizarii deriva din $roblemele generate de anomalii. !nomaliile care a$ar in lucrul cu baze de date se $roduc datorita de$endentelor care e/ista intre datele bazei de date. /ista anomaliiA la inserare de date la modi4icare B stergere redundanta in date ;a$aritii re$etate< $robleme de recone/iune. Normalizarea $ermiteA su$rimarea redundantei logice 1
evitarea anomaliilor la reactualizare rezolvarea $roblemei recone/iunii. /ista o teorie matematica a normalizarii= al carei autor este . F. +odd= con4orm careia= se construiesc tabele standard ;4orme normale<. Grice 4orma normala se obtine a$licand o sc"ema de descom$unere. /ista 2 ti$uri de descom$uneriA - descom$uneri ce conserva de$endentele ; descom$unerea unei relatii * in $roiectii
>
* 1= …= * M A
1
= 1i < i =1
-
descom$uneri 4ara $ierderi de in4ormatie ; regula lui +ase-'elobel<. Re$ul Cse-)Del"bel
Fie *;!< o sc"ema relationala si \= ]= ^ o $artitie a lui !. resu$unem ca \ determina 4unctional $e ]. !tunciA 1; ,< = ?O@= ;∏ 1= ∏ 1< = unde \:] este multime atributelor care α ∪ Β α ∪γ intervin in de$endentele 4unctionale si \:^ este reuniunea determinantului cu restul atributelor lui !. F"r!ele n"r!le ale relatiilor dintr-o baza de date relationala sunt de4inite in
ra$ort cu anomaliile care $ot a$area in lucrul cu aceste relatii. Prima forma normala (*= )
G relatie este in FN 1 daca 4iecarui atribut care o descom$une ii cores$unde o valoare indivizibila ;atomica<. :n tu$lu nu trebuie sa contina atribute sau gru$uri de atribute re$etitive. !lgoritmul !FN-1 care aduce o relatie in FN 1 elimina atributele com$use si cele re$etitive. 2 *orma normala 2 (*= 2)
G relatie este in FN 2 daca si numai dacaA o *elatia * este in FN 1 o Fiecare atribut care nu este c"eie ;nu $artici$a la c"eia $rimara< este de$endent de intreaga c"eie $rimara. entru a obtine o relatie in FN 2 se $oate a$lica regula +ase-'elobelA 4ie relatia *;M 1= M 2= /= <= M 1= M 2 de4inesc c"eia $rimara= / si sunt multimi de atribute ast4el incat M 1 / ; rezulta ca * nu este in FN 2<. Solutia este inlocuirea lui * cu doua $roiectii * 1;M 1= M 2= < si * 2;M 1= /<. !lgoritmul !FN-2 de aducere a unei relatii in FN 2 elimina de$endentele 4unctionale $artiale din cadrul unor relatii a4late in FN 1. 3 *orma normala 3 (*= 3)
G relatie * este in FN 3 daca si numai dacaA o *elatia * este in FN 2 o Fiecare atribut care nu este c"eie ;nu $artici$a la o c"eie< de$inde direct de c"eia $rimara. 'in $unct de vedere 4ormal= o relatie * este in FN 3 daca si numai dacaA o *elatia * este in FN 2 o Fiecare atribut care nu este c"eie ;nu $artici$a la o c"eie< nu este de$endent tranzitiv de nici o c"eie a lui *. 18
Definitie (, este dependent tranziti de A <
Fie * o relatie= O o submultime de atribute ale lui * si ! un atribut al relatiei *. ! este de$endent tranzitiv de O dacaA ;∃< ast4el incat / si ! ;! ∉ si nu determina $e O<. entru a obtine o relatie FN 3 se $oate a$lica regula de descom$unere +ase-'elobel. !lgoritmul !FN-3 $entru aducerea unei relatii FN 2 in FN 3 elimina de$endentele 4unctionale tranzitive. *orma normala Boyce7/odd(B/=*)
G relatie * este in 4orma normala &oce-+odd daca si numai daca 4iecare determinant este o c"eie candidat ;sau $entru orice de$endenta 4unctionala totala O != O este o c"eie a lui *<. !lgoritmul !&+NF $entru aducerea unei relatii in &+NF elimina de$endentele 4unctionale ai caror determinanti nu sunt c"ei candidat. 8 *orma normala 8 (*= 8)
G relatie &+NF este in FN 5 daca $entru orice multide$endenta elementara de 4orma O _= O este o su$erc"eie a lui *. !ducerea relatiilor in FN 5 $resu$une eliminarea de$endentelor multivaloare atunci cand sunt mai mult de una in cadrul unei relatii. # *orma normala # (*= #)
*elatia * este in FN daca si numai dacaA o *elatia * este in FN 5 o Nu contine de$endente ciclice. !lgoritmul !FN- $entru aducerea unei relatii FN 5 in FN elimina ,oinde$endentele. /em$luA * IGEN ;IGEN;* 1= * 2<= * 3<
17
+a$itolul 3
%imba&ul S'% $ crearea tabelelor in (isual Fo)Pro
&re%entre $enerl
Limba,ul S:L ;Structured nglis" as uer Language< a 4ost $rezentat $entru $rima data ca un limba, de interogare in anul 1975= de catre +"amberlin si &oce. En 19)0= +"amberlin a sc"imbat denumirea S:L in SL ;Structured uer Language limba, structurat de interogare<. !NSE ;Enstitutul National !merican $entru Standarde< a $ublicat in 19)8 standardul SL !NSE 19)8= care de4inea comenzile de baza ale limba,ului SL= inclusiv $entru crearea de tabele si vederi ;create table si create vie@<. Limba,ul SL )8 nu continea o$tiuni de modi4icare a structurii sau stergere a obiectelor bazei ;alter= dro$< si comenzi $entru acordare si revocare de dre$turi utilizatorilor ;grant si revoMe<. !st4el= au 4ost necesare revizuirea si e/tinderea limba,ului. En 19)9 a$are limba,ul SL )9 recunoscut ca 4undament al multor S%&'-uri comerciale. Totusi= variantele comerciale ale di4eritilor $roducatori erau incom$atibile la nivel de detaliu. En 1992= a$are versiunea SL 92 cu multe 4acilitati incluse= $recumA Ionctiunea e/terna ;outer ,oin< •
1)
(odi4icarea sc"emei bazei de date ;alter= dro$= grant= revoMe< (odi4icari si stergeri re4erentiale in cascada !manarea veri4icarii restrictiilor Niveluri de consistenta a tranzactiilor. En 1999 a 4ost $ublicat un standard SL 3 care iese din s4era relationalului si a normalizarii relatiilor= asa cum au 4ost 4ormulate de +odd. rinci$alele orientari ale limba,ului SL 3 vizeaza trans4ormarea acestuia intr-un limba, com$let= in vederea de4inirii si gestionarii obiectelor com$le/e si $ersistente. !st4el= au 4ost introduseA (osteniri multi$le= $olimor4ismul= inca$sularea= caracteristici $reluate din limba,ele orientate $e obiecte Ti$uri de date de4inite de utilizator Su$ort $entru sisteme bazate $e gestiunea cunostintelor Enterogari recursive Enstrumente de administrare a datelor. • • • •
•
• • • •
Ti'urile #e #te #e(inite in stn#r#ul S.L / 01 sunt urmatoareleA
- S(!LLENT $entru numere intregi scurte ocu$a 5 $ozitii re$rezentate $e 18 biti - ENT%* sau ENT $entru numere intregi ;9 $ozitii re$rezentate $e 32 biti< - N:(*E+ ;$= s< sau '+E(!L ;$= s< sau '+ ;$= s< $entru memorarea datelor reale= cu un total de $ $ozitii= dintre care s la $artea 4ractionara - FLG!T $entru date reale re$rezentate in virgula mobila ;20 $ozitii $entru mantisa< - *!L $entru date reale e/$rimate in virgula mobila= cu $recizie mai mica decat FLG!T= dar la nivelul de intrare 4iind identice< - 'G:&L *+ESEGN $entru date reale e/$rimate in virgula mobila= in dubla $recizie ;30 $ozitii $entru mantisa< - +J!*;n< sau +J!*!+T*;n< $entru date de ti$ sir de caractere de lungime n ;ma/im 250< - !*+J!*;n< sau +J!* !*_EN%;n< sau +J!*!+T* !*_EN%;n< $entru date de ti$ sir de caractere de lungime variabila= ma/im 25 caractere - '!T $entru data calendaristica - TE( $entru ora - TE(ST!( $entru an= luna= zi= ora= minut= secunda= 4ractiuni de secunda. &rinci'lele ti'uri #e #te ("l"site in 2isul F"3&r"
+J!*!+T*;n< sau +;n<= LG%E+!L sau L= N:(&*;$=s< sau N;$=s<= ENT%* sau E= 'G:&L= '!T sau '= '!TTE( Crere unei b%e #e #te in 2isul F"3&r"
+rearea unei baze de date necesita cunostinte de administrare strict legate de $rodusul so4t@are de gestiune a bazei de date. lementele te"nice si 4izice caracteristice serverelor de baze de date= cum ar 4iA Gracle= SL Server= '&2= En4ormi/= suntA - S$atiile tabela ;table s$ace< 4olosite $entru alocarea de s$atiu $e disc $entru obiectele bazei - Segmentele de rollbacM sunt obiecte utilizate de sistem $entru salvarea datelor necesare validarii tranzactiilor 19
-
Fisierele de date si $rocesele sistem asociate sistemelor de gestiune de baze de date. +omanda de creare a unei baze de date in limba,ul SL isual Fo/ro esteA CREATE DATABASE [nume_baza_de_date | ?].
!rgumentul nume7baza7de7date este o$ional. Li$sa acestui argument determin# desc"iderea 4erestrei de dialog +reate= Zn care se cere introducerea unui nume $entru 4i6ierul baz# de date .dbc. ,plicatieA S# se creeze
o baz# de date FE*(! care s# gestioneze in4ormaii des$re anga,aii din de$artamentele unei 4irme= utilizand comenzile SL 6i isual Fo/$ro. +omanda de creare a bazei de date FE*(!A +*!T '!T!&!S 4irma &r"iectre b%ei #e #te
&aza de date FE*(! care gestioneaz# in4ormaii des$re anga,aii de$artamentelor unei 4irme conine urm#toarele tabeleA '!*T ;de$artamente<= cu detalii des$re de$artamente !N% ;anga,ai<= cu toi anga,aii 4irmei S!L%*' ;grade salarii<= cu detalii des$re gradele de salarizare. roiectarea bazei de date $ermite obinerea sc"emelor relaionale urm#toareA '!*T;nrde$artV= numede$art= loc< !N%;codangV= nume= 4unctie= manager= datan= salariu= comision= nrde$art< S!L%*';gradV= salmin= salma/<. Tabelul D5P,1' conine urm#toarele c[m$uriA nrde$art num#r de$artament= de ti$ number;2<= c"eie $rimar# numede$art nume de$artament= de ti$ c"ar;15< loc localitatea unde se a4l# de$artamentul= de ti$ c"ar;13<. Tabelul ,=G conine urm#toarele c[m$uriA codang codul anga,atului= de ti$ number;5<= c"eie $rimar# nume numele anga,atului= de ti$ c"ar;12< 4unctie 4uncia anga,atului= de ti$ c"ar;18< manager codul managerului anga,atului= de ti$ number;5< datan data na6terii= de ti$ date salariu salariul anga,atului= de ti$ number;12=2< comision comisionul anga,atului= de ti$ number;)< nrde$art num#rul de$artamentului Zn care lucreaz# anga,atul= de ti$ number;2<. Tabelul S ,LG1D conine urm#toarele c[m$uriA grad categoria de salarizare= de ti$ number;1< salmin salariul minim din categoria res$ectiv# de salarizare= de ti$ number;12=2< salma/ salariul ma/im din categoria res$ectiv#= de ti$ number;12=2<. 20
Sc"ema sim$li4icat# a bazei de date FE*(! ce conine tabelele 6i relaiile dintre ele este $rezentat# Zn 4igura 1A
Tabelul '!*T are c"eie $rimar# - coloana nrde$art= tabelul !N% are c"eie $rimar# - coloana codang 6i c"eie e/tern# coloana nrde$art= iar tabelul S!L%*' are c"eie $rimar# coloana grad. Crere tbelel"r
rogramul care creeaz# tabelele= 4#r# a stabili relaiile dintre ele 6i restriciile= este urm#torulA clear close databases open database firma.dbc create table depart( nrdepart n(2) , numedepart c(14), loc c(13)) create table ang( codang n(4), nume c(12), functie c(16),; manager n(4), datan d, salariu n(12,2),; comision n(8), nrdepart n(2) ) create table salgrd( grad n(1), salmin n(12,2), salmax n(12,2)) modify database close all
'u$a e/ecuia $rogramului de mai sus= este a4i6at# baza de date Zn 4ereastra 'atabase 'esigner ;4igura 2
21
A#4u$re restric5iil"r
`n limba,ul SL se $ot declara toate ti$urile de restricii $entru o baz# de date relaional#A - c"eie $rimar# atributul *E(!*_ _ - unicitate clauza :NE: - valori obligatorii ;nenule< o$iunea NGT N:LL Zn isual Fo/ro trebuie declarate atributele care $ot avea valori N:LL - restricii utilizator im$lementate sub 4orma regulilor de validare la nivel de c[m$= Znregistrare sau $ot 4i incluse Zn declan6atoare - restricii re4ereniale a$ar datorit# e/istenei c"eilor str#ine ;clauza FG*E%N _<. *estriciile re4ereniale $#streaz# integritatea bazei de date la e/ecuia anumitor o$eraii= $recumA la inserarea unei linii Zntr-o tabel# co$il sau modi4icarea unei c"ei str#ine ;se veri4ic# dac# noile valori se reg#sesc Zn liniile tabelului $#rinte< la 6tergerea unei linii dintr-o tabel# $#rinte ;4ie se 6terg Zn cascad# toate Znregistr#rile cores$ondente din tabelul co$il= 4ie se interzice 6tergerea<. 50emple
!d#ugarea restriciei c"eie $rimar# $entru coloana nrde$art ;tabelul de$art
izualizarea ;modi4icarea< structurii ;inclusiv c"eia $rimar#< se 4ace 4olosind comanda modify structure Table 'esigner etic"eta Ende/es ;4igura 3
22
!d#ugarea regulii de validare la nivel de c[m$A numede$art s# acce$te numai litere mariA
!"#$% #!&"$ depart !"#$% '"*+ numedepart car(14) ; '-$'(numedepart / upper(numedepart)) $%%% 0litere mari0
izualizarea regulii de validare se 4ace 4olosind comandaA modify structure Table 'esigner etic"eta Fields= selectare c[m$= seciunea Field validation= *ule 6i (essage ;4igura 5
!d#ugarea restriciei ca loc s# 4ac# $arte din listaA &ucure6ti= loie6ti= &ra6ov= +[m$ina= !rad= Ea6i
!"#$% #!&"$ depart !"#$% '"*+ loc car(13) ; '-$'(inlist(loc,0&ucuresti0,0loiesti0, 0&raso0, 0'ampina0, 0!rad0,; 0asi0)) $%%% 0&ucuresti, loiesti, &raso, 'ampina, !rad, asi0
(odi4icarea regulii de validare se $oate realiza Zn 4ereastra Table 'esigner= Fields= selectare c[m$= *ule= /$ression &uilder ;4igura
23
!d#ugarea restriciei de c"eie $rimar# $entru coloana codang ;tabelul ang<= 4olosind Table 'esignerA etic"eta Ende/es numele inde/ului codang= ti$ul inde/ului $rimar= ca etic"et# e/$resia codang ;4igura 8
!d#ugarea regulii de validare la nivel de c[m$A nume s# aib# $rima liter# mare= iar celelalte litere mici 6i 4uncie s# aib# numai litere mari Zn mod vizual ;4ereastra Table 'esigner B Fields B Field validation B /$ression &uilder<= 4igura 7A
25
!d#ugarea restriciei N:LL $entru coloanele manager 6i comisionA !"#$% #!&"$ ang !"#$% '"*+ manager null !"#$% #!&"$ ang !"#$% '"*+ comision null
!d#ugarea c"eii e/terne $entru tabelul ang= coloana nrde$art coloana comun# cu coloana nrde$art ;tabelul $#rinte de$art
!"#$% #!&"$ ang ! 5%$+ $7 nrdepart; #! nrdepart %$5$%$+'$ depart
+omanda !D"#$ DATABASE $ermite vizualizarea relaiei dintre tabelul $#rinte Xde$artY 6i tabelul co$il XangY ;4igura )< coloana nrde$art este c"eie $rimar# Zn tabelul $#rinte 6i c"eie e/tern# Zn tabelul co$ilA
!d#ugarea restriciei re4ereniale urm#toareA la modi4icarea c"eii $rimare nrde$art din tabelul de$art= s# se modi4ice Zn cascad# 6i valorile cores$ondente din tabelul co$il angA se activeaz# 4ereastra 'atabase 'esigner= a$are meniul 'atabase= se alege o$iunea +lean :$ 'ata&ase se 4olose6te o$iunea dit *e4erential Entegrit ;4igura 9
2
-
se activeaz# etic"eta *ules 4or :$dating= a$oi se alege o$iunea /ascade +pdates all
related records in the child table .ith the ne. >ey alue
+rearea indec6ilor Zn mod vizual= 4olosind ro,ect (anager `n isual Fo/$ro e/ist# urm#toarele ti$uri de indec6iA - rimar $entru declararea c"eii $rimare - +andidat are aceea6i semni4icaie ca 6i cel $rimar - *egular $ermite du$licarea valorilor= 4iind 4olosit $entru c"eile str#ine sau $entru crearea de indec6i $entru o$timizarea accesului la Znregistr#ri - :niue genereaz# Zn 4i6ierul inde/ doar valori unice ale e/$resiei de inde/are.
50emplu
-
+reai un inde/ $entru tabelul salgrd= coloana grad= Zn mod vizualA se desc"ide baza de date FE*(! 4olosind ro,ect (anager se selecteaz# tabelul salgrd se activeaz# butonul (odi4= etic"eta Ende/es 6i se s$eci4ic#A o numele inde/ului grad ti$ul rimar= o ordinea de sortare ascendenta 6i o e/$resia grad. Er"ri cre '"t 're 6n c%ul ("l"sirii in#ec7il"r
(otorul de baz# de date isual Fo/$ro nu actualizeaz# Zntotdeauna la tim$ indec6ii= du$# actualiz#rile e4ectuate Zn baza de date>Fo&ra02?. G soluie este veri4icarea integrit#ii bazei de date= ast4elA close all open database firma alidate database recoer 99 figura 1:
28
'ac# un obiect nu este valid 6i nu este re4#cut automat= el trebuie 6ters 6i reconstruit= a$oi se re4ac restriciile re4ereniale. Crere c"!'let4 tbelel"r ("l"sin# un 'r"$r! 2isul F"3&r" clear close databases open database firma.dbc create table depart( ; nrdepart number(2) primary ey, numedepart car(14) ; cec(numedepart/upper(numedepart)); error 0se accepta numai litere mari0, ; loc car(13) cec(inlist(loc,0&ucuresti0,0loiesti0,; 0&raso0,0'ampina0,0!rad0,0asi0)); $%%% 0se accepta numai; localitatile din lista &ucuresti, loiesti, &raso, 'ampina,; !rad, asi0) create table ang( ; codang number(4) primary ey,; nume car(12) cec(nume/proper(nume)); error 0prima litera este mauscula, celelalte < litere mici0, ; functie car(16) cec(functie/upper(functie)); error 0se accepta numai litere mari0 ,; manager number(4) null, datan date ,; salariu number(12,2),; comision number(8) null, nrdepart number(2),; foreign ey nrdepart tag nrdepart references; depart tag nrdepart; ) create table salgrd( grad number(1) primary ey,; salmin number(12,2), salmax number(12,2);
27
) modify database close all
'u$# e/ecuia $rogramului= se creeaz# com$let baza de date FE*(! ;tabelele= restriciile= indec6ii<= 4igura 11A
Obseraii
&aza de date FE*(! conine tabeleleA '!*T 6i !N% Zn relaie $#rinte co$il 6i S!L%*' tabelul '!*T are c"eie $rimar# nrde$art= !N% are c"eie $rimar# codang= c"eie e/tern# nrde$art 6i tabelul S!L%*' are c"eie $rimar# grad $entru a4i6area= 6tergerea sau modi4icarea unui tabel= se e4ectueaz# clicM drea$ta $e tabelul res$ectiv $entru alegerea o$iunii res$ectiveA &ro@se= 'elete= (odi4.
2)