Baze de Date Oracle - Limbajul SQL

download Baze de Date Oracle - Limbajul SQL

of 220

Transcript of Baze de Date Oracle - Limbajul SQL

INTRODUCERE n contextul dezvoltrii societii informaionale o serie de concepte, cunoscute altdat doar de specialiti, au devenit familiare unui numr mare de utilizatori ai tehnologiei informaiei. O mare parte dintre acetia utilizeaz, poate nu tocmai corect, conceptele de: baze de date, sistem de gestiune a bazei de date, sistem de baze de date. n limbajul curent ele, uneori, sunt confundate ca semnificaie, dar, pentru specialiti semnific altceva. Titlul crii se refer doar la conceptul de baz de date realizat n sistemul Oracle cu limbajul SQL. n capitolul 1 se trateaz aceste concepte absolut necesare unui utilizator, specialist n informatic sau simplu utilizator, pentru a crea i exploata o baz de date. Celelalte capitole trateaz aspectele privind crearea, actualizarea i exploatarea unei baze de date, n diverse moduri, cu limbajul SQL din sistemul Oracle. Pentru aceasta, n capitolul 2, se prezint facilitile i arhitectura sistemului Oracle, de altfel un sistem cu multe faciliti i n continu dezvoltare. n celelalte capitole se urmrete pas cu pas crearea, ncrcarea, actualizarea i exploatarea unei baze de date. Cartea se ncheie cu dou aplicaii definite i realizate n cadrul orelor de curs i laborator la disciplina Sistemul de gestiune a bazelor de date Oracle. De altfel, exemplele din carte au constituit suportul practic de la disciplinele Baze de date si Sisteme de gestiune a bazelor de date, fiind un punct de plecare pentru ntocmirea lucrrilor i a proiectelor de an. n concluzie, pot spune c fundamentele teoretice, multitudinea exemplelor prezentate ofer studenilor i specialitilor n informatic posibilitatea de a proiecta i utiliza baze de date n sistemul Oracle. Cartea este util studenilor de la forma de nvmnt ZI i IDD care studiaz disciplinele de Baze de date si Sisteme de gestiune a bazelor de date. Mulumesc colegilor din cadrul colectivului Baze de date al Catedrei de Informatic Economic, ASE Bucureti care au citit aceast carte i au fcut observaii pentru mbuntirea coninutului ei. Mulumesc doctoranzilor Adela Bra i Anca Fodor care m-au ajutat la sistematizarea i tehnoredactarea acestei cri. 27 septembrie 2005 Autorul

1

CAPITOLUL 1. TEORIA BAZELOR DE DATE RELAIONALE1.1. MODELUL RELAIONAL Modelul relaional a fost propus de ctre IBM i a revoluionat reprezentarea datelor fcnd trecerea la generaia a doua de baze de date. Modelul este simplu, are o solid fundamentare teoretic fiind bazat pe teoria seturilor (ansamblurilor) i pe logica matematic. Pot fi reprezentate toate tipurile de structuri de date de mare complexitate, din diferite domenii de activitate. Modelul relaional este definit prin: structura de date, operatorii care acioneaz asupra structurii i restriciile de integritate. 1) Conceptele utilizate pentru definirea structurii de date sunt: domeniul, tabela (relaia), atributul, tuplul, cheia i schema tabelei. Domeniu este un ansamblu de valori caracterizat printr-un nume. El poate fi explicit sau implicit. Tabela/relaia este un subansamblu al produsului cartezian al mai multor domenii, caracterizat printr-un nume, prin care se definesc atributele ce aparin aceleai clase de entiti. Atributul este coloana unei tabele, caracterizat printr-un nume. Cheia este un atribut sau un ansamblu de atribute care au rolul de a identifica un tuplu dintr-o tabel. Tipuri de chei: primare/alternate, simple/comune, externe. Tuplul este linia dintr-o tabel i nu are nume. Ordinea liniilor (tupluri) i coloanelor (atribute) dintr-o tabel nu trebuie s prezinte nici-o importan. Schema tabelei este format din numele tabelei, urmat ntre paranteze rotunde de lista atributelor, iar pentru fiecare atribut se precizeaz domeniul asociat. Schema bazei de date poate fi reprezentat printr-o diagram de structur n care sunt puse n eviden i legturile dintre tabele. Definirea legturilor dintre tabele se face logic construind asocieri ntre tabele cu ajutorul unor atribute de legtur. Atributele implicate n realizarea legturilor se gsesc fie n tabelele asociate, fie n tabele distincte construite special pentru legturi. Atributul din tabela iniial se numete cheie extern iar cel din tabela final este cheie primar. Legturile posibile sunt 1:1, 1:m, m:n. Potenial, orice tabel se poate lega cu orice tabel, dup orice atribute.

2

Legturile se stabilesc la momentul descrierii datelor prin limbaje de descriere a datelor (LDD), cu ajutorul restriciilor de integritate. Practic, se stabilesc i legturi dinamice la momentul execuiei. 2) Operatorii modelului relaional sunt operatorii din algebra relaional i operatorii din calculul relaional. Algebra relaional este o colecie de operaii formale aplicate asupra tabelelor (relaiilor), i a fost conceput de E.F.Codd. Operaiile sunt aplicate n expresiile algebrice relaionale care sunt cereri de regsire. Acestea sunt compuse din operatorii relaionali i operanzi. Operanzii sunt ntotdeauna tabele (una sau mai multe). Rezultatul evalurii unei expresii relaionale este format dintr-o singur tabel. Algebra relaional are cel puin puterea de regsire a calcului relaional. O expresie din calculul relaional se poate transforma ntr-una echivalent din algebra relaional i invers. Codd a introdus ase operatori de baz (reuniunea, diferena, produsul cartezian, selecia, proiecia, jonciunea) i doi operatori derivai (intersecia i diviziunea). Ulterior au fost introdui i ali operatori derivai (speciali). n acest context, operatorii din algebra relaional pot fi grupai n dou categorii: pe mulimi i speciali. Operatori pe mulimi (R1, R2, R3 sunt relaii (tabele)) sunt: Reuniunea. R3 = R1 R2, unde R3 va conine tupluri din R1 sau R2 luate o singur dat; Diferena. R3 = R1 \ R2, unde R3 va conine tupluri din R1 care nu se regsesc n R2; Produsul cartezian. R3 = R1 R2, unde R3 va conine tupluri construite din perechi (x1x2), cu x1R1 i x2R2; Intersecia. R3 = R1 R2, unde R3 va conine tupluri care se gsesc n R1 i R2 n acelai timp, etc. Operatori relaionali speciali sunt: Selecia. Din R1 se obine o subtabel R2, care va conine o submulime din tuplurile iniiale din R1 ce satisfac un predicat (o condiie). Numrul de atribute din R2 este egal cu numrul de atribute din R1. Numrul de tupluri din R2 este mai mic dect numrul de tupluri din R1. Proiecia. Din R1 se obine o subtabel R2, care va conine o submulime din atributele iniiale din R1 i fr tupluri duplicate. Numrul de atribute din R2 este mai mic dect numrul de atribute din R1. Jonciunea este o derivaie a produsului cartezian, ce presupune utilizarea unui calificator care s permit compararea valorilor

3

unor atribute din R1 i R2, iar rezultatul n R3. R1 i R2 trebuie s aib unul sau mai multe atribute comune care au valori comune. Algebra relaional este prin definiie neprocedural (descriptiv), iar calculul relaional permite o manier de cutare mixt (procedural/neprocedural). Calculul relaional se bazeaz pe calculul predicatelor de ordinul nti (domeniu al logicii) i a fost propus de E.F. Codd. Predicatul este o relaie care se stabilete ntre anumite elemente i care poate fi confirmat sau nu. Predicatul de ordinul 1 este o relaie care are drept argumente variabile care nu sunt predicate. Variabila poate fi de tip tuplu (valorile sunt dintr-un tuplu al unei tabele) sau domeniu (valorile sunt dintr-un domeniu al unei tabele). Cuantificatorii (operatorii) utilizai n calculul relaional sunt: universal () i existenial (). Construcia de baz n calculul relaional este expresia relaional de calcul tuplu sau domeniu (funcie de tipul variabilei utilizate). Expresia relaional de calcul este format din: operaia de efectuat, variabile (tuplu respectiv domeniu), condiii (de comparaie, de existen), formule bine definite (operanzi-constante, variabile, funcii, predicate; operatori), cuantificatori. Pentru implementarea acestor operatori exist comenzi specifice n limbajele de manipulare a datelor (LMD) din sistemele de gestiune a bazelor de date relaionale (SGBDR). Aceste comenzi sunt utilizate n operaii de regsire (interogare). Dup tehnica folosit la manipulare, LMD sunt bazate pe: calculul relaional (QUEL n Ingres, ALPHA propus de Codd); algebra relaional (ISBL, RDMS); transformare (SQL, SQUARE); grafic (QBE, QBF). Transformarea ofer o putere de regsire echivalent cu cea din calculul i algebra relaional. Se bazeaz pe transformarea (mapping) unui atribut sau grup de atribute ntr-un atribut dorit prin intermediul unor relaii. Rezultatul este o relaie (tabel) care se poate utiliza ntr-o alt transformare. Grafica ofer interactivitate mare pentru constrirea cererilor de regsire. Utilizatorul specific cerea alegnd sau completnd un ecran structurat grafic. Poate fi folosit de ctre toate categoriile de utilizatori n informatic. 3) Restriciile de integritate ale modelului relaional sunt structurale i comportamentale.

4

Restriciile structurale sunt: Restricia de unicitate a cheii. ntr-o tabel nu trebuie s existe mai multe tupluri cu aceeai valoare pentru ansamblul cheie; Restricia referenial. Intr-o tabel t1 care refer o tabel t2, valorile cheii externe trebuie s figureze printre valorile cheii primare din t2 sau s ia valoarea null (neprecizat); Restricia entitii. Intr-o tabel, atributele din cheia primar nu trebuie s ia valoarea NULL. Cele trei restricii de mai sus sunt minimale. Pe lng acestea, exist o serie de alte restricii structurale care se refer la dependenele dintre date: funcionale, multivaloare, jonciune etc. (sunt luate n considerare la tehnicile de proiectare a bazelor de date relaionale - BDR). Restriciile de comportament sunt cele care se definesc prin comportamentul datelor i in cont de valorile din BDR: Restricia de domeniu. Domeniul corespunztor unui atribut dintro tabel trebuie s se ncadreze ntre anumite valori; Restricii temporare. Valorile anumitor atribute se compar cu nite valori temporare (rezultate din calcule etc.). Restriciile de comportament fiind foarte generale se gestioneaz fie la momentul descrierii datelor (de exemplu prin clauza CHECK), fie n afara modelului la momentul execuiei. Restriciile de integritate suportate de Oracle sunt: NOT NULL nu permite valori NULL n coloanele unei tabele; UNIQUE nu sunt permise valori duplicat n coloanele unei tabele; PRIMARY KEY nu permite valori duplicate sau NULL n coloana sau coloanele definite astfel; FOREIGN KEY presupune ca fiecare valoare din coloana sau setul de coloane defini astfel s aib o valoare corespondent identic n tabela de legtur, tabel n care coloana corespondent este definit cu restricia UNIQUE sau PRIMARY KEY; CHECK elimin valorile care nu satisfac anumite cerine (condiii) logice. Termenul de chei (keys) este folosit pentru definirea ctorva categorii de constrngeri i sunt: primary key, unique key, foreign key, referenced key. Se consider c modelul relaional are o serie de limite cum ar fi: Simplitatea modelului l face dificil de aplicat pentru noile tipuri

5

de aplicaii (multimedia, internet etc.); Nu asigur o independen logic total a datelor de aplicaie; Poate crete redundana datelor. 1.2. BAZE DE DATE RELAIONALE Bazele de date relaionale (BDR) utilizeaz modelul de date relaional i noiunile aferente. BDR au o solid fundamentare teoretic, n special prin cercetrile de la IBM conduse de E.F.Codd. BDR este un ansamblu organizat de tabele (relaii) mpreun cu legturile dintre ele. Concepte utilizate la organizarea datelor n BDR i respectiv fiiere sunt prezentate n tabelul 1.1. Concepte utilizate n organizarea datelorFiiere BDR fiier tabel(relaie) nregistrare tuplu (linie) cmp atribut(coloan) Tabelul 1.1. valori domeniu valori

Avantajele BDR fa de fiiere sunt prezentate n tabelul 1.2. Avantajele BDRCRITERIU Independena datelor Niveluri de structurare Deschidere i portabilitate Reprezentarea i utilizarea datelor Structura de date se pstreaz BDR logic i fizic conceptual, logic i fizic mare simplificat prin model n dicionarul BDR Tabelul 1.2. FIIERE fizic logic i fizic mic complicat n programe.

Atunci cnd dorim s realizm o baz de date relaional trebuie s tim clar ce avem de fcut, adic s stabilim obiectivele activitii noastre. n acest sens, cteva dintre cele mai importante obiective, le prezentm n continuare: Partiionarea semnific faptul c aceleai date trebuie s poat fi folosite n moduri diferite de ctre diferii utilizatori; Deschiderea se refer la faptul c datele trebuie s fie uor adaptabile la schimbrile care pot aprea (actualizarea structurii, tipuri noi de date etc.); Eficiena are n vedere stocarea i prelucrarea datelor, care trebuie

6

s se fac la costuri ct mai sczute, costuri care s fie inferioare beneficiilor obinute; Reutilizarea nseamn faptul c fondul de date existent trebuie s poat fi reutilizat n diferite aplicaii informatice; Regsirea este o actvitate frecvent pe bazele de date i de aceea cererile de regsire trebuie s poat fi adresate uor de ctre toate categoriile de utilizatori, dup diferite criterii; Accesul nseamn modul de localizare a datelor i acest lucru trebuie s poat fi realizat prin diferite moduri de acces, rapid i uor; Modularizarea presupune faptul c realizarea BDR trebuie s se poat face modular pentru generalitate i posibilitatea lucrului n echip; Protecia bazei de date trebuie asigurat sub ambele aspecte: securitatea i integritatea datelor; Redundana se asigur n limite acceptabile prin implementarea unui model de date pentru baze de date i prin utilizarea unei tehnici de proiectare a BDR. Se asigur astfel, o redundan minim i controlat; Independena datelor fa de programe trebuie asigurat att la nivel logic ct i i fizic. Bazele de date relaionale au evoluat ca un tip special de aplicaii informatice, i anume cele care au organizarea datelor n memoria extern conform unui model de date specific. De aceea, n metodologia de realizare a BDR se parcurg, n cea mai mare parte, cam aceleai etape ca la realizarea unei aplicaii informatice, cu o serie de aspecte specifice. Pe de alt parte, n literatura de specialitate, sunt diferite propuneri de metodologii de realizare a bazelor de date. innd cont de cele dou aspecte de mai sus, sunt propuse cteva actviviti care trebuie parcurse la realizarea unei baze de date. Aceste activiti vor fi regsite, sub aceeai denumire sau sub denumiri diferite, n majoritatea metodologiilor de realizare a bazelor de date, din literatura de specialitate. Activitile (etapele) parcurse pentru realizarea unei BDR sunt: analiza de sistem, proiectarea noului sistem, realizarea componentelor logice, punerea n funciune, dezvoltarea. 1) Scopul analizei de sistem este de a evidenia cerinele aplicaiei i resursele utilizate (studiul), precum i de a evalua aceste cerine prin modelare (analiza).

7

Studiul situaiei existente se realizeaz prin: definirea caracteristicilor generale ale unitii, identificarea activitilor desfurate, identificarea resurselor existente (informaionale, umane, energetice, echipamente, financiare etc.), identificarea necesitilor de prelucrare. Analiza este o activitate de modelare (conceptual) i se realizeaz sub trei aspecte: structural, dinamic i funcional. a) Analiza structural evideniaz, la nivel conceptual, modul de structurare a datelor i a legturilor dintre ele. Cea mai utilizat tehnic este entitate-asociere. Aceasta conine: Identificarea entitilor: fenomene, procese, obiecte concrete sau abstracte (substantivele din prezentarea activitii descrise) (exemple de entiti: Persoane, Produse, Beneficiari). Identificarea asocierilor dintre entiti ca fiind legturile semnificative de un anumit tip (verbele din prezentarea activitii descrise). Identificarea atributelor ce caracterizeaz fiecare entitate n parte (exemple de atribute: Marca, Nume, Adres). Stabilirea atributelor de identificare unic a realizrilor entitii, drept chei. Rezultatul analizei structurale este modelul static (structural) numit i diagrama entitate-asociere. Diagrama entitate-asociere (EntityRelationship) poate fi generat cu produse software tip CASE (Computer Aided Software Engineering), ca de exemplu Oracle Designer. Pornind de la o astfel de diagram, se pot construi, n actvitatea de proiectare, schemele relaiilor (tabelelor). b) Analiza dinamic evideniaz comportamentul elementelor sistemului la anumite evenimente. Una din tehnicile utilizate este diagrama stare-tranziie. Aceasta presupune: Identificarea strilor n care se pot afla componentele sistemului. Identificarea evenimentelor care determin trecerea unei componente dintr-o stare n alta. Stabilirea tranziiilor admise ntre stri. Construirea diagramei stare-tranziie. Rezultatul analizei dinamice este modelul dinamic. c) Analiza funcional evideniaz modul de asigurare a cerinelor informaionale (fluxul prelucrrilor) din cadrul sistemului, prin care intrrile sunt transformate n ieiri. Cea mai utilizat tehnic este diagrama de flux al datelor. Conform acestei tehnici se delimiteaz: Aria de cuprindere a sistemului. Se identific sursele de date.

8

Se identific modul de circulaie i prelucrare a datelor. Se identific apoi rezultatele obinute. Rezultatul analizei funcionale este modelul funcional. 2) Proiectarea structurii bazei de date se face pe baza modelelor realizate n activitatea de analiz. Inainte de proiectarea bazei de date se alege tipul de sistem de gestiune a bazei de date. Alegerea SBGD-ului se face innd cont de dou aspecte: cerinele aplicaiei (utilizatorului) i performanele tehnice ale SGBD-ului. Cerinele aplicaiei se refer la: volumul de date estimat a fi memorat i prelucrat n BDR; complexitatea problemei de rezolvat; ponderea i frecvena operaiilor de intrare/ieire; condiiile privind protecia datelor; operaiile necesare (ncrcare/validare, actualizare, regsire etc.); particularitile activitii pentru care se realizeaz baza de date. Performanele tehnice ale SGBD-ului se refer la: modelul de date pe care-l implementeaz; ponderea utilizrii SGBD-ului pe pia i tendina; configuraia de calcul minim cerut; limbajele de programare din SGBD; facilitile de utilizare oferite pentru diferite categorii de utilizatori; limitele SGBD-ului; optimizrile realizate de SGBD; facilitile tehnice; lucrul cu mediul distribuit i concurena de date; elementele multimedia; instrumentele CASE; interfeele de comunicare; posibilitatea de autodocumentare; instrumentele specifice oferite. Proiectarea BDR se realizeaz prin proiectarea schemelor BDR i proiectarea modulelor funcionale specializate. Schemele bazei de date sunt: conceptual, extern i intern. a) Proiectarea schemei conceptuale pornete de la identificarea setului de date necesar sistemului. Aceste date sunt apoi integrate i structurate ntr-o schem (exemplu: pentru BDR relaionale cea mai utilizat tehnic este normalizarea). Pentru acest lucru se parcurg paii: Stabilirea schemei conceptuale iniiale care se deduce din modelul entitate-asociere (vezi analiza structural). Pentru acest lucru, se transform fiecare entitate din model ntr-o colecie de date (fiier), iar pentru fiecare asociere se definesc cheile aferente. Dac rezult colecii izolate, acestea se vor lega de alte colecii prin chei rezultnd asocieri (1:1, 1:m, m:n). Ameliorarea progresiv a schemei conceptuale prin eliminarea unor anomalii (exemplu: cele cinci forme normale pentru BDR relaionale). Stabilirea schemei conceptuale finale trebuie s asigure un echilibru ntre cerinele de actualizare i performanele de exploatare (exemplu: o form normal superioar asigur

9

performane de actualizare, dar timpul de rspuns va fi mai mare). Tehnica de normalizare este utilizat n activitatea de proiectare a structurii BDR i const n eliminarea unor anomalii (neajunsuri) de actualizare din structur. Anomaliile de actualizare sunt situaii nedorite care pot fi generate de anumite tabele n procesul proiectrii lor: Anomalia de tergere semnific faptul c stergnd un tuplu dintro tabel, pe lng informaiile care trebuie terse, se pierd i informaiile utile existente n tuplul respectiv; Anomaliile de adugare semnific faptul c nu pot fi incluse noi informaii necesare ntr-o tabel, deoarece nu se cunosc i alte informaii utile (de exemplu valorile pentru cheie); Anomalia de modificare semnific faptul c este dificil de modificat o valoare a unui atribut atunci cnd ea apare n mai multe tupluri. Normalizarea este o teorie construit n jurul conceptului de forme normale (FN), care amelioreaz structura BDR prin nlturarea treptat a unor neajunsuri i prin imprimarea unor faciliti sporite privind manipularea datelor. Normalizarea utilizeaz ca metod descompunerea (top-down) unei tabele n dou sau mai multe tabele, pstrnd informaii (atribute) de legtur. FN1. O tabel este n FN1 dac toate atributele ei conin valori elementare (nedecompozabile), adic fiecare tuplu nu trebuie s aib date la nivel de grup sau repetitiv. Structurile de tip arborescent i reea se transform n tabele cu atribute elemntare. O tabel n FN1 prezint nc o serie de anomalii de actualizare datorit eventualelor dependene funcionale incomplete. Fiecare structur repetitiv genereaz (prin descompunere) o nou tabel, iar atributele la nivel de grup se nltur, rmnnd doar cele elemntare. FN2. O tabel este n FN2 dac i numai dac este n FN1 i fiecare atribut noncheie al tabelei este dependent funcional complet de cheie. Un atribut B al unei tabele depinde funcional de atributul A al aceleiai tabele, dac fiecrei valori a lui A i corespunde o singur valoare a lui B, care i este asociat n tabel. Un atribut B este dependent funcional complet de un ansamblu de atribute A n cadrul aceleiai tabele, dac B este dependent funcional de ntreg ansamblul A (nu numai de un atribut din ansamblu). O tabel n FN2 prezint nc o serie de anomalii de actualizare, datorit eventualelor dependene tranzitive.

10

Eliminarea dependenelor incomplete se face prin descompunerea tabelei iniiale n dou tabele, ambele coninnd atributul intermediar (B). FN3. O tabel este n FN3 dac i numai dac este n FN2 i fiecare atribut noncheie depinde n mod netranzitiv de cheia tabelei. ntr-o tabel T, fie A,B,C trei atribute cu A cheie. Dac B depinde de A (A B) i C depinde de B (B C) atunci C depinde de A n mod tranzitiv. Eliminarea dependenelor tranzitive se face prin descompunerea tabelei iniiale n dou tabele, ambele coninnd atributul intermediar (B). O tabel n FN3 prezint nc o serie de anomalii de actualizare, datorate eventualelor dependene multivaloare. O definiie mai riguroas pentru FN3 a fost dat prin forma intermediar BCNF (Boyce Codd Normal Form): o tabel este n BCNF dac fiecare determinant este un candidat cheie.Determinantul este un atribut elementar sau compus fa de care alte atribute sunt complet dependente funcional. FN4. O tabel este n FN4 dac i numai dac este n FN3 i nu conine dou sau mai multe dependene multivaloare. ntr-o tabel T, fie A,B,C trei atribute. n tabela T se menine dependena multivaloare A dac i numai dac mulimea valorilor lui B ce corespunde unei perechi de date (A,C), depinde numai de o valoare a lui A i este independent de valorile lui C. FN5. O tabel este n FN5 dac i numai dac este n FN4 i fiecare dependen jonciune este generat printr-un candidat cheie al tabelei. n tabela T (A,B,C) se menine dependena jonciune (AB, AC) dac i numai dac T menine dependena multivaloare A -->> B sau C. Dependena multivaloare este caz particular al dependenei jonciune. Dependena funcional este caz particular al dependenei multivaloare. b) Proiectare schemei externe are rolul de a specifica viziunea fiecrui utilizator asupra BDR. Pentru acest lucru, din schema conceptual se identific datele necesare fiecrei viziuni. Datele obinute se structureaz logic n subscheme innd cont de facilitile de utilizare i de cerinele utilizator. Schema extern devine operaional prin construirea unor viziuni (view) cu SGBD-ul i acordarea drepturilor de acces. Datele ntr-o viziune pot proveni din una sau mai multe colecii i nu ocup spaiul fizic. c) Proiectarea schemei interne presupune stabilirea structurilor de memorare fizic a datelor i definirea cilor de acces la date. Acestea sunt specifice fie SGBD-ului (scheme de alocare), fie sistemului de operare. Proiectarea schemei interne nseamn estimarea spaiului fizic pentru BDR, definirea unui model fizic de alocare (a se vedea dac SGBD-ul permite explicit acest lucru) i definirea unor indeci pentru accesul direct, dup

11

cheie, la date. Proiectarea modulelor funcionale ine cont de concepia general a BDR, precum i de schemele proiectate anterior. n acest sens, se proiecteaz fluxul informaional, modulele de ncrcare i manipulare a datelor, interfeele specializate, integrarea elementelor proiectate cu organizarea i funcionarea BDR. 3) Realizarea componentelor logice. Componentele logice ale unei BD sunt programele de aplicaie dezvoltate, n cea mai mare parte, n SGBD-ul ales. Programele se realizeaz conform modulelor funcionale proiectate n etapa anterioar. Componentele logice in cont de ieiri, intrri, prelucrri i coleciile de date. n paralel cu dezvoltarea programelor de aplicaii se ntocmesc i documentaiile diferite (tehnic, de exploatare, de prezentare). 4) Punerea n funciune i exploatarea. Se testeaz funciile BDR mai nti cu date de test, apoi cu date reale. Se ncarc datele n BDR i se efectueaz procedurile de manipulare, de ctre beneficiar cu asistena proiectantului. Se definitiveaz documentaiile aplicaiei. Se intr n exploatare curent de ctre beneficiar conform documentaiiei. 5) Dezvoltarea sistemului. Imediat dup darea n exploatare a BDR, n mod continuu, pot exista factori perturbatori care genereaz schimbri n BDR. Factorii pot fi: organizatorici, datorai progresului tehnic, rezultai din cerinele noi ale beneficiarului, din schimbarea metodologiilor etc. 1.3. DEFINIREA SISTEMULUI DE GESTIUNE A BAZELOR DE DATE RELAIONALE (SGBDR) Teoria relaional, foarte bine pus la punct ntr-un domeniu de cercetare distinct, a dat o fundamentare solid realizrii de SGBD-uri performante. La sfritul anilor 80 i apoi n anii 90 au aprut, n special o dat cu ptrunderea n mas a microcalculatoarelor, numeroase SGBDR-uri. Aceasta a nsemnat o evoluie de la SGBD-urile de generaia nti (arborescente i reea) spre cele de generaia a doua (relaionale). Aceast evoluie s-a materializat, n principal n: oferirea de limbaje de interogare neprocedurale, mbuntirea integritii i securitii datelor, optimizarea i simplificarea acceselor. Teoria relaional este un ansamblu de concepte, metode i instrumente care a dat o fundamentare riguroas realizrii de SGBDR performante. Paralela ntre conceptele utilizate n evoluia organizrii datelor n memoria extern pn la sistemele relaionale este prezentata in tabelul 1.3:

12

Tabelul 1.3 FIIERE Fiier nregistrare Cmp Valoare TEORIA BD Colecie de date Familie de caracteristici Caracteristic Domeniu de valori TEORIA RELAIONAL Relaie Tuplu Atribut Domeniu SGBDR Tabela Linie Coloan Domeniu

Regulile lui Codd E.F. Codd (cercettor la IBM) a formulat 13 reguli care exprim cerinele maximale pentru ca un SGBD s fie relaional. Regulile sunt utile pentru evoluarea performanelor unui SGBDR. Acestea sunt: R0. Gestionarea datelor la nivel de relaie: limbajele utilizate trebuie s opereze cu relaii (unitatea de informaie). R1. Reprezentarea logic a datelor: toate informaiile din BDR trebuie stocate i prelucrate ca tabele. R2. Garantarea accesului la date: LMD trebuie s permit accesul la fiecare valoare atomic din BDR (tabel, coloan, cheie). R3. Valoarea NULL: trebuie s se permit declararea i prelucrarea valorii NULL ca date lips sau inaplicabile. R4. Metadatele: informaiile despre descrierea BDR se stocheaz n dicionar i trateaz ca tabele ,la fel ca datele propiu-zise. R5. Limbajele utilizate: SGBDR trebuie s permit utilizarea mai multor limbaje, dintre care cel puin unul s permit definirea tabelelor (de baz i virtuale), definirea restriciilor de integritate, manipularea datelor, autorizarea accesului, tratarea tranzaciilor. R6. Actualizarea tabelelor virtuale: trebuie s se permit ca tabelele virtuale s fie i efectiv actualizabile, nu numai teoretic actualizabile (exemplu atributul valoare dintr-o tabel virtual nu poate fi actualizat). R7. Actualizrile n baza de date: manipularea unei tabele trebuie s se fac prin operaii de regsire dar i de actulizare. R8. Independena fizic a datelor: schimbarea stucturii fizice a datelor (modul de reprezentare (organizare) i modul de acces) nu afecteaz programele. R9. Independena logic a datelor: schimbarea structurii de date (logice) a tabelelor nu afecteaz programele. R10. Restriciile de integritate: acestea, trebuie s fie definite prin LDD i stocate n dicionarul (catalogul) BDR. R11. Distribuirea geografic a datelor: LMD trebuie s permit ca

13

programele de aplicaie s fie aceleai att pentru date distribuite ct i petru date centralizate (alocarea i localizarea datelor vor fi n sarcina SGBDRului). R12. Prelucrarea datelor la nivel de baz (sczut): dac SGBDR posed un limbaj de nivel sczut (prelucrarea datelor se face la nivel de nregistrare), acesta nu trebuie utilizat pentru a evita restriciile de integritate. Regulile lui Codd pot fi grupate, conform cerinelor exprimate n cinci categorii, conform tabelului 1.4.

14

Tabelul 1.4. Gruparea regulilor lui Codd R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 1.Reguli de baz (funda- da da mentale) 2.Reguli da da structurale 3.Reguli privind da da integritatea datelor 4.Reguli privind da da da da manipularea datelor 5.Reguli privind da da da independena datelor Regulile lui Codd sunt greu de indeplinit n totalitate de ctre SGBDR. Pornind de la cele 13 reguli de mai sus, au fost formulate o serie de criterii (cerine) pe care trebuie s le ndeplineasc un SGBD pentru a putea fi considerat relaional ntr-un anumit grad. S-a ajuns astfel, la mai multe grade de relaional pentru SGBDR: cu interfa relaional (toate datele se reprezint n tabele, exist operatorii de selecie, proiecie i jonciune doar pentru interogare), pseudorelaional (toate datele se reprezint n tabele, exist operatorii de selecie, proiecie i jonciune fr limitri), minimal relaional (este pseudorelaional i n plus, operaiile cu tabele nu fac apel la pointeri observabili de utilizatori), complet relaional (este minimal relaional i n plus, exist operatorii de reuniune, intersecie i diferen, precum i restriciile de integritate privind unicitatea cheii i restricia referenial). n concluzie, SGBDR este un sistem software complet care implementez modelul de date relaional i respect cerinele impuse de acest model. El este o interfa ntre utilizatori i baza de date.

15

1.4. CARACTERIZAREA SGBDR Sistemele relaionale ndeplinesc funciile unui SGBD cu o serie de aspecte specifice care rezult din definirea unui SGBDR. Caracterizarea SGBDR se poate face pe dou niveluri: global (sistemele relaionale sunt privite ca o categorie distinct de SGBD) i particular (fiecare SGBDR are aspecte individuale comparativ cu altele similare). A. Mecanismele i instrumentele care ajut la caracterizarea global a SGBDR-urilor sunt: limbajele relaionale, protecia datelor, optimizarea cererilor de regsire, utilitarele specializate. 1) Limbajele relaional SGBDR ofer seturi de comenzi pentru descrierea i manipularea datelor. Acestea pot fi incluse ntr-un singur limbaj relaional (SQL, QUEL, QBE, SQUARE, ALPHA, ISBL) sau separate n LDD i LMD. n ambele situaii, comenzile pentru definirea datelor sunt distincte de cele pentru manipularea datelor. Limbajele relaionale de definire a datelor (LDD) sunt simplificate, cu puine comenzi. Descrierea datelor este memorat n BDR, sub form de tabele, n dicionarul (metabaza) bazei de date. Faciliti de descriere sunt prezente n SGBDR prin comenzi, care definesc anumite operaii, la nivelurile: conceptual, logic, fizic. Limbajele relaionale de manipulare a datelor (LMD) pot fi caracterizate dup criterii generale, funcionale i calitative. a) Caracterizarea general a LMD se face dup modul de tratare a datelor, operatorii relaionali, realizatorii i utilizatorii limbajului. Modul de tratare a datelor. Toate LMD relaionale realizeaz o tratare la nivel de ansamblu a datelor: unitatea de informative pentru lucru este tabela. Avantajele sunt date de posibilitatea gestionrii automat a tuplurilor duplicate i prelucrarea paralel a ansamblurilor. La comunicarea unui LMD relational cu un limbaj universal, avantajele se pierd deoarece comunicarea se poate face doar tuplu cu tuplu i nu la nivel de ansamblu. Deoarece limbajele universale ofer alte avantaje legate de proceduralitate, soluia este de a integra n acestea un limbaj relaional. Cursorul este soluia n SGBDR pentru a face trecerea de la tratarea la nivel de ansamblu la cea la nivel de nregistrare (tuplu). Operatorii relaionali implementai. SGBDR s-au dezvoltat, din punct de vedere relaional, avnd la baz calculul relaional orientat pe tuplu (ALPHA, QUEL), calculul relaional orientat pe domeniu (QBE), algebra relaional (ISBL), transformarea (mapping) (SQL, SQUARE). Limbajele bazate pe calculul relaional sunt neprocedurale, cele bazate pe algebra

16

relaional sunt procedurale, celelalte sunt combinaii. Realizatorii limbajelor relaionale s-au orientat pe domenii precise din teoria relaional. Astfel, au rezultat: limbaje relaionale standardizate internaional (exemplu SQL - ANSI), limbaje cu standard de utilizare impus de constructor (exemplu QUEL), limbaje nestandardizate (celelalte limbaje relaionale). Utilizatorii limbajelor relaionale sunt mult diversificai. SGBDR ofer att elemente procedurale (pentru specialiti) ct i neprocedurale (pentru nespecialilti). b) Caracterizarea funcional a LMD se face dup facilitile de interogare, actualizare a datelor, etc. Facilitile de interogare a datelor. Acestea sunt puternice i oferite prin comenzi pentru interogarea tabelelor de baz (exemplu SELECT) i interogarea tabelelor virtuale (exemplu SELECT). Facilitile de actualizare a datelor. Acestea se refer la actualizarea tabelelor de baz i a tabelelor virtuale prin comenzile: INSERT INTO (adaug rnduri la sfritul unei tabele); UPDATE ( modific rnduri dintr-o tabel); DELETE FROM (terge rnduri dintr-o tabel). Unele SGBDR nu permit actualizarea tabelelor virtuale (exemplu Foxpro), altele permit acces lucru cu o serie de restricii pentru ca operaia s se propage spre tabelele de baz fr ambiguiti (exemplu DB2, Oracle). Alte faciliti funcionale. La facilitile relaionale de mai sus, SGBDR-urile ofer i alte faciliti pe care le au toate limbajele de programare procedurale cum sunt: calculul aritmetic prin operatorii specifici (+, -, *, /, **); agregarea prin funcii standard (SUM) i prin comenzi (COMPUTE OF expr ); comenzi de intrare/ieire standard (ACCEPTPROMPT). c) Caracterizarea calitativ a LMD se face dup puterea selectiv, uurina de nvare, utlizare i eficiena limbajului. Puterea selectiv a LMD relaionale este dat de posibilitatea selectrii datelor dup criterii (filtre) complexe (exemplu comanda SELECT). Uurina de nvare i utilizare este nuanat n funcie de tipul LMD-ului relaional. Cele bazate pe calculul relaional sunt neprocedurale (descriptive), deci uor de nvat i utilizat (apropiat, ca stil, de limbajul natural) (exemplu QUEL) iar cele bazate pe algebra relaional sunt procedurale (algoritmice), deci mai greu de nvat i utilizat (exemplu ISBL). Cele intermediare promoveaz stilul neprocedural dar accept i elemente de control procedural (exemplu SQL) iar cele bazate pe grafic ofer primitive grafice pentru machetarea cererilor de regsire, deci uor de utilizat (exemplu QBE).

17

Eficiena utilizrii este determinat de posibilitatea optimizrii cererilor de regsire. LMD bazate pe calculul relaional las compilatorul s aleag ordinea de execuie a operaiilor, deci rezult o eficiena mare. LMD bazate pe algebra relaional au o ordine impus pentru execuia operaiilor, deci rezult o eficien mica. 2) Protecia datelor Aspectele privind protecia datelor sunt foarte importante pentru un sistem de baz de date i ele trebuie implementate de ctre SGBDR. Protecia bazei de date se refer la integritatea datelor (integritatea semantic, concurena la date, salvarea/restaurarea) i securitatea datelor (autorizarea accesului, viziunile, procedurile speciale, criptarea). a) Integritatea semantic. Definirea restriciilor de integritate se face, conform cerinelor modelului relaional, n LDD (exemplu CREATE TABLE, ALTER TABLE). Utilizarea restriciilor de integritate se face cu ajutorul unor mecanisme care controleaz validitatea regulilor pentru fiecare nou stare a BD. Aceste mecanisme sunt metode de detectare a inconsistenei datelor (se verific restrciiile de integritate) la sfritul tranzaciilor, care se realizeaz automat de SGBDR i puncte de verificare a integritii fixate de utilizator, acolo unde dorete el n program. b) Concurena la date (coerena). Unitatea de lucru pentru asigurarea coerenei datelor este tranzacia. Aceasta este un ansamblu de comenzi tratate unitar. Tranzacia se execut n totalitate sau deloc. Coerena poate fi afectat la actualizarea concurent sau la incidente. Mecanismele utilizate de SGBDR pentru asigurarea coerenei datelor (controlul accesului concurent) sunt: Blocarea la diferite niveluri: baz de date, tabel, tuplu, atribut; Definirea unor puncte de salvare n interiorul tranzaciilor (exemplu comanda savepoint); Tranzacii explicite (begin i end transaction) i implicite (comenzile de actualizare); Fiiere jurnal. 3) Optimizarea regsirii Cererile de regsire se exprim n SGBDR n diferite limbaje relaionale. Pentru a se obine un rezultat optim, se utilizeaz interfee automate de rescriere a cererilor de regsire, prin parcurgerea a doi pai: Exprimarea cererilor de regsire sub forma unor expresii algebrice relaionale, care are la baz echivalena dintre calculul i algebra relaional . Aplicarea unor transformri algebrice relaionale asupra expresiilor construite n pasul anterior, pentru a se obine expresii

18

relaionale echivalente i eficiente. Transformarea se poate realiza prin doua strategii de optimizare: generale, specifice. Strategiile generale sunt independente de modul de memorare a datelor. Ele se bazeaz pe propietile operaiilor din algebra relaional (comutativitatea, asociativitatea, compunerea ). Astfel de strategii sunt: selecia naintea jonciunii, proiecia naintea jonciunii, selecia naintea proieciei, combinarea seleciei multiple. Strategiile specifice in cont de modul de memorare a datelor i ele sunt caracteristice unui SGBDR. Elementele care influeneaz executarea operaiilor ce intervin la o cerere de regsire sunt: accesul direct, reguli de ordonare a expresiilor algebrice specifice unui SGBDR. 4) Utilitarele specializate Posibilitatile de utilizare ale unui SGBDR sunt influenate de utilitarele specializate pe care le are, pentru diferitele categorii de utilizatori (n Oracle: Developer pentru dezvoltatori, Designer pentru analiti, Administration Tools i Utilities pentru administrator etc.). B. Pentru a face o caracterizare particular,un anumit SGBDR vom lua n considerare o serie de criterii de comparaie. Aceste criterii se vor urmri, grupate pe anumite categorii, pentru cteva SGBDR-uri care ne intereseaz. Dup aceast analiz vom avea un argument serios pentru a putea alege un SGBDR n scopul dezvoltrii unei aplicaii cu baze de date. Gruparea caracteristicilor particulare de comparaie a SGBDR-urilor o vom face n funcie de facilitile de descriere, manipulare, utilizare i administrare a datelor. Caracteristicile n funcie de facilitile de descriere sunt: modul de implementare a modelului relaional; conceptul de baz de date utilizat n schem; definirea metadatelor; definirea relaiilor virtuale; actualizarea schemei relaiei; restriciile de integritate ce pot fi declarate. Caracteristicile n funcie de facilitile de manipulare sunt: LMD relaional implementat; funciile de calcul aritmetic i funciile agregate; modurile de acces la date; programarea orientat-obiect; tratarea valorii NULL; optimizarea cererilor de regsire; actualizarea relaiilor de baz i virtuale. Caracteristicile n funcie de facilitile de utilizare i administrare sunt: instrumentele de dezvoltare; instrumentele CASE; instrumentele analize statistice; software-ul pentru acces de la distan; utilitarele de ntreinere; mecanismele pentru autorizarea accesului la date.

19

1.5. EXEMPLE DE SISTEME DE GESTIUNE A BAZELOR DE DATE RELAIONALE

Oracle. Este realizat de firma Oracle Corporation USA. Sistemul este complet relaional, robust, se bazeaz pe SQL standard extins. Arhitectura sistemului este client/server, permnd lucrul, cu obiecte i distribuit. Are BD Internet i modul de optimizare a regsirii. Ultima versiune este Oracle 10g. DB2. Este realizat de firma IBM. Sistemul respect teoria relaional, este robust i se bazeaz pe SQL standard. Permite lucrul distribuit i are modul de optimizare a regsirii. Informix. Este realizat de firma Informix, respect teoria relaional i permite lucru distribuit. Progress. Este realizat de firma Progress Software. Are limbaj propriu (Progress 4GL) dar suport i SQL. Ruleaz pe o gam larg de calculatoare sub diferite sisteme de operare. SQL Server. Este realizat de firma Microsoft. Se bazeaz pe SQL i ruleaz n arhitectura client/server. Ingress II. Este realizat de firma Computer Associates. Este un SGBDR complet, implementeaz dou limbaje relaionale (nti QUEL i apoi SQL) i este suportat de diferite sisteme de operare (Windows, UNIX). Lucreaz distribuit n arhitectura client/server, are extensie cu faciliti orientate obiect i permite aplicaii de tip Internet. Organizarea fizic a tabelelor se face prin sistemul de operare. Visual FoxPro. Este realizat de firma Microsoft. Are un limbaj procedural propiu foarte puternic, o extensie orientat obiect, programare vizual i nucleu extins de SQL. Access. Este realizat de firma Microsoft. Se bazeaz pe SQL, are limbajul procedural gazd (Basic Access) i instrumente de dezvoltare. Paradox. Este realizat de firma Borland. Are limbaj procedural propiu (PAL) i suport SQL.

20

CAPITOLUL 2. FACILITATILE SI ARHITECTURA SISTEMULUI ORACLE2.1. EVOLUIA I FACILITILE SISTEMULUI ORACLE Oracle este un sistem de gestiune a bazelor de date complet relaional, extins, cu faciliti din tehnologia orientat obiect (OO). Sistemul Oracle este realizat de firma Oracle Corporation care a fost nfiinat n anul 1977 n SUA - California i acum este cel mai mare furnizor de software de gestiunea datelor. Acesta este operaional pe toat gama de calculatoare (micro, mini, mainframe) sub diverse sisteme de operare. Prima versiune de SGBD Oracle a fost realizat la sfritul anilor '70 respectnd teoria relaional. n cadrul sistemului a fost implementat de la nceput limbajul relaional SQL pe care l-a dezvoltat ulterior fa de versiunea standard rezultnd SQL*Plus. ncepnd cu versiunea 5.0 SGBD Oracle are urmtoarele faciliti suplimentare: funcioneaz n arhitectura client/server; are limbaj procedural propriu PL/SQL; are precompilatoare ca interfa cu limbajele universale. n iunie 1997 s-a lansat SGBD Oracle versiunea 8.0, inclusiv n Romnia, care a marcat o nou generaie de baze de date Oracle deoarece iniiaz trecerea de la arhitectura client/server la arhitectura NC (Network Computing), are o mare deschidere, are optimizri performante i pune accent mai mare pe analiz (modelare-funcionalitate) fa de programare (codificare). n noiembrie 1998 s-a lansat SGBD Oracle 8i ca sistem de baze de date pe Internet. Aceast versiune are urmtoarele caracteristici: Este reproiectat arhitectural n mod fundamental i se ncadreaz n tendina de trecere de la arhitectura client/server la arhitectura NC; Permite dezvoltarea unei baze de date de orice dimensiune, n mod centralizat sau distribuit; Are faciliti de salvare/restaurare automate i inteligente; Permite partiionarea integral pentru tabele i indeci; Are mesagerie integral, prin comunicarea ntre aplicaii i procesare offline (chiar dac aplicaiile nu sunt conectate); Prelucrarea paralel pentru: replicare, cereri de regsire, actualizare; Ofer faciliti din tehnologia OO, prin care se permite definirea

21

i utilizarea de obiecte mari i complexe; Optimizeaz cererile de regsire prin reutilizarea comenzilor SQL identice lansate de utilizatori diferii i prin realizarea unui plan de execuie a instruciunilor SQL; Are un grad de securitate sporit prin: server de criptare, control trafic reea, niveluri de parolare etc.; Permite lucrul cu depozite de date (Data Warehouse) care conin date multidimensionale (cu tehnologia OLAP); Conine foarte multe produse ceea ce-l face s fie o platform pentru baze de date: servere (Oracle 8, Application, Security, Internet Commerce etc), instrumente (Designer, Developer, Express, WebDB etc), aplicaii (Financials, Projects, Market Manager, Manufacturing etc); Este primul SGBD pentru Internet cu server Java inclus; Reduce drastic costurilor pentru realizarea unei aplicaii(de cca 10 ori fa de versiunea anterioar); Este o platform multipl permind lucrul pe orice calculator, orice sistem de operare, orice aplicaie, orice utilizator; Are instrumente diverse pentru dezvoltarea aplicaiilor: bazate pe modelare (Designer, Developer, Application Server), bazate pe componente (Java), bazate pe HTML (browsere, editoare Web) i XML, prin programare: proceduri stocate (PL/SQL, Java), obiecte standard, obiecte ODBC, obiecte JDBC, fraze SQL etc., tip internet (WebDB); Ofer servicii multiple de Internet (Web, E_mail, e_bussines, etc) integrate cu servicii Intranet. Ulterior a fost lansat sistemul Oracle 9i care a marcat trecerea la o nou generaie de servicii internet. El este mai mult dect un suport pentru baze de date deoarece ofer o infrastructur complet de software pentru afaceri electronice (e-business) i ruleaz pe o varietate de sisteme de calcul i de operare: SUN-SOLARIS, HP-UX, IBM-AIX, PC_WINDOWS, XXLINUX. Componenta Oracle WebDB a evoluat n Oracle Portal. Oracle 9i DATABASE are fa de versiunea anterioar asigur o protecie ridicat i automatizat iar costul administrrii bazei de date scade n mod drastic. Oracle 9i REAL APPLICATION CLUSTERS (RAC) se bazeaz pe o nou arhitectur de BD numit mbinare ascuns (Cache Fusion). Aceasta este o nou generaie de tehnologie de clustere. Conform acestei arhitecturi la adugarea unui calculator nr-o reea cu BD Oracle, clusterele se adapteaz automat la noile resurse, fr s fie necesar redistribuirea datelor

22

sau rescrierea aplicaiei. Posibilitatea apariiei unei erori la o configuraie cu 12 calculatoare sub Oracle 9i RAC este foarte mic, esimat ca durat n timp la cca 100.000 de ani. n Oracle 9i APPLICATION SERVER se pot creea i utiliza aplicaii Web care sunt foarte rapide i permit integrarea serviciilor de Internet. Oracle 9i DEVELOPER SUITE este un mediu complet pentru dezvoltarea aplicaiilor tip afaceri electronice (e-business) i tip Web. El se bazeaz pe tehnologiile Java i XML i permite personalizarea (Oracle Personalization). n anul 2003 a fost lansat versiunea Oracle 10g care adaug noi faciliti sistemului Oracle 9i. 2.2. ARHITECTURA SISTEMULUI ORACLE Componentele care formeaz arhitectura de baz Oracle (vezi fig.2.1) sunt dispuse ntr-o configuraie client/server. Aceste componente sunt plasate pe calculatoare diferite ntr-o reea asigurnd funcionaliti specifice, astfel: serverul asigur memorarea i manipularea datelor, precum i administrarea bazei de date iar clientul asigur interfaa cu utilizatorul i lanseaz aplicaia care acceseaz datele din baza de date.

Figura 2.1 Arhitectura Oracle

23

Arhitectura Oracle se ncadreaz n tendinele actuale i anume este structurat pe trei niveluri: nucleul, interfeele i instrumentele de ntreinere. Nucleul Oracle conine componentele care dau tipul relaional pentru SGBD Oracle: limbajul relaional de regsire SQL i limbajul procedural propriu PL/SQL. Sistemul Oracle creeaz i ntreine automat dicionarul de date. Acesta face parte din baza de date Oracle i conine un set de tabele i viziuni (vederi) accesibile utilizatorilor doar n consultare. Dicionarul conine informaii de tipul: numele utilizatorilor autorizai, drepturile de acces, numele obiectelor din baza de date, structurile de date, spaiul ocupat de date, chei de acces etc. Interfeele sunt componentele care permit dezvoltarea aplicaiilor cu BD, astfel: DEVELOPER SUITE este componenta destinat dezvoltatorilor (programatorilor) de aplicaii. Conine generatoarele FORMS (meniuri i videoformate), REPORTS (rapoarte i grafice), JDEVELOPER; DESIGNER este component destinat analitilor/proiectanilor de aplicaii. Ofer elemente de CASE pentru proiectarea aplicaiilor cu BD; PRO*C este componenta destinat programatorilor n limbajele de programare universale (FORTRAN, COBOL, Pascal, C, ADA, PL1); DATAWAREHOUSE BUILDER este destinat analizei datelor multidimensionale, folosind tehnologia de tip OLAP (On Line Analitical Processing); ORACLE APPLICATIONS permite dezvoltarea unor aplicaii de ntreprindere (Financials, Manufacturing, Projects etc.); Instrumentele sunt componente destinate ntreinerii i bunei funcionri a unei BD Oracle. ENTERPRISE MANAGER CONSOLE conine mai multe utilitare destinate administratorului BD (deschidere/nchidere BD, autorizarea accesului, refacerea BD, conversii de date, etc.). 2.3. ORACLE SERVER Oracle Server (OS) permite managementul informaiilor organizate n baze de date, astfel nct se asigur accesul mai multor utilizatori n mod concurenial la acelai date, oferind faciliti de prevenire a accesului

24

neautorizat i de restaurare a datelor dup producerea unor erori. OS are urmtoarele faciliti: Client/server permite ca prelucrrile s fi mprite ntre serverul de baze de date i programele de aplicaie ale utilizatorilor aflate pe staiile conectate la server; Suport lucrul cu baze de date foarte mari; Permite utilizarea concurenial a bazelor de date; Ofer securitate sporit i integritatea datelor; Permite lucrul distribuit; Confer portabilitate aplicaiilor; Permite ca mai multe tipuri de calculatoare i sisteme de operare s coexiste pe aceeai reea. Oracle Server este un sistem relaional-obiectual de management a bazelor de date, care permite o abordare deschis, integrat i cuprinztoare a managementului informaiilor. OS const dintr-un cuplu format dintr-o baz de date i o instan Oracle. A. O baz de date Oracle este o colecie unitar de date, avnd o structur logic i una fizic putnd avea dou stri: open (accesibil) i close (inaccesibil). 1) Structura logic ale unei baze de date este format din tabelele spaiu (tablespaces), schema de obiectelor bazei de date, blocurile de date, extensiile i segmentele. Tabelele spaiu sunt unitile logice de memorie n care este mprit o baz de date i pot fi tabele spaiu de sistem i tabele spaiu de utilizator. Din punct de vedere al accesibilitii aceste pot fi on line i off line. Fiierele de date sunt structurile de memorie specifice unui sistem de operare pe care rezid tabelele spaiu ale unei baze de date. Schema este o colecie de obiecte, iar schema de obiecte este o structur logic ce se refer direct la datele unei baze de date(tabele, vederi, secvene, proceduri memorate, sinonime, indeci, clustere i link-uri de baz de date). Blocurile de date, extensiile i segmentele sunt elemente de control eficient al spaiului de memorie extern pe disc aferent unei baze de date. Blocul de date este unitatea de memorie cea mai mic manipulat de SGBD Oracle, iar mrimea acestuia msurat n bytes se definete la momentul creerii bazei de date. Extensia este format din mai multe blocuri de date contigue.

25

Segmentul este format din mai multe extensii. Segmentele pot fi: segmente de date (pentru memorarea datelor unei tabele), segmente de indeci, segmente roollback (folosite pentru memorarea informaiilor necesare pentru recuperarea datelor unei baze de date sau anularea unei tranzacii) i segmente temporare (folosite pentru prelucrarea instruciunilor SQL). 2) Structura fizic este definit de un set de fiiere specifice sistemului de operare pe care rezid SGBD Oracle, folosite pentru memorarea structurilor logice ale bazei de date i pentru pstrarea unor informaii tehnice de control. Aceste fiiere sunt: fiiere de date (Data files), fiiere Redo log (Redo Log files) i fiiere de control (Control files). Fiierele de date (Data files) conin datele unei baze de date, sub forma structurilor logice ale acesteia (tabele, vederi, secvene, proceduri memorate, sinonime, indeci, clustere i link-uri de baz de date). Fiierele de date au urmtoarele caracteristici: un fiier de date poate aparine unei singure baze de date, pot fi extinse automat n anumite momente specifice ale funcionrii bazei de date, unul sau mai multe fiiere de date pot memora o tabel spaiu. Fiierele Redo Log (Redo Log files) sunt folosite pentru memorarea tuturor schimbrilor de date produse asupra unei baze de date, astfel nct dac se ntmpl o cdere de curent s se previn distrugerea datelor bazei de date. Se pot folosi simultan mai multe fiiere de acest fel care s rezide pe discuri diferite. Fiierele de control (Control files) sunt folosite pentru memorarea informaiilor necesare pentru controlul structurii fizice a unei baze de date (numele bazei de date, numele i locaiile fiierelor de date, data creerii bazei de date etc). B. Instana Oracle (Oracle instance) este combinaia logic dintre structurile de memorie intern (SGA - system global area, PGA - program global area) i procesele Oracle de baz activate la momentul pornirii unei baze de date. 1) SGA este o regiune partajabil de memorie care conine datele i informaiile necesare unei instane Oracle i conine: Database Buffer Cache (conine blocurile de date cele mai recent utilizate pentru a reduce utilizarea discului); Redo Log Buffer (conine datele despre blocurile modificate); Shared Pool (pentru prelucrarea instruciunilor SQL); Cursorii (Statement Handles or Cursores) folosii pentru manipularea instruciunilor unui limbaj gazd folosind facilitatea Oracle Call Interface.

26

2) PGA este zona de memorie care conine datele i informaiile de control ale unui proces server. 3) Procesul este un mecanism al sistemului de operare care poate executa o serie de pai (instruciuni). Este cunoscut i sub numele de job sau task. Procesul are propria sa zon de memorie n care se execut. Un server Oracle are dou tipuri de procese: procese utilizator i procese Oracle. Procesul utilizator (user proces) este creat i meninut pentru a executa codul de program aferent unui anumit limbaj (C++) sau un produs Oracle (Oracle tool), SQL*Forms, Sql*Graphics etc. Procesul Oracle este apelat de ctre un alt proces pentru a executa funcia cerut de ctre acesta. Procesele Oracle sunt Procese server i procese background. Procesele server (Server Processes) sunt utilizate de Oracle pentru a prelucra cererile proceselor utilizator. Oracle poate fi configurat astfel nct s permit unul sau mai multe procese utilizator. Din acest punct de vedere avem servere dedicate care au un singur proces utilizator i servere multi prelucrare (multi-threaded server configuration). Pe anumite sisteme procesele utilizator i procesele server sunt separate, iar n altele sunt combinate ntr-unul singur. Dac folosim sistemul multi prelucrare sau dac procesele utilizator i procesele server se afl pe maini diferite atunci aceste procese trebuie s fie separate. Sistemul client/server separ procesele utilizator de ctre procesele server i le execut pe maini diferite. Procesele background (Background processes) sunt create pentru fiecare instan Oracle pentru a executa asincron anumite funcii. Acestea sunt: Database Writer (DBWR) scrie datele modificate n baza de date; Log Writer (LGWR) scrie nregistrrile redo log pe disc; Checkpoint (CKPT) scrie nregistrrile checkpoint la timpul potrivit ; System Monitor (SMON) execut recuperarea unei instane la momentul pornirii, colecteaz spaiul liber etc; Process Monitor (PMON) recupereaz procesele utilizator dac acestea cad accidental; Archiver (ARCH) copiaz n mod online fiierele Redo Log n fiiere de arhiv atunci cnd acestea se umplu cu datei; Recoverer (RECO) rezolv tranzaciile suspendate n sistemul cu baze de date distribuite; Dispacher (Dnnn) folosit n sistemul multithreaded;

27

Lock (LCKn) blochez procesele n sistemul Parallel server. Legtura dintre procesele utilizator i procesele Oracle este prezentat n figura 2.2.

Figura 2.2 Legtura dintre procesele utilizator i procesele Oracle

Interfaa program este mecanismul de comunicare dintre un proces utilizator i un proces server. Este metoda standard de comunicare ntre o aplicaie sau un instrument Oracle i Oracle Server. 2.4. CONCURENA, CONSISTENA I SECURITATEA DATELOR ntr-un sistem de baze de date de tip multiutilizator o preocupare principal este asigurarea accesului concurenial al mai multor utilizatori la aceleai date. Pentru aceast funcie Oracle folosete diverse mecanisme ca blocarea nregistrrilor i pstrarea mai multor versiuni consistente de date. Consistena la citire garanteaz c setul de date vzut de ctre o instruciune nu se schimb n timpul executrii acesteia (consisten la nivel

28

de instruciune). Asigur faptul c un utilizator care acceseaz baza de date nu ateapt ca alt utilizator s scrie date sau s citeasc date i c scrierea unor date n baza de date nu implic un timp de ateptare pentru utilizatorii care doresc s citeasc aceste date. De asemenea, asigur faptul c un utilizator va atepta la momentul scrierii n baza de date numai dac ncearc s modifice acelai rnd dintr-o tabel (tranzacii concurente). Mecanismul de blocare a rndurilor dintr-o tabel a bazei de date asigur ca datele vzute de un utilizator sau modificate de acesta s nu poat fi modificate de ctre alt utilizator pn cnd primul nu termin accesul la date. Datele i structurile unei baze de date reflect corect toate modificrile efectuate ntr-o anumit secven logic. Blocarea se poate executa automat sau manual. Securitatea unei baze de date presupune asigurarea unor faciliti care s permit controlul asupra modului n care o baz de date este accesat i utilizat. Ea poate fi: securitatea sistemului (System security) i securitatea datelor (Data security). Securitatea sistemului include mecanisme care controleaz accesul i utilizarea bazei de date la nivel de sistem (valideaz combinaiile username/password, spaiul pe disc alocat pentru un anumit utilizator, limitele de resurse pentru un utilizator). Securitatea datelor include mecanisme care controleaz accesul i utilizarea bazei de date la nivel de obiect (Exemplu utilizatorul SCOTT poate s emit instruciuni SELECT i INSERT, dar nu poate utiliza DELETE). Oracle Server furnizeaz controlul accesului, care nseamn restricionarea accesului la informaii pe baz de privilegii. De exemplu unui utilizator i se atribuie privilegiul de a accesa un anumit obiect al bazei de date. La rndul su acest utilizator, n mod corespunztor, poate s ofere privilegiul su altui utilizator. Controlul securitii n Oracle se asigur prin specificarea: utilizatorilor bazei de date, schemelor, privilegiilor, rolurilor, setarea limitelor de memorie, stabilirea limitelor de resurse i auditarea. Utilizatorii bazei de date i schemele. Fiecare baz de date are o list de nume de utilizatori. Pentru a accesa baza de date un utilizator trebuie s foloseasc o aplicaie i s se conecteze cu un nume potrivit. Fiecrui nume de utilizator i este asociat o parol. Orice utilizator are un domeniu de securitate care determin privilegiile i rolurile, cota de tabel spaiu alocat (spaiul pe disc alocat) i limitele de resurse ce le poate utiliza (timp CPU etc). Privilegiul este dreptul unui utilizator de a executa anumite instruciuni SQL. Privilegiile pot fi: privilegii de sistem i privilegii de

29

obiecte. Privilegiile de sistem permit utilizatorilor s execute o gam larg de instruciuni SQL, ce pot modifica datele sau structura bazei de date. Aceste privilegii se atribuie de obicei numai administratorilor bazei de date. Privilegiile de obiecte permit utilizatorilor s execute anumite instruciuni SQL numai n cadrul schemei sale, i nu asupra ntregii baze de date. Acordarea privilegiilor reprezint modalitatea prin care acestea pot fi atribuite utilizatorilor. Exist dou ci de acordare explicit (privilegiile se atribuie n mod direct utilizatorilor) i implicit (prin atribuirea acestora unor roluri, care la rndul lor sunt acordate utilizatorilor). Rolurile sunt grupe de privilegii, care se atribuie utilizatorilor sau altor roluri. Rolurile permit: Reducerea activitilor de atribuire a privilegiilor. Administratorul bazei de date n loc s atribuie fiecare privilegiu tuturor utilizatorilor va atribui aceste privilegii unui rol, care apoi va fi disponibil utilizatorilor; Manipularea dinamic a privilegiilor. Dac se modific un privilegiu de grup, acesta se va modifica n rolul grupului. Automat modificarea privilegiului se propag la toi utilizatorii din grup; Selectarea disponibilitilor privilegiilor. Privilegiile pot fi grupate pe mai multe roluri, care la rndul lor pot fi activate sau dezactivate n mod selectiv; Proiectarea unor aplicaii inteligente. Se pot activa sau dezactiva anumite roluri funcie de utilizatorii care ncearc s utilizeze aplicaia. Un rol poate fi creat cu parol pentru a preveni accesul neautorizat la o aplicaie. Aceast tehnic permite utilizarea parolei la momentul pornirii aplicaiei, apoi utilizatorii pot folosi aplicaia fr s mai cunoasc parola. Setarea cotelor de memorie ce pot fi folosite de ctre utilizatori se realizeaz folosind opiunile: Default tablespace. Un utilizator poate crea obiecte ale bazei de date fr a specifica numele tabelei spaiu n care s fie create obiectele; Temporary tablespace. Unui utilizator i se aloc tabele spaiu proprii n care s-i creeze obiectele; Tablespace quotas. Se pot seta limite fizice de memorie pentru tabelele spaiu proprii utilizatorilor. Profilurile i limitarea resurselor. Un profil este un element de securitate care permite manipularea resurselor ce pot fi alocate utilizatorilor. Resursele ce pot fi alocate sunt: numrul sesiunilor concurente, timpul CPU,

30

timpul de utilizare a unei sesiuni, restricii n utilizarea parolelor. Se pot crea diferite tipuri de profile care apoi vor fi atribuite fiecrui utilizator. Auditarea permite monitorizarea activitilor executate de ctre utilizatori astfel nct s se poat efectua investigaii referitoare la utilizrile suspecte ale bazei de date. Auditarea se poate efectua la nivel de instruciune, privilegiu sau obiect. Recuperarea unei baze de date este necesar atunci cnd apar cderi de curent sau defeciuni ale calculatorului. Tipurile de erori ce pot determina oprirea unei baze de date Oracle sunt: erori de utilizator; erori ale unor instruciuni sau ale proceselor utilizator; erori ale instanei Oracle; erori fizice pe disc. Structurile fizice folosite de Oracle pentru recuperarea unei baze de date sunt fiierele redo log, fiierele de control, segmentele rollback i copiile fizice ale datelor bazei de date. Fiierele redo log permit protejarea datelor bazei de date actualizate n memoria intern dar nescrise nc n baza de date. Se pot utiliza n mod online sau cu arhivare. Fiierele redo log on line sunt un set de dou sau mai multe fiiere care nregistreaz toate tranzaciile finalizate. Ori de cte ori o tranzacie este finalizat (comis) datele modificate sunt scrise n aceste fiiere. Utilizarea fiierelor este ciclic, adic atunci cnd se umple un fiier se utilizeaz cellalt. Fiierele redo log arhivate permit arhivarea fiierelor redo log umplute nainte de a fi rescrise. Se poate rula n modul ARCHIVELOG (caz n care baza de date poate fi integral recuperat att pentru o eroare a instanei, ct i a discului) sau NOARCHIVELOG (caz n care baza de date poate fi recuperat numai dup o eroare a instanei nu i a discului). n primul mod recuperarea se face cu baza de date pornit, iar n al doilea caz cu ea oprit. Fiierele de control conin informaii despre structura fiierelor bazei de date, numrul curent al secvenei de log folosit de ctre procesul LGWR etc. Segmentele rollback se folosesc pentru controlul tranzaciilor. Copiile bazei de date pot fi integrale sau pariale. Copia integral cuprinde toate fiierele de date, online redo log files i fiierele de control, iar copia parial conine numai anumite pri ale bazei de date. Datorit modului n care lucreaz procesul DBWR fiierele de date ale bazei de date pot conine blocuri potenial actualizate de ctre tranzaciile nefinalizate sau s nu conin blocuri de date actualizate de ctre tranzaciile finalizate. Blocurile de date coninnd tranzacii finalizate nu au fost nc scrise n fiierele de date, ci numai n fiierele redo log, ceea ce nseamn c fiierele redo log conin modificri de date care trebuie efectuate i n baza de date. Fiierele de redo log pot conine date ale unor

31

tranzacii nefinalizate care trebuie eliminate la momentul recuperrii bazei de date. Ca urmare a situaiilor de mai sus Oracle va folosi doi pai distinci pentru recuperarea unei baze de date: rolling forward i rolling backward. Rolling forward nseamn aplicarea (scrierea) asupra bazei de date a tuturor tranzaciilor finalizate i memorate n fiierele redo log. Se execut automat la momentul pornirii bazei de date dac avem fiiere redo log online. Rolling backward nseamn tergerea tuturor tranzaciilor nefinalizate din fiierele redo log. Acest pas se execut automat dup primul pas. Utilitarul de recuperare Recovery Manager creaz fiiere de salvare (backup) pentru fiierele de date ale bazei de date i restaureaz sau recupereaz baza de date din acesrte fiiere backup. 2.5. DICIONARUL DE DATE (DATA DICTIONARY) Fiecare baz de date Oracle are un dicionar de date, care este un set de tabele i vederi folosite n modul read-only pentru a referi datele bazei de date. Dicionarul de date este actualizat automat de ctre Oracle ori de cte ori intervin modificri n structura bazei de date. Dicionarul de date este alctuit din tabele de baz i vederi create pe aceste tabele. Tabelele de baz nu sunt accesibile datorit faptului c memoreaz datele criptic. Proprietarul dicionarului de date este utilizatorul SYS. Nici un utilizator nu poate altera obiecte din schema SYS. Dicionarul de date (DD) este accesat n dou situaii: ori de cte ori Oracle prelucreaz o instruciune DDL sau de ctre orice utilizator pentru consultarea informaiilor despre baza de date. DD este adus n memoria SGA. Este recomandat s nu se obiecte care s aparin utilizatorului SYS. Nu se vor modifica niciodat date din DD. Singura tabel care face excepie este tabela SYS.AUDIS. Aceast tabel poate crete mult n dimensiune, administratorul bazei de date putnd terge datele inutile. Vederile DD sunt prefixate cu USER, ALL sau DBA. Vederile prefixate cu USER furnizeaz informaii despre obiectele utilizatorilor, cele ALL despre toate obiectele din baza de date la care un utilizator are acces, iar cele cu DBA dau informaii despre toat baza de date. Exemple: select object_name, object_type from user_objects; select owner, object_name, object_type from all_objects; select owner, object_name, object_type from sys.dba_objects;

32

Tabelele ce pstreaz informaii despre activitile Oracle sunt tabele speciale care pot fi accesate numai de ctre administrator pentru a vedea performanele Oracle. Utilizatorul SYS este proprietarul acestor tabele. Numele lor este prefixat cu V_$, iar sinonimele lor cu V$. Categoriile de informaii ce se pot obine din dicionarul de date sunt: Informaii despre fiierele Online Redo Log; Informaii despre tabelele spaiu; Informaii despre fiierele de date ( Data Files); Informaii despre obiectele bazei de date; Informaii despre segmentele bazei de date; Informaii despre extensii ale bazei de date; Informaii despre pachetele Oracle cu valoare de dicionar (Dictionary Storage). Informaii despre utilizatorii bazei de date i profilele acesteia; Informaii despre privilegiile i rolurile din baza de date n tabelul 2.1 sunt descrise pachetele Oracle care permit PL/SQL s aib acces la anumite faciliti SQL sau s extind funcionalitatea BD. Pachete Oracle pentru accesul la facilitile SQLDBMS_SPACE.UNUSED_SPACE DBMS_SPACE.FREE_BLOCKS DBMS_SESSION.FREE_UNUSE D_ USER_MEMORY DBMS_SYSTEM.SET_SQL_TRA CE_IN_SESSION Tabelul 2.1. Returneaz informaii despre spaiul nefolosit dintr-un obiect (tabel, index sau cluster) Returneaz informaii despre blocurile libere dintr-un obiect (tabel, index sau cluster) Permite recuperarea memoriei nefolosite dup efectuarea operaiilor care cer o cantitate mare de memorie (>100k) Permite sql_trace ntr-o sesiune identificat prin numrul serial i SID (valori luate din V$SESSION).

2.6. ACCESUL LA DATE Accesul la datele unei baze de date se realizeaz folosind instruciunile SQL (Structured Query Language) sau PL/SQL (Procedural Language). Instruciunile SQL se mpart n: Instruciuni de definire a datelor - DDL (Data Definition Statements). Acestea permit definirea, ntreinerea i tergerea unor obiecte ale bazei de date;

33

Instruciuni de manipulare a datelor DML (Data Manipulation Statements), care permit regsirea, inserarea, actualizarea i tergerea unor rnduri de date din tabele; Instruciuni de control a tranzaciilor (Transaction Control Statements) permit controlul instruciunilor DML (COMMIT, ROLLBACK, SAVEPOINT etc); Instruciuni de control a sistemului Oracle (System Control Statements) permit utilizatorului s controleze proprietile sesiunii curente prin activarea sau dezactivarea rolurilor sau setarea limbii; Instruciuni imprimate ntr-un limbaj gazd (Embeded SQL Statements) i ncorporeaz instruciuni DDL, DML i de control al tranzaciilor. O tranzacie este o unitate logic de lucru care cuprinde una sau mai multe instruciuni SQL executate de ctre un singur utilizator. Tranzacia ncepe cu prima instruciune SQL executabil i se termin n mod explicit cu finalizarea (commit) sau, dup caz, anularea tranzaciei (rollback). Finalizarea unei tranzacii face ca modificrile efectuate de intruciunilor SQL n baza de date s fie permanente, iar anularea (roll back) unei tranzacii duce la renunarea la actualizrile efectuate de instruciunile SQL pn la un moment dat. Tranzaciile mari pot fi marcate cu puncte intermediare de salvare. Acest lucru permite ca activitile efectuate ntre punctele de salvare s fie considerate finalizate, iar la momentul anulrii (rollback) acest lucru s se execute pn la un anumit punctul de salvare specificat. PL/SQL este un limbaj procedural Oracle care combin instruciunile SQL cu instruciunile de control a prelucrrii (IF THEN, WHILE i LOOP). Utilizarea procedurilor PL/SQL memorate n baza de date duce la reducerea traficului pe reea. n baza de date pot fi stocate proceduri, funcii, pachete, triggeri. Triggerii (declanatorii) sunt blocuri de instruciuni scrise de programatori pentru a aduga funcii suplimentare unei aplicaii. Fiecare trigger are un nume i conine una sau mai multe instruciuni PL/SQL. Un trigger poate fi asociat cu un eveniment i poate fi executat i ntreinut ca un obiect distinct. Numele unui trigger corespunde unui eveniment (runtime events) care se produce la momentul execuiei unei aplicaii.

34

CAPITOLUL 3. ELEMENTELE DE BAZ ALE LIMBAJULUI SQL*PLUS3.1. DESPRE LIMBAJ n 1974 a fost lansat proiectul System/R de ctre firma IBM. Tot n acest an a aprut limbajul structurat de programare SEQUEL (Structured English as Query Language) autori fiind Chamberlin i Boyce. n 1976 apare un nou limbaj SEQUEL 2 care a fost declarat limbajul de interogare al SGBD System/R. Denumirea limbajului este schimbat de Chamberlin n SQL (Structured Query Language) n anul 1980. Ulterior limbajul a fost perfecionat fiind considerat cel mai rspndit limbaj de interogare a bazelor de date relaionale. Institutul Naional pentru Standarde n anul 1982 a lansat un proiect de lucru pentru standardizarea limbajelor de interogare care a fost finalizat n 1986 aprnd standardul ANSI SQL-86. Acesta definete comenzile de baz ale SQL, dar nu conine partea de actualizare i acordarea drepturilor de acces la o baz de date. Prin revizuire acest limbaj apare n 1989 SQL-1 ca fiind limbajul fundamental al SGBD ralaionale. n 1992 apare versiunea SQL-2 care ofer noi faciliti cum ar fi: jonciune extern, implementarea restriciei refereniale, modificarea schemei bazei de date, etc. Cel mai recent standard este SQL-3 care a fost lansat n anul 1999, acesta este considerat un limbaj complet n vederea definirii i gestiunii obiectelor complexe. Se consider c prin publicarea standardului propus n acest an a fost depit bariera relaionalului, el fiind mult mai mult dect un instrument de consultare a bazelor de date. 3.2. CONCEPTE UTILIZATE SQL*PLUS este un limbaj neprocedural i opereaz asupra datelor normalizate. Conceptele necesare a fi cunoscute pentru lucrul cu acest limbaj sunt: tabel, cheie primar, coloan, rnd, viziune, index, sinonim, cluster, baz de date relaional, comanda, blocul, cererea,raportul etc. Tabela sau relaia este un ansamblu format din n coloane (atribute/subansambluri) i m rnduri (tupluri/linii) care respect urmtoarele condiii minime: nu conine date la nivel agregat (valorile aflate la intersecia liniilor cu coloanele s fie la un nivel elementar); liniile sunt distincte unele fa de altele; nu conine coloane repetitive n descriere.

35

Cheia primar este un atribut care are valori distincte. Deci, fiecare linie se identific printr-o valoare distinct. Dou sau mai multe atribute care pot fi chei primare se numesc chei candidate. Coloana tabelei este format din valorile pe care le ia atributul n liniile tabelei respective. Rndul/tuplul/linia este format din valorile coloanelor ce se refer la o entitate a tabelei. Baza de date relaional este un ansamblu de tabele normalizate, grupate n jurul unui subiect, n principiu, bine definit. ntr-o baz de date relaional, entitile i legturile sunt transpuse n tabele. Viziunea este o tabela logic i reprezint o fereastr la date, dintruna sau mai multe tabele. Pentru ca accesul la date sa se fac mai rapid, se utilizeaz indexarea. Un index reprezint o cheie pe una sau mai multe coloane. Indexarea este dinamic deoarece se pot adaug sau terge indeci oricnd, fr ca datele memorate sau aplicaiile scrise s fie afectate. Pentru realizarea unor operaii sau pentru a utiliza n cereri nume mai scurte, se pot defini sinonime ale unor nume de tabele sau viziuni. Un cluster reprezint o anumit modalitate de grupare a rndurilor uneia sau mai multor tabele. Aceast grupare mrete viteza de execuie a unor operaii consumatoare de timp. Comanda este o instruciune emis din SQL*Plus ctre o baz de date Oracle. Blocul reprezint un grup de instruciuni SQL i PL/SQL. Cererea este o comanda SQL (SELECT) care regsete date din baza de date. Rezultatul cererii l formeaz datele regsite din baza de date. Raportul este rezultatul cererii formatat cu ajutorul comenzilor SQL*Plus. Numele unei baze de date, al unei tabele, coloane sau variabile utilizator trebuie s aib lungimea ntre 1 i 30 caractere. Un nume nu poate conine apostrofuri. Cu att mai puin, un nume utilizat ntr-o comand nu va fi introdus ntre apostrofuri. Literele mici i mari sunt echivalente (nu se face distincia ntre literele mici i mari). Un nume trebuie s nceap cu o liter, s conin numai anumite caractere (A-Z, 0-9, $, #, @, -), s nu duplice numele unui alt obiect de acelai tip i s difere de un cuvnt rezervat ORACLE. Cuvintele rezervate nu pot fi utilizate ca nume de tabele, coloane sau orice alte obiecte definite de utilizator. Ele sunt prezentate n Anexa 1.

36

3.3. FUNCII SQL Funciile se apeleaz prin sintaxa: Nume_funcie (argument1, argument2, ) Funciile SQL sunt cu un singur rnd sau scalare (returneaz un singur rezultat pentru fiecare rnd al cererii emise asupra unei tabele sau vederi) i cu mai multe rnduri numite funcii grup sau agregate (returneaz un singur rezultat pentru un grup de rnduri regsite dintr-o tabel sau vedere). A. Funciile SQL cu un singur rnd (funciile scalare) Acestea sunt funcii: numerice, caracter, de tip DATE, de conversie i alte funcii. 1) Funciile numerice accept valori numerice i returneaz rezultate numerice i sunt prezentate n tabelul 3.1. Tabela DUAL folosit n exemple, este creat automat de ctre Oracle odat cu crearea dicionarului de date i se afl n schema utilizatorului SYS, dar cu acest nume este accesibil tuturor utilizatorilor unei baze de date Oracle. Ea are o singur coloan numit DUMMY cu tipul de date VARCHAR2(1) i un singur rnd cu valoarea 'X'. Seleciile din tabela DUAL sunt utile pentru calcularea unor expresii constante cu comanda SQL SELECT. Din cauz c are un singur rnd, constanta este returnat o singur dat. Alternativ pentru aceeai activitate se poate selecta o constant, pseudocoloan sau o expresie din orice tabel. Tabelul 3.1 Funciile numericeFuncia ABS(n) Rolul funciei Returneaz valoarea absolut a numrului n. Exemple SELECT ABS(-15) "Absolut" FROM DUAL; Absolut ---------15 SELECT COS(.3)"Arc_Cosinus" FROM DUAL; Arc cosinus ---------1.26610367 SELECT ASIN(.3) "Arc_Sinus" FROM DUAL; Arc_Sinus ---------.304692654 SELECT ATAN(.3) "Arc_Tangent" FROM DUAL;

ACOS(n)

Arc cosinus de n. Rezultatul este exprimat n radiani.

ASIN(n)

Arc sinus de n.

ATAN

Arc tangent de n.

37

ATAN2

Arc tangent de n i m sau arc tangent de n/m. Deci ATAN2(n,m) este identic cu ATAN2(n/m). Retureaz numrul ntreg cel mai mic care este mai mare sau egal cu n. Cosinus de n.

CEIL(n)

COS(n)

COSH(n)

Cosinus hiperbolic de n.

EXP(n)

Returneaz o valoare egal cu e ridicat la puterea n, unde e = 2.71828183. Returneaz numrul cel mai mare care este mai mic sau egal cu n. Returneaz logaritmul natural de n, unde n > 0.

FLOOR(n)

LN(n)

LOG(m,n)

Returneaz logaritm n baza m de n.(LOGmn)

MOD(m,n)

Returneaz restul mpririi

Arc_Tangent ---------.291456794 SELECT ATAN2(.3,.2) Arc_Tangent2" FROM DUAL; Arc_Tangent2 -----------.982793723 SELECT CEIL(15.7) "NUMR" FROM DUAL; NUMR ---------16 SELECT COS(180 * 3.14/180) "Cosinus de 180 grade" FROM DUAL; Cosinus de 180 grade ---------------------1 SELECT COSH(0) "Cosinus hiperbolic de 0" FROM DUAL; Cosinus hiperbolic de 0 ---------------------1 SELECT EXP(4) "e la puterea 4" FROM DUAL; e la puterea 4 -----------------54.59815 SELECT FLOOR(15.7) "Floor" FROM DUAL; Floor ---------15 SELECT LN(95) "Logaritm natural de 95" FROM DUAL; Logaritm natural de 95 ----------------4.55387689 SELECT LOG(10,100) "Log n baza 10 de 100" FROM DUAL; Log n baza 10 de 100 -----------------2 SELECT MOD(11,4) "Modulo 4"

38

POWER (n,m)

lui m la n. Dac n este 0 returneaz valoarea m. Aceast funcie se comport diferit fa de funcia modulo clasic din matematic, atunci cnd m este negativ. Avnd n vedere semnificaia funciei MOD funcia modulo clasic din matematic se poate exprima cu formula : m - n * FLOOR(m/n) Returneaz o valoare egal cu m la puterea n.

FROM DUAL; Modulo 4 ---------3 2.

ROUND (n[,m])

Returneaz n rotunjit la un numr de m yecimale. Dac m este omis se elimin zecimalele, iar dac este negativ se face rotunjirea numrului din dreapta virgulei zecimale, dup regula: m = -1 rotunjire la nivel de zeci, m = -2 rotunjire la nivel de sute i aa mai departe.

SELECT POWER(3,2) "Putere" FROM DUAL; Putere ---------9 SELECT ROUND(15.193,1) "Rotunjire" FROM DUAL; Rotunjire ---------15.2 SELECT ROUND(15.193,-1) "Rotunjire " FROM DUAL; Rotunjire ---------20 Aici rotunjirea s-a fcut la nivel de zeci, cci scala negativ nseamn rotunjirea valorii din drepta semnului zecimal, iar scala pozitiv nseamn rotunjirea numrului din dreapta semnului zecimal la ordinul de mrime ct este scala. SELECT SIGN(-15) "Semn" FROM DUAL; Semn ----------1 SELECT SIN(30 * 3.14159265359/180) "Sinus de 30 de grade" FROM DUAL; Sinus de 30 de grade -----------------.5 SELECT SINH(1) " Sinus hiperbolic de

SIGN(n)

SIN(n)

Returneaz semnul numrului n, dup regula: n0 returneaz valoarea +1. Returneaz sinus de n n radiani.

SINH

Returneaz sinus hiperbolic

39

de n.

SQRT(n)

Returneaz rdcin ptrat din n.

TAN(n)

Returneaz tangent de n.

TANH(n)

Returneaz tangent hiperbolic de n.

TRUNC (n,m)

Returneaz valoarea lui n trunchiat la un numr de zecimale egal cu m. Dac m este omis se elimin valorile zecimale, iar dac ia o valoare negativ trunchiere se aplic prii din stnga virgulei zecimale, dup regula: m = -1 rotunjire la nivel de zeci, m= -2 rotunjire la nivel de sute i aa mai departe.

1" FROM DUAL; Sinus hiperbolic de 1 -------------------1.17520119 SELECT SQRT(26) "Rdcin ptrat" FROM DUAL; Rdcin ptrat ----------5.09901951 SELECT TAN(135 * 3.14/180) "Tangent de 135 grade" FROM DUAL; Tangent de 135 grade ----------------------1 SELECT TANH(.5) " Tangent hiperbolic de 5" FROM DUAL; Tangent hiperbolic de 5 -----------------------.462117157 SELECT TRUNC(15.79,-1) "Trunc" FROM DUAL; Trunc ---------10

2) Funciile caracter accept la intrare valori caracter i furnizeaz valori caracter sau numerice. n tabelul 3.2 sunt prezentate funciile caracter care returneaz caractere, iar n tabelul 3.3 funciile caracter care returneaz valori numerice. Valorile caracter returnate sunt de tipul VARCHAR2 dac nu se specific altfel. Tabelul 3.2 Funciile caracter care returneaz caractereFuncia CHR(n) Rolul funciei Returneaz caracterul care are valoarea binar n. Exemple SELECT CHR(67)||CHR(65)||CHR(84) "Caractere" FROM DUAL; Caractere

40

CONCAT (c1,c2)

Returneaz o valoare format din concatenarea caracterului c1 cu caracterul c2.

INITCAP ('ir')

Returneaz irul de caractere 'ir' astfel nct fiecare cuvnt al irului are prima liter n format liter mare. Returneaz irul de caractere 'ir' astfel nct toate literele irului sunt de format liter mic.

LOWER ('ir')

LPAD ('c1',n,'c2')

Returneaz irul de caractere 'c1', pe lungime de n caractere, astfel nct partea din stnga irului pn la lungimea de n caractere este umplut cu secvene de caractere egale cu 'c2'. Dac irul 'c1' este mai lung dect valoarea n, atunci se returneaz partea dreapt a irului pe lungime de n caractere. LTRIM ('c1' Returneaz partea din irul [,'c2']) 'c1' care a mai rmas dup ce au fost nlturate toate caracterele din stnga acestuia care se regsesc n setul de caractere 'c2'. NLSSORT Returnez un ir de caractere ('c1' folosite pentru sortarea [,'nlsparams']) cmpurilor de tip caracter. Caracterul 'c1' definete un marcator de sortare, n sensul c toate valorile dintr-un cmp care sunt mai mari sau mai mici dect acesta vor fi afiate sau nu prin folosirea

--CAT SELECT CONCAT( CONCAT (nume, ' este '), funcie) "Funcie" FROM tab1 WHERE codfuncie = 7000; Funcie ----------------Popescu este PROGRAMATOR SELECT INITCAP('cuvnt1 cuvnt2') "Litere mari" FROM DUAL; Litere mari --------Cuvnt1 Cuvnt2 SELECT LOWER('BUCURETI') "Liter mic" FROM DUAL; Liter mic. -------------------bucureti SELECT LPAD('Page.1',10,'*.') "LPAD exemplu" FROM DUAL; LPAD exemplu --------------*.*.*Pag.1

SELECT LTRIM('xyxXxyREST IR','xy') "LTRIM exemplu" FROM DUAL; LTRIM exemplu -----------XxyREST IR SELECT nume FROM tab1 WHERE NLSSORT(nume,'NLS_SORT=romanian' )< NLSSORT('O','NLS_SORT=romanian') ORDER BY nume; NUME ----------

41

REPLACE ('c1','c2','c3')

RPAD ('c1',n[,'c2'])

RTRIM ('c1','c2')

clauzei ORDER BY. Parametrul 'nlsparams' defineste valoare lingvistic dup care s se fac sortare i se d sub forma 'NLS_SORT = sort' n care sort definete limba dup care dorim s se fac sortarea(german, romn etc). Returneaz irul 'c1' translatat, astfel nct n irul 'c1' toate valorile egale cu irul de cutare 'c2' sunt nlocuite cu irul de nlocuire 'c3'. Returneaz irul de caractere 'c1', pe lungime de n caractere, astfel nct partea din dreapta irului pn la lungimea de n caractere este umplut cu secvene de caractere egale cu 'c2'. Dac irul 'c1' este mai lung dect valoarea n, atunci se returneaz partea stng a irului pe lungime de n caractere. Returneaz partea din irul 'c1' care a mai rmas dup ce au fost nlturate toate caracterele din dreapta acestuia care se regsesc n setul de caractere 'c2'. Returneaz poriunea din irul 'c1' care ncepe de la al m-lea caracter pe lungime de n caractere.

IONESCU MARINESCU POPESCU OLGA Not: Numele care ncep cu o liter mai mare dect 'O' nu se vor afia.

SELECT REPLACE ('MAS i MUSCA','M','C') "REPLACE" FROM DUAL; REPLACE -------------CAS i CUC SELECT RPAD('CLUJ',10,'ab') "RPAD exemplu" FROM DUAL; RPAD exemplu ----------------CLUJababab

SUBSTR ('c1',m[,n])

SELECT RTRIM('BUCURETIyxXxy','xy') "RTRIM exemplu" FROM DUAL; RTRIM exemplu ------------BUCURETIyxX SELECT SUBSTR ('ABCDEFG',3.1,4) Subir1" FROM DUAL; Subir1 ---CDEF SELECT SUBSTR('ABCDEFG',-5,4) "Subir2" FROM DUAL; Subir2 ---CDEF

42

TRANSLATE ('c1','c2','c3')

1. Translateaz irul 'c1' prin intermediul irului 'c2' la valorile din irul 'c3' dup regula: fiecare caracter din irul c1 este cutat n irul 'c2', dac este gsit valoarea acestuia este nlocuit cu caracterul din irul 'c3' a crui poziie corespunde cu poziia caracterului din irul 'c2'. 2. Dac irul 'c2' este mai lung dect irul 'c3' caracterele ce nu pot fi translatate sunt eliminate din irul 'c1'. Returneaz irul 'c1' cu toate caracterele transformate n caractere mari.

SELECT TRANSLATE ('2KRB229', '0123456789ABCDEFGHIJKLMNOPQ RSTUV', '9999999999XXXXXXXXXXXXXXXXXX XXXXXXXX') "TRANSLATE 1" FROM DUAL; TRANSLATE 1 -------9XXX999 SELECT TRANSLATE ('2KRW229', '0123456789ABCDEFGHIJKLMNOPQ RSTUVWX', '0123456789') " TRANSLATE 2" FROM DUAL; TRANSLATE 2 ----------------2229 SELECT UPPER('Bucureti') "LITERE MARI" FROM DUAL; LITERE MARI ----BUCURETI

UPPER('c1')

Tabelul 3.3 Funciile caracter care returneaz valori numericeFuncia ASCII ('c1') Rolul funciei Returneaz valoarea zecimal a primului caracter din irul 'c1'. 1.Caut n irul 'c1' ncepnd cu al n-lea su caracter a m-a apariie a irului 'c2' i returneaz poziia acestuia n irul 'c1' relativ la nceputul irului. Dac irul 'c2' nu este gsit n irul 'c1' se returneaz valoarea 0. Valorile asumate prin lips pentru n i m sunt 1. 2. Dac n este negativ cutarea se face invers de la sfritul irului. Returneaz lungimea n Exemple SELECT ASCII('Q') FROM DUAL; ASCII('Q') ---------81 SELECT INSTR ('CORPORATE FLOOR','OR', 3, 2) "INSTR" FROM DUAL; INSTR ---------14 SELECT INSTR ('CORPORATE FLOOR', 'OR', -3, 2) "INSTR INVERS" FROM DUAL; INSTR INVERS ----------------2 SELECT LENGTH('BUCURETI')

INSTR ('c1','c2' [,n[,m]])

LENGTH

43

caractere caractere CHAR.

a irului de 'c1' de tip

"LUNGIME IR" FROM DUAL; LUNGIME IR -------------------9

3) Funciile de tip DATE opereaz cu tipuri de date de tip DATE i sunt prezentate n tabelul 3.4. Toate funciile de tip DATE returneaz valori de tip DATE, mai puin funcia MONTH_BETWEEN care furnizeaz o valoare numeric. Structurile formatului fmt de afiare a datelor pentru funciile de tip DATE sunt prezentate n tabelul 3.7. Tabelul 3.4 Funciile de tip DATEFuncia ADD_MONTHS(d,n) Rolul funciei Returneaz data d plus un numr de luni egal cu n. Exemple Dac n coloana data1 aferent numelui 'POPESCU' din tabela tab1 avem data 17 septembrie2005 cu comanda de mai jos se va ob'ine data 17 octombrie 2005. SELECT TO_CHAR (ADD_MONTHS(data1,1), 'DD-MON-YYYY') "Luna urmtoare" FROM tab1 WHERE nume = 'POPESCU'; Luna urmtoare ----------17-OCT-2005 Cu aceast funcie se poate determina numrul zilelor rmase din luna curent. SELECT SYSDATE, LAST_DAY(SYSDATE) "ULTIMA",LAST_DAY(SYSDATE) - SYSDATE "ZILE RMASE" FROM DUAL; SYSDATE ULTIMA ZILE RMASE -------------------------7 23-SEP-05 30-SEP-05 SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(data1), 5), 'DD-MON-YYYY') "Cinci luni" FROM tab1 WHERE nume = 'POPESCU'; Cinci luni ----------28-FEB-2006 SELECT MONTHS_BETWEEN (TO_DATE('02-09-2005','MM-DD-YYYY'), TO_DATE('01-08-2005','MM-DD-YYYY') )

LAST_DAY (d)

Returneaz data ultimei zile din lun.

MONTHS_ BETWEEN (d1, d2)

Returneaz numrul de luni dintre datele d1

44

NEXT_DAY (d, 'c1')

i d2. Dac d1 i d2 sunt acelei zile din lun sau sunt ultimele zile din lun rezultatul este un numr ntreg, altfel Oracle calculeaz fraciuni din lun bazat pe o lun cu 31 zile. Returneaz data primei zile a sptmnii dup ziua definit de irul 'c1' i care este dup data d. Returneaz data d rotunjit la unitatea de timp specificat de ctre formatul fmt, conform specificaiilor de la sfritul tabelului. Returneaz data i timpul curent.

"Luni" FROM DUAL; Luni ---------1.03225806

ROUND (d[,fmt])

n exemplul de mai jos se returneaz data zilei care urmeaz zilei de Mari, dup data de 15 martie 1999. SELECT NEXT_DAY('15-MAR-05','TUESDAY') "ZIUA URMTOARE" FROM DUAL; ZIUA URMTOARE --------22-MAR-05 SELECT ROUND (TO_DATE ('27-SEP05'),'YEAR') "Noul an" FROM DUAL; Noul an --------01-JAN-06

SYSDATE

TRUNC (d,[fmt])

Returneaz data d fr timp trunchiat la o unitate specificat de formatul fmt, iar dac este absent se face trunchierea la ziua cea mai

SELECT TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS') "Data i timpul curent" FROM DUAL; Data i timpul curent ------------------27-09-2005 20:27:11 SELECT TRUNC(TO_DATE ('27-SEP-05','DD-MON-YY'), 'YEAR') "Anul nou" FROM DUAL; Anul nou --------01-JAN-05

45

apropiat. Formatul fmt utilizat de funciile ROUND i TRUNC Formatul fmt Semnificaia formatului fmt CC, SCC Se rotunjete la nivel de secol (primii doi digii ai anului exprimat pe patru digii + 1) Exemplu: 1898 se rotujete la 1998. SYYYY, YYYY, YEAR SYEAR, Se rotunjete la nivelul 01 ianuarie a anului din data care YYY, YY, Y se rotunjete. Exemplu: 27-sep-05 se rotunje;te la 01-jan-05. Q Rotunjire la nivel de trimestru (Se routunjete n sus la a asesprezecea zi a lunii a doua a trimestrului). MONTH, MON, MM, RM Rotunjire la nivel de lun (Se routunjete n sus la a asesprezecea zi a lunii).

4) Funciile de conversie convertesc o valoare de la un tip de dat la alt tip de dat. Aceste funcii au formatul general de forma tip_de_dat TO tip_de_dat i sunt prezentate n tabelul 3.5. Tabelul 3.5 Funciile de conversieFuncia CONVERT ('c1', set_destinaie, [,set_surs] ) Se