+ All Categories
Home > Documents > Baze de Date Examen.[Conspecte.md]

Baze de Date Examen.[Conspecte.md]

Date post: 02-Aug-2015
Category:
Upload: ion-bragari
View: 146 times
Download: 8 times
Share this document with a friend
18
1.Definiţiile BD şi SGBD. Funcţionalităţi. Exemple. O baza de date este o colectie persistenta de informatii structurate, organizata si construita pentru facilitarea accesului si prelucrarii eficiente. SGBD-(sistem de gestiune a BD)soft ce permite crearea si gestiunea bazelor de date. sistemul de gestiune a bazei de date (SGBD) – ansamblu de programe care realizează gestiunea şi prelucrarea complexă a datelor, asigurând interfaţa între BD şi utilizatori. Reprezintă programul software care asigură : - definirea bazei de date, - încărcarea datelor în baza de date, - accesul la date (interogare, actualizare), - întreţinerea bazei de date, - securitatea datelor, - reorganizarea bazei de date. 2. Proprietatea „Nonredundanţa” în baza de date. Exemplu. .Proprietatea “nonredundanta” in priectarea BD trebuie sa tindem sa evitam existenta redundantelor,adica a existentei mai multor cai care arata spre aceeasi valoare. O relaţie este redundantă dacă aceeaşi informaţie poate fi obţinută prin intermediul altor relaţii. Obiectivul este de a realiza un model de date minimal,deci relaţiile redundante nu sunt necesare, acestea trebuie eliminate. 3. Proprietatea „Independenţa” în baza de date. Independenta-e o problema a carei rezolvare constitue un scop in sine in conceptia si organizarea oricarei bd. Independenta datelor inseamna ca exista o delimitare neta intre reprezentarea fizica a datelor si imaginea pe care o are utilizatorul asupra acestor date. Problema independentei datelor prezinta 2 aspecete: Independenta fizica-masura a imunitatii aplicatiilor fata de modificarile in structura fizica de merorare a datelor. Independenta logica- imunitate a modelului propriu al fiecarui utilizator fata de modificarile in structura logica globala a bd. 4. Utilizatorii BD şi rolurile lor. Exemple. -neinitializati(functionari) -instruiti(absolventii colegiului)interactioeaza prin limbaje direct cu BD. -programatori -administratori-preocupati de mentinerea BD,drept de acces,securitate,operatii de actualizare. 5.Arhitectura ANSI/X3/SPARC Consta din 3 nivele: -nivelul fizic(intern)-ne ofera structuri cu care noi construim BD. -nivelul logic-administratorul proiecteaza BD.Alegem optiunile pentru nivelul fizic prin nivelul logic. -nivelul extern(utilizatorului)Utilizatorul interactioneaza cu BD. Nivelul intern constituit din schema interna ce descrie structura de stocare fizica a datelor in baza de date 1
Transcript
Page 1: Baze de Date Examen.[Conspecte.md]

1Definiţiile BD şi SGBD Funcţionalităţi ExempleO baza de date este o colectie persistenta de informatii structurate organizata si construita pentru facilitarea accesului si prelucrarii eficienteSGBD-(sistem de gestiune a BD)soft ce permite crearea si gestiunea bazelor de datesistemul de gestiune a bazei de date (SGBD) ndash ansamblu de programe care realizează gestiunea şi prelucrarea complexă a datelor asiguracircnd interfaţa icircntre BD şi utilizatori Reprezintă programul software care asigură

- definirea bazei de date- icircncărcarea datelor icircn baza de date- accesul la date (interogare actualizare)- icircntreţinerea bazei de date- securitatea datelor- reorganizarea bazei de date

2 Proprietatea bdquoNonredundanţardquo icircn baza de date ExempluProprietatea ldquononredundantardquo in priectarea BD trebuie sa tindem sa evitam existenta redundanteloradica a existentei mai multor cai care arata spre aceeasi valoareO relaţie este redundantă dacă aceeaşi informaţie poate fi obţinută prin intermediul altor relaţii Obiectivul este de a realiza un model de date minimaldeci relaţiile redundante nu sunt necesare acestea trebuie eliminate3 Proprietatea bdquoIndependenţardquo icircn baza de dateIndependenta-e o problema a carei rezolvare constitue un scop in sine in conceptia si organizarea oricarei bd Independenta datelor inseamna ca exista o delimitare neta intre reprezentarea fizica a datelor si imaginea pe care o are utilizatorul asupra acestor dateProblema independentei datelor prezinta 2 aspeceteIndependenta fizica-masura a imunitatii aplicatiilor fata de modificarile in structura fizica de merorare a datelorIndependenta logica- imunitate a modelului propriu al fiecarui utilizator fata de modificarile in structura logica globala a bd4 Utilizatorii BD şi rolurile lor Exemple-neinitializati(functionari)-instruiti(absolventii colegiului)interactioeaza prin limbaje direct cu BD-programatori-administratori-preocupati de mentinerea BDdrept de accessecuritateoperatii de actualizare5Arhitectura ANSIX3SPARCConsta din 3 nivele-nivelul fizic(intern)-ne ofera structuri cu care noi construim BD-nivelul logic-administratorul proiecteaza BDAlegem optiunile pentru nivelul fizic prin nivelul logic-nivelul extern(utilizatorului)Utilizatorul interactioneaza cu BD1048708Nivelul intern constituit din schema interna ce descrie structura de stocare fizica a datelor in baza de date1048708 Nivelul conceptual sau schema conceptuala descrie structura intregii baze de date pentru o comunitate de utilizatori La nivelul conceptual se face o descriere completa a bazei de date ascunzind detaliile legate de stocarea fizica concentrindu-se asupra descrierii entitatilor tipurilor de date relatiilor dintre ele precum sia restrictiilor asociate1048708 Nivelul extern sau nivelul vizual (utilizator) include o colectie de scheme externe ce descriu baza de date prin prisma diferitilor utilizatori Fiecare grup utilizator descrie baza de date prin prisma propriilor interese Exista tendinta la acest nivel ca grupuri de utilizatori sa ascunda detalii de care nu sint interesate Si la acest nivel se pot folosi modele de implementare sau modele de nivel inalt6Nivelul fizic de abstracţie icircn BD Modele de date ExempleFisiere-secventiale-sortate in ordinea cresterii cheii primareAvem acces la instructiunea n daca am trecut prin instructiunea n-1-indexat secventiale-index este fisierul auxuliar anexat la cel de bazaIndexsii se construiesc pentru fiecare cheie secundaraFaciliteaza accesul-B-arbori-daca sint numai pointeri si nu date atunci se numesc B+-arbori-tabele de dispersie(hash-table)fisiere cu acces direct7Nivelul logic de abstracţie icircn BD Modele de date ExempleModele de date

1

-ierarhic - Nod artificial

-retea programarea devine complicata

-relational(propus de Codd 1970)

8Nivelul conceptual de abstracţie icircn BD Modele de date ExempleLa acest nivel se construieste schema conceptuala a BDModele de date-entitatea asocieriiElementeentitati si asocieri intre entitatiAtribute(numeprenume)UML-limbaj universal de modelare-retele semantice-model ce se foloseste in baze de cunostinte9Nivelul de abstracţie a viziunilor utilizatorilor icircn BD Modele de date ExempleScheme conceptuale particulare ale utilizatorului10Etapa de proiectare fizică a bazelor de dateProiectarea fizică a BDUrmătoarele aspecte s-ar putea dovedi de importanţă pentru succesul proiectării BD lucrul interactiv cu utilizatorii cacirct de mulţi trebuie urmărirea unei metodologii structurate de-a lungul procesului de modelare a datelor utilizarea unei abordări coordonată prin date icircncorporarea consideraţiilor structurale şi de integritate icircn modelul de date utilizarea diagramelor pentru a reprezenta cacirct mai mult din modelul de date utilizarea unui limbaj de proiectare a BD Data Base Design Language (BDDL) pentru a reprezenta semantica suplimentară a datelor construirea unui dicţionar care să suplimenteze diagramele modelului de date disponibilitatea de a repeta anumite etapeMetodologia de proiectare a BD constă dintr-o serie de etape11Etapa de proiectare logică a bazelor de dateConstruirea tabelelor si a legaturilor dintre acesteaEtapele metodologiei de organizare logică a bazelor de date pentru modelul relaţional sunt următoareleConstruirea şi validarea modelului de date logice pentru fiecare vedere a utilizatorilorConstruirea şi validarea modelului de date logic globalEtapa E2 are ca obiectiv realizarea unui model de date logic ndash bazat pe modelul de date conceptual al vederii utilizatorului asupra icircntreprinderii ndash urmat de validarea acestuia prin utilizarea tehnicii de normalizare şi conformtranzacţiilor ceruteOperaţiile efectuate icircn cadrul acestei etape (E2) suntE21 Transpunerea modelului de date conceptual local icircn modelul de date logic localE22 Extragerea relaţiilor din modelul de date logic localE23 Validarea modelului prin utilizarea normalizăriiE24 Validarea modelului conform tranzacţiilor utilizatoruluiE25 Desenarea diagramei Entitate ndash Relaţie (ER)E26 Definirea constracircngerilor de integritateE27 Revizuirea modelului de date logic loca icircmpreună cu utilizatoriiLa icircncheierea acestei etape (E2) trebuie să se obţină un model al vederilor utilizatorului care să fie riguros cuprinzător şi fără echivoc Dacă sunt respectate aceste cerinţe se va dispune icircn acest stadiu de un fundament solid pentru a putea trece la etapa următoare (E3) care constă icircn combinarea modelelor de date logice locale individuale pentru a realiza un model de date logic global al icircntreprinderii12Analiza cerinţelor informaţionale la etapa de proiectare conceptuală a bazelor de date

2

Se aduna informatia de la diviziuni si subdiviziuni Prima etapă icircn proiectarea BD constă icircn realizarea unor modele de date conceptuale pentru fiecare vedere a utilizatorilor asupra icircntreprinderii O vedere a utilizatorului reprezintă datele cerute de către un anumit utilizator pentru a lua o decizie corectă sau a efectua o anumită activitate De obicei vederea unui utilizator constituie o zonă funcţională a icircntreprinderii cum ar fi producţia marketing vacircnzările personalul contabilitatea sau controlul aprovizionării Un utilizator poate fi o persoană reală sau un grup de persoane care utilizează icircnmod direct sistemul Utilizatorul se poate referi la un raport produs de către sistem sau poate solicita rezultatele unei tranzacţii care trebuie acceptată de către acestea Vederile utilizatorilor pot fi identificate utilizacircnd diverse metode pot fi examinate diagramele de flux de date care au fost realizate mai icircnainte icircn scopul de a identifica zonele funcţionale şi posibil funcţiile individuale ar putea fi chestionaţi utilizatorii se pot examina procedurile rapoartele şi formulările şisau observa icircntreprinderea icircn funcţiune13Modelarea viziunilor utilizatorului la etapa de proiectare conceptuală a bazelor de dateConsta din 3 etape-analiza cerintelor informationale-modelarea schemelor conceptuale particulare (viziunile user)-integrarea schemei particulare si crearea schemei globale1415Elementele modelului relaţional atribute domenii tupluri Definiţii şi exempleO entitate este un obiect real sau conceptual cu o existenta independenta O entitate este un obiect cu existenta fizica persoana particulara automobil companie activitate curs universitar etcOrice entitate are o serie de proprietati numite si atribute ce particularizeaza entitatea respectiva De exemplu pentru o entitate angajat se pot enumera o serie de atribute cum sint nume adresa data nasterii sex salariu Atribut (attribut) o unitate specifică a informaţiei despre un subiect coloană sau cacircmp icircn tabelDomeniul o multime finite de valori de acelasi tip pe care le poate lua atributulTuplu-secventa de elemente care merg unul dupa altul dar nu fixam ordinea16Elementele modelului relaţional schemă relaţională relaţie bază de date schemă a bazei de date Definiţii şi exempleRelatie-multimea finita de tupluriRelaţiile icircntre două tabele sunt unidirecţionale astfel că o tabelă devine principală iar cealaltă devine subordonată Schema relatiei-capulBaza de date - un ansamblu de date structurate accesibile unei comunităţi de utilizatoriSchema bazei de date poate fi reprezentată printr-o diagramă de structură icircn care sunt puse icircn evidenţă şi legăturile dintre tabele17 Noţiunea de cheie Tipuri de chei ExempleCheiendashun camp sau o asociatie de campuri ce are valori distincte NOT NULL pentru fiecare inregistrare din bdCheie primară garantează unicitatea şi minimalitatea şi obligă mulţimea de atribute să fie cheie primară Pentru aceasta se utilizeaza clauza PRIMARY KEYCheie secundară garantează unicitatea atributelor ^^ astfel declarate Se utilizează clauza UNIQUEŞi obligatoriu trebuie adiţional specificat NOT NULL Restrictia precizeaza faptul ca un camp este o cheie straina fiind cheie primara a altei tabele

Definire in tabela angajat a cheii straine pentru campul D_nrCREATE TABLE Angajat (NUME VARCHAR(15)INI CHAR(1)

PREN VARCHAR(12)SSN CHAR(9) CONSTRAINTS ang_PK PRIMARY KEYDAT_NA CHAR(8)ADR VARCHAR(30)SEX CHAR(1)SALARIU INTEGERSSSN CHAR(9)D_NR INTEGER CONSTRAINTS ang_FK REFERENCES departament(D_nr) FOREIGN KEY(D_nr) on delete cascade|on delete set NULL)

18 Constracircngeri de integritate structurale ExempleNot nullspecifica faptul ca un cimp nu poate avea valori necunoscutenull

3

Uniquedetermina comportamentul cimpurilor care nu fac parte din cheia primaraConstringerea Unique asigura ca valorile duplicate nu vor fi introduse pentru cimpurile specificateInsa cimpurile specificate pot avea valori nuleiar sistemul creeaza automat din ele un index pentru facilitatea cautarii in tabeleCheia primaracimpurile nu pot contine valori duplicateCheia externaun cimp sau o multime de cimpuri ce orespund cheii primare a altui tabelCheia primara se utilizeaza pentru a defini legaturile dintre tabeleExtabelul comenzi contine codfurnizor ca cheie primaracod furnizor din tabela furniozor este cheie externa pentru tabelul comenzi19 Constracircngeri de integritate comportamentale ExempleCheck limiteaza valorile care pot fi luate de un cimp (sau mai multe cimpuri)In cazul actualizarii BD sistemul testeaza constringerea booleana care urmeaza dupa cuv rezervat checkDaca adevarat-este acceptata actualizareaex CHECK(ldquoan studiurdquo BETWEEN 1 and 5) Reguli

orice restricţie are asociat un nume (explicit sau implicit) Dacă folosim CONSTRAINT atunci numele trebuie dat explicit Cheile multiple pot fi definite doar la nivelul tabelei NOT NULL doar la nivelul coloanei

20 Operaţii de actualizare a relaţiilor INSERT ndash Adaugă un tuplu sau mai multe icircntr-o relaţie1048708 UPDATE ndash Modifică valorile unor atribute icircntro relaţie specificată icircn tuplurile specificate deun criteriu1048708 DELETE ndash Şterge tuplurile dintr-o relaţie care satisfac un criteriu specificat21 Operaţiile tradiţionale pe mulţimi uniunea intersecţia şi diferenţa Proprietăţi Exemple

Operatiile binare asupra relatiilor uniunea intersectia si diferenta necesita ca operanzii (relatiile) sa fie defintii pe scheme compatibile

Uniunea a doua relatii compatibile r(R) si s(S) notata cu r U s e o relatie definita pe schema R sau S si consta din tuplurile ce apartin relatiilor r sau s Operatia uniunea are doua proprietati Ea e comutativa adica r U s = s U r Ea este si asociativa adics (r U s) U q = rU(s U q) pentru relaiile mutual compatibile r s si q

Intersectia a doua relatii compatibile r(R) si s(S) notata cu r cap sneste o relatie definita peschema R sau S si consta din tuplurile ce apartin concomitent relatiilor r si s

Diferenta a doua relatii compatibile r(R) si s(S) notata cu r s este o relatie definita pe multimea de atribute R sau S si are icircn calitate de tupluri toate tuplurile din relatia r ce nu sunt icircn s Diferena nu se bucura de proprietatea comutativa adica r s ne s r Totodata nu e nici asociativa adica (r s) q ne r (s q) fiindca (r s) q = r (s U q) pentru orice relaii mutual compatibile r s si q

Intersectia q=rcaps

Diferenta q1=rs q2=sr

22 Operaţia produsul cartezian Proprietăţi Exemple Produsul cartezian a doua relatii r(A1hellipAn) si s(B1hellipBm) notat cu r s

este o multime de tupluri (si nu icircntotdeauna o relatie) definite pe multimea de atribute A1hellipAn B1hellipBm Tuplurile reprezinta toate posibilele asociatii de

4

tupluri din r si s daca tr Є r si ts Є s atunci concatenatia trts este un tuplu icircn r s pentru orice pereche de tupluri tr si ts din r si s respectiv exista un tuplu t icircn r s icircncacirct t[Ai]=tr[Ai] 1leilen si t[Bj]=ts[Bj 1lejlem

Produsul cartezian nu este o operatie comutativa Icircn schimb se bucura de proprietatea asociativa23 Operaţiile complement şi complement activ Proprietăţi Exemple

Fie relatia r(R) Notam prin tup(R) multimea tuturor tuplurilor asupra atributelor schemei R si a domeniilor lor Complementul relatiei r notat cu ־r este ־r = tup(R) r

Fie r o relatie asupra schemei R AЄR si adom(A) = a|aЄdom(A) amp Ǝ tЄrampt[A] =a Multimea de valori adom(A) se numeste domeniul activ al atributului A Notam cu atup(R) multimea tuturor tuplurilor asupra atributelor schemei R si a domeniilor lor active Atunci complementul activ notat cu ~r este ~r = atup(R) r

Complemen tul activ

Complemen tul

24

Operaţia selecţia

Proprietăţi ExempleSelectia este o operatie unara Pentru selectarea unor

tupluri dintr-o relatie e necesara specificarea conditiilor de selectare Icircn rezultat se obtine o relatie ce e o submultime de

tupluri a relatiei initiale Selectia relatiei r (R) conform formulei F unde F e aplicabila relatiei r(R) e o submultime a relatiei r(R)

notata cu σF(r) ce consta din toate tuplurile tЄr ce satisfac F adica σF(r) = t | t Є r amp F(t)

Selectia s=σ((A = B) amp (D5))(r)25 Operaţia proiecţia Proprietăţi ExempleProiectia e o operatie unara

Proiectia relatiei r asupra multimii de atribute X notata cu πx(r) e o relatie cu schema X ce consta din X-valorile tuturor tuplurilor din r πx(r) = t X| t Є r

Proiectia s = πAC(r)26 Operaţia joncţiune Proprietăţi Exemple

5

Fie doua relatii r(R) si s(S) Jonctiunea relatiilor r si s (notatia uzuala r|x|s) este o relatie cu schema RS Tuplul t apartine relatiei rezultat daca exista tuplurile tr si ts icircn r si s respectiv si satisfac t[R]=tr si t[S]=ts adica r |x| s = t | t[R] = tramp t[S] = tsamp trЄ r amp ts Є s Deci fiecare tuplu din relatia rezultat este o concatenare a unui tuplu din r cu un tuplu din s ce au (RcapS)-valori egale Atributele cu acelasi nume icircn schema relatiei rezultat se iau o singura data Operatia jonctiunea nu este comutativa Icircn schimb ea se bucura de proprietatea asociativa

Jonctiunea q = r |x| s27 Interacţiunea dintre operaţiile joncţiunea şi proiecţia Exemple

Fie relatiile r(A B) si s(B C) Notam q=r|x|s si r1 = πAB(q) Icircn urma operatiilor observam ca tuplurile relatiei r1 constituie o submultime proprie a relatiei r

28 Operaţia θ-joncţiune Proprietăţi Exemple

θ-jonctiunea relatiilor r(R) si s(S) notata cu r|x|AθBs este o multime de tupluri concatenate de forma trts unde tr Є r ts Є s si tr(A) θ ts(B) adicar|x|AθBs = trts | tr Є r amp ts Є s amp tr(A) θ ts(B)

Operatia θ-jonctiunea poate fi exprimata prin operatiile produsul cartezian si selectia Rezultatul unei θ-jonctiuni este acelasi cu rezultatul unei selectii operate asupra unui produs cartezian adica r|x|AθBs = σAθB(r s)

29 Operaţia semijoncţiunea Proprietăţi Exemple

Semijonctiunea e o operatie binara Ea consta icircn construirea unei relatii din cele doua si e formata numai din tuplurile unei singure relatii ce participa la jonctiune

Fie doua relatii r(R) si s(S) Semijonctiunea relatiei r si s notata cur|x s este o multime de tupluri determinata de expresia r|x s = πR(r|x|s)

6

Semijonctiunea q =r|xs30 Operaţia divizarea Proprietăţi Exemple

Fie r(R) si s(S) doua relaii si S R Notam Q = R S Diviziunea relatiei r la relatia s notata cu rs este o relatie definita pe multimea de atribute Q rs = t| pentru tsЄ s(S) Ǝ tr Є r(R) ce satisface tr[Q]=t si tr[S]=ts

Operatia diviziunea poate fi conceputa drept operatie inversa produsului cartezian Fie q=rs Atunci qs produce o relatie cu schema R si relatia q va contine numarul maximal de tupluri ce ar satisface expresia qs r

Diviziunea q= rs

31Componentele limbajului SQL2

Componentele pe care le cuprinde limbajul SQL sunt

urmatoarele 1Componenta de descriere a datelor relationale (limbajul de descriere a datelor-LLD) 2Componenta de manipulare a datelor relationale(libajul de manipulare a datelro-LMD) Ambele fiind absolut necesare in gestiunea BD Pe linga aceste componente principale standartul SQL2 mai prevede si alte compon ale limbaj 3Controlul tranzactiilor contine comenzi pt specific tranzactiilor 4Controlul securitatii si refacerea datelor contine comenzi de administrare a bazei de date pt definirea utilizatorilor si a dreputului de acces la tabele32Tipuri de date numerice icircn SQL2 şi Transact SQL ExempleTipul numeric include numere intregi e diferite dimensiuni(integer sau int reprez pe 4 octetismallint pe 2 octeti)numere reale reprez in virdula flotanta cu diferite precizii(float-4 octetireal si double[precision]-8octeti)si numere zecimale reprezentate cu precizia dorita(tip numerci sau decimal)Formatul de repcentare a numer zecimale cu precizia dorita estenumerci[(ps)] sau decimal[(ps)]) unde p(precizia) este nr otal de cifre afisate iar s (scara) nr de cifre dupa punctul zecimalExemplu decimal(41) va fi 11162 si nu 162 sau 11162133 Tipuri de date secvenţe de caractere icircn SQL2 şi Transact SQL ExempleTipul sir de caractere permite definirea sirurilor de caractere de lungime fixa(char(n) sau character (n))precum si a sirurilor de caractere cu lungime variabila (varchar(n))Ambele tipuri pot reprezenta siruri de maximum n caractere cu diferenta ca pt siruri de lungime mai mica decit n la tipul char(n) se completeaza sirul cu spatii albe pina la n caractere in timp ce la tipul varchar(n) se memoreaza numai atitea caractere cit are sirul datText-pt secvente de caractere ASCI cu lungime variabila mai mare de 8Ko(de exemplu documente Html) dar care nu depaseste valoarea (2147483647 caractere) 34 Tipuri de date temporale icircn SQL2 şi Transact SQL Exemple (Date speciale)Cursor-contine referinta la un cursorHierarchyd-pt crearea tabelelor cu structura ierarhicaTable- tip special de date utilizat pt stocarea unui rezultat pt tratarea ulterioarapt pastrarea unei multimi de rind obtinute in calitate de rezultat al unei fti cu valoarea unui tabelTimestamp-identificator unic pt toata baza de date se util in calitate de mecanism de marcare a versiunii unui rind din tabelXML-tip de date ce pastreaza date XML35 Definirea schemei unei relaţii icircn SQL2 Exemple

7

Schema unei relaţii este numele relaţiei urmată de lista de atribute pentru fiecare atribut precizacircndu-se domeniul asociat Astfel pentru o relaţie R cu atributele A1 A2 An şi domeniile D1 D2 Dmcu m le n schema relaţiei R poate fi prezentată astfel

R(A1 D1 A2D2 An Dm) sauR

A1D1 AnDm

Fig 34 Reprezentarea schemei relaţiei R36 Constracircngeri de comportament icircn SQL2 ExempleSpecifica caracteristicile independente ale unui atribut(sau domeniu)Ele exprima semanticca elementelor domeniilorDe exemplu valorile atributului Nota_med trebuie sa fie mai mare decit zerodar nu poate depasi zeceSau nici o persoana de virsta 25 ani nu poate avea o vechime in munca de 37 de aniDeci conform acestei restrictii valorile atributului trebuie sa se incadreze intre anumite limite37 Constracircngeri structurale icircn SQL2 Exemple Constringeri de dependenteSpecifica legatura dintre atribute(sau domenii)Aici putem identifica asa numita dependenta de multime de atributeAngajat Salariu Departament Manager In relatia personalun manager este in acelasi timp un angajatdar nu orice angajat este managerDeci avem ca dom(manager) Ui dom (angajat)38 Modificarea şi suprimarea schemei relaţionale icircn SQL239Cele mai simple interogari (numai cu proiectiaInterogare (querry) este o operatie prin care se obtin datele dorite dintro baza de date selectate conform unui anumit criteriu(conditie)Proiectia ndashoperatie relationala unara prin care se selecteaza o submultime de atribute ale relatieiNumele si reducerile clientilor din OrheiProiectia Cl_numereducere (Selectia (clienti) cloras=rdquoorheirdquo40Interogări cu criterii de selecţie icircn SQL2 Exemple

Interogarile cu criterii de selectie in SQL sunt utilizate pu selectarea datelor din tabeleAre urmatoarea sintaxa de bazaSELECT[TIP]ltlista de cimpurigtFROMltlista de tabelegt[CONDITIE]Lista de cimpuri-lista de cimpuri ce trebuie selectateLista de tabele-lista de tabele de unde datele trebuie sa fie selectateCONDITIE-defineste un filtru pu interogare folosind unele clause ca WHEREEX ModelPret FROM pc_uri WHERE Cd=rsquo40xrsquo ORDER BY Pret

41Interogări cu funcţii de agregare icircn SQL2 Exemple Fde agreg -prelucreaza multimi de inregistrari(linii) ale tabelului si returneaza un anumit rezultatMajoritatea acestor functiide obiceiactioneaza asupra tuturor liniilor tabeluluiEle accepat parametriiAll-face ca functia sa considere toate inregistrarile inclusiv cele duplicateDISTINCT-face ca funct Sa considere numai inregistrarile ce nu poseda o valoare duplicataAVG-returneaza media aritmetica a lui xCOUNT-returneaza nr de linii a interogariiMAXMIN-returneaza valoarea maxima sau minima a exprMAX sau MIN ([DISTINCT|ALL)] expr)EX SELECT AVG(Viteza) As Viteza_medie MAX(Viteza) As Viteza_maxima MIN(Viteza) As Viteza_minina42Interogări cu agregarea tuplurilor icircn SQL2 Exemple43 Interogări de actualizare (inserare şi ştergere) a datelor icircn SQL2 ExempleLimbajul TRANSACT-SQL propune 3 instructiuni ce corespund celor 3 operatii de actualizare a bazei de dateinserarea(instructiunea INSERT)-pentru inserarea datelorsuprimarea(instructiunea DELETE)-pu stergerea datelor si modificarea(instructiunea UPDATE)-pu modificarea datelorToate optiunile se asupra tabelelor (fizice sau virtuale) si actualizearea se petrece la nivel de linie de tabelEXCREATE TABLE clienti(Cod_client INTTara CHAR(2)DEFAULT(sbquoMDrsquo)Nume CHAR(20))

8

INSERT clienti (Cod_clientTaraNume)VALUES(12340rsquoMDrsquorsquoIon Petrachersquo) INSERT clienti DEFAULT VALUES INSERT clienti VALUES (12560rsquoFRrsquorsquoJack Londonrsquo)44 Interogări de actualizare (modificare) a datelor icircn SQL2 ExempleUPDATE-operatia de modificare a continutului unuia sau a mai multor cimpuri ale tuplurilorSintaxa instructiunii UPDATE lttabelgt SETltcoloanagt=ltvaloare nouagt WHERE ltconditiegt In caz cind nici o conditie nu e impusa toate cimpurile tuturor inregistrarilor vor fi alterate de valorile noiEX UPDATE functionari SET Sector=rsquoAdministratiersquo WHERE Sector=rsquoFinantersquo SELECT FROM functionari ORDER BY Sector45 Interogări cu uniuni icircn SQL2 ExempleOperatia UNION-permite fuzionarea a doua selectii pentru a obtine o multime de tupluri egala cu uniunea acestor doua selectiiEX SELECT produseModel Pret FROM produsepc_uri WHERE produseModel=pc_uriModel AND Producator=rsquoBrsquo UNION SELECT produseModelPret FROM produselaptop_uri WHERE produseModel=laptop_uriModel AND Producator=rsquoBrsquo UNION SELECT produseModelPret FROM produseimprimante WHERE produseModel=imprimanteModel AND Producator=rsquoBrsquo46Interogări cu intersecţii icircn SQL2 ExempleInterogarile cu operatiile uniuneintersectia si diferenta sunt foarte aproape de interogarile scrise in algebra relationalaSe formuleaza doua interogari care construiesc relatii cu scheme compatibile adica cu acelasi nr de atribute si de acelasi tip si aceste cereri sunt legate cu cuvintele cheie UNIONINTERSECT sau EXCEPT Pentru a gasi valori ce coincid in doua sau mai multe tabele se poate utiliza instructiunea INTERSECTEX SELECT Model FROM produse INTERSECT SELECT Model FROM pc_uriDaca INTERSECT este substituit cu EXCEPT se obtine un rezultatintr-un felinvers celui precedentadica se vor afisa modelele de produse din primul tabel care nu sunt in al doilea tabel

47Interogări cu diferenţe icircn SQL2 ExempleInterogarile cu operatiile uniuneintersectia si diferenta sunt foarte aproape de interogarile scrise in algebra relationalaSe formuleaza doua interogari care construiesc relatii cu scheme compatibile adica cu acelasi nr de atribute si de acelasi tip si aceste cereri sunt legate cu cuvintele cheie UNIONINTERSECT sau EXCEPTEX SELECT Model FROM produse EXCEPT SELECT Model FROM pc_uri48Interogări cu joncţiuni icircn SQL2 ExempleDeseoripu a obtine un rezultat complet este necesara selectarea datelor din doua sau mai multe tabeleTabelele din baza de date sunt legate intre ele prin cheiEste importantindeosebirolul cheii primare care face ca coloanele ce o constituie sa posede o valoare unica pu fiece rindDe exe necesar sa se afiseze producatorul si viteza laptopurilorAtributul viteza se afla in tabelul laptop_uriInformatia referitoare la producatori se afla in tabelul produserezultatul este ordonat dupa cimpul ProducatorEX SELECT ProducatorViteza FROM produselaptop_uri WHERE produseModel=laptop_uriModel ORDER BY ProducatorCU Jonctiune internaEX SELECT ProducatorViteza FROM produse INNER JOIN laptop_uri ON produseModel=laptop_uriModel ORDER BY Producator49Interogări imbricate cu ALL icircn SQL2 ExempleSubinterogare este o cerere care restituie un singur atribut Interogarea utilizată in comparaŃie se defineste in interiorul predicatului din clauza where si se numeste interogare imbricatăAll - face ca functia sa considere toate inregistrarile inclusive cele duplicateCuvantul cheie all specifică faptul că linia este validă dacă valoarea atributului se află in

9

relatie cu toate valorile returnate de interogareSă se găsească departamentele in care nu lucrează nici un angajat cu numele Ionescuselect Deptfrom Departamentwhere Dept ltgt all (select Deptfrom Angajatiwhere Nume = rsquoIonescursquo)Această interogare poate fi exprimată cu ajutorul operatorului diferenŃăselect Deptfrom Departamentexceptselect Deptfrom Angajatiwhere Nume = rsquoIonescursquo 50 Interogări imbricate cu ANY icircn SQL2 Exemple Cuvantul cheie any specifică faptul că linia este validă dacă valoarea atributului se află inrelatie cu cel putin o valoare returnată de interogarea imbricatăSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Exemplu Să se găsească angajaŃii ce lucrează intr-un departament din Iasiselect Nume Prenumefrom Angajatiwhere Dept = any (select Deptfrom Departamentwhere Oras = rsquoIasirsquo)ObservaŃie Această interogare poate fi rezolvată prin realizarea unei joncŃiuni intre celedouă tabele 51 Interogări imbricate cu EXISTS icircn SQL2 Exemple Acest operator acceptă ca parametru o interogare imbricată sireturnează valoarea adevărat doar dacă interogarea nu produce un rezultat vidSă se găsească persoanele care au acelasi nume si prenume dar coduri diferiteselect from Persoana Pwhere exists (select from Persoana P1where P1Nume = PNume andP1Prenume = PPrenume andP1Cod ltgt PCod ) 52 Interogări imbricate cu IN icircn SQL2 ExempleSQL pune la dispozitie doi operatori pentru a reprezenta apartenenta la o multime sinegatia sa in si not in Acesti operatori sunt echivalenti cu = any respectiv ltgt allselect Deptfrom Angajatiwhere Salariu = any sau in (select max(Salariu)from Angajati) 53 Interogări imbricate cu bdquo=rdquo icircn SQL2 ExempleSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Să se găsească departamentele in care lucrează angajatii ce castigă cel mai mare salariuselect Deptfrom Angajatiwhere Salariu = any (select max(Salariu)from Angajati)sauselect Deptfrom Angajatiwhere Salariu gt= all (select Salariufrom Angajati)ObservatiiDesi cele două interogări sunt echivalente este indicată folosirea functiilor

10

agregat deoarece sunt mai concludente si se execută mai eficientIn cazul primei interogări nu există nici o diferenŃa dacă in loc de operatorul anyse foloseste operatorul all (deoarece interogarea internă are ca rezultat o singurălinie) 54 Definirea utilizatorilor şi accesului la baza de date icircn SQL2 ExempleIn functie de modul de exploatare a bazei de date utilizatorii se pot impărti inadministratorul bazei de date (DBA) ndash persoana responsabilă de proiectarea controlul siadministrarea bazei de dateprogramatorii de aplicatii ndash definesc si creează programele ce accesează baza de dateutilizatorii obisnuiti ndash cei care utilizează efectiv baza de date- utilizatori finali ndash utilizează tranzactii (spre exemplu programe ce realizeazăactivităŃi frecvente si predefinite- utilizatori ocazionali ndash capabili să utilizeze limbaje interactive pentru a accesabaza de date formuland interogări (sau actualizări) de diferite tipuriPentru a putea lucra cu baze de date trebuie sa avem instalat un server de baze de dateTrebuie sa realizam conexiunea sh sa accesam in sfirsit datele 55Definirea permiselor asupra relaţiilor icircn SQL2 ExempleSGBD-urile permit datelor să fie considerate drept resurse comune ale organizatieidisponibile tuturor membrilor autorizatiBaza de date furnizează un model standardizat si precis al acelei părti a lumii reale careprezintă interes pentru organizatie model folosit in aplicaŃiile existente si care cuextensiile necesare poate fi folosit in aplicatii viitoareSGBD-urile oferă posibilitatea unui control centralizat al datelorPartajarea bazelor de date permite reducerea redundantei si inconsistentei datelorIndependenta datelor caracteristica fundamentală a SGBD-urilor favorizeazădezvoltarea de aplicatii mai flexibile si mai usor de modificat 55 Definirea permiselor asupra relaţiilor icircn SQL2 ExempleIdee nam ce o avut in vedere pp )56 Definirea sinonimilor icircn SQL2 ExempleSinonimele pot fi utilizate in interogari sau procedure stocate in loc de numele originale ale obiectelor din 23 sau 4 parti De exemplu este nevoie de executat o interogare catre un obiect de stocat pe alt serverAtunci pt a accesa acest obiect e necesar sa se scrie numele lui implicitNume_serverNume_baza_de_dateNume_schemaNume_ObiectUtilizind un sinonim creat in schema curentaobiectul poate fi accesat doar specificind sinonimul respectivUn sinonim apartine unei scheme ca si alte obiecte ale schemeiNumele unui sinonim trebuie sa fie unicUn sinonim poate fi creat pt urmat obiecte din baza de datetabelele definite de utilizator(inclusive tabelele temporare atit locale cit sh globale)viziuniprocedure stocatefunctiiUn sinonim nu poate fi obiect de baza pt alt sinonimUn sinonim nu poate referi o functie de agregare definite de utilizatorDoar numele unui sinonim executa legatura intre acesta si obiectul de bazaExistenta si tipul de verificarea drepturilor de acces catre obiectul de baza sunt aminate pina la rulareprin urmare acelasi nume ca si obiectul de baza originalDe exemplu se considera un sinonim cumparaturi care face referire la dbovinzari in baza de date calculatoareDaca tabelul dbovinzari este sters si inlocuit cu o viziune numita dbovinzariatunci cumparaturi acum se refera la viziunea dbovinzariUrmatorul exemplu creaza un sinonim notebook pt obiectul d ebazalaptop_ri din vaza de calculatoare apoi interogheaza baza de dateutilizind sinonimul creatUse calculatoareGoCreate Synonym notebook for calculatoaredbolaptop_uriGoSelect from notebookGo 57 Blocarea relaţiilor şi gestiunea tranzacţiilor icircn SQL2Sistemul blocheaza icircn mod automat o linie icircn numele unei tranzactii pentru a icircmpiedica alte tranzactii sa blocheze aceeasi linie Aceasta blocare icircmpiedica manipularea simultana a unei Unii de catre doua tranzactii distincte

11

prevenindu-se astfel interferenta distructiva a instructiunilor DDL si DML contradictorii De exemplu Oracfe icircmpiedica distrugerea unui tabel daca exista tranzactii nefinalizate icircn care este implicat tabelul respectiv Aceste blocari ale datelor sunt anulate automat atunci cacircnd tranzactia este finalizata Blocarea implicita a datelor decurge automat pentru toate instructiunile SQL astfel icircncacirct nu este necesar ca utilizatorii bazei de date sa blocheze liniile icircn mod explicit icircn mod prestabilit Oracle blocheaza resursele la nivelul cel mai scazut posibilTranzactiile sunt grupuri logice de instructiuni SQL Fiecare tranzactie se icircncheie fie cu o finalizare fie cu o derulare icircnapoi Finalizarile duc la salvarea permanenta a modificarilor bazei de date efectuate de catre tranzactie Derularile icircnapoi anuleaza toate modificarile bazei de date efectuate de catre tranzactieGestionarea tranzactiilor asigura concurenta si coerenta datelor pentru toti utilizatorii bazei de date icircn lipsa gestiunii tranzactiilor calitatea si precizia datelor ar fi compromise iar baza de date ar deveni aproape de neutilizat58 Definirea viziunilor icircn SQL2 ExempleO viziune (VIEW) este un table virtual al carui continut este definit de o interogareO V poate fi create din unul sau mai multe tabele ale bdViziunile sunt folosite pentru a concentrasimplifica si personalize fiecare patrundere a utilizatorului in bdEle pot fi folosite si ca mecanisme de securitate permitind utilizatorului sa acceseze date prin intermediului viziunilorfara a acorda utilizatorilor permisiuni sa acceseze tabelele de baza direztViziunile pot fi deasemenea folosite atunci cind sunt copiate date din SQL server si pentru partajarea datelor2 tipuri de creare a viziunilorFolosind instructiunea Create view a limbajului transact_sqlFolosind VEW Designer al componentei SQ server management studioPrincipii de creare a viziunilorO V poate fi create numai in baza de data in uzTotusi tabelele si viziunile ce se refera la o viziune noua pot exista in alte baze de date sau cjiar pe alte serverePot fi construite viziuni asupra altor viziuni sau procedure ce se refera la viziuniAsupra V nu pot fi construiti indecsi sau definiti indecsi full-textO V fie exemplu2 in bd calculatoare poate fi definite folosind limb SQL de exempluUse calculatoareGoIf object_ID(lsquoexemplul2rsquorsquoVrsquo) is not null drop view exemplul2GoCreate View exemplul2 As select Model from produse 59Definirea indecşilor icircn SQL2 ExempleUn index este un obiect al schemei bazei de date care facilitează accesarea rapidă şi univocă a datelor Icircn anumite condiţii viteza de execuţie a cererilor După ce indexul a fost creat utilizatorului nu i se mai cere nici o operaţie directă asupra lui el va fi folosit şi icircntreţinut automat de către SGBDSintaxa pentru crearea unui index este următoareaCREATE INDEX nume_index ON nume_tabela (nume_coloana1 [ nume coloana2 hellip])Exemplu crearea unui index după coloana număr factură icircn tabela facturiCREATE INDEX nr_factura_index ON facturi (nrfact)Pentru tabele mici folosirea indecşilor nu aduce icircmbunătăţiri de performanţă Se folosesc atunci cacircnd coloanele după care se creează indecşii conţin o diversitate mare de informaţii sau multe valori NULL Indecşii optimizează interogările atunci cacircnd acestea returnează o cantitate mică de date Indecşii cresc viteza de regăsire a datelor dar icircncetinesc actualizarea datelor datorită faptului că sistemul trebuie să actualizeze şi fişierele index Icircn general este foarte util să se creeze indecşi după cacircmpuri care se folosesc icircn operaţii de joinŞtergerea unui index se face cu comanda DROP INDEXDROP INDEX nume_index [ON nume_tabela] 60Definirea constracircngerilor şi aserţiunilor icircn SQL2 ExemplePt formularea unor restrictii mai generale decit cele corespunzind tabelelor si coloanelor SQL da posibilitatea folosirii unei intructiuni specifice cu sintaxaCreate assertion ltconstraint_namegt check(search_condition)Spre deosebire de restrictiile de tabele si de coloane asertiunile nu sint associate cu nici o definitie de tabela particularaAsertiunile sunt folosite de obicei pt a formula restrictii asupra mai multor tabeleRemarcam ca pt a satisface restrictiaconditia din clauza check trebuie sa furmizeze o valoare fie truefie unknownVederile si Aseriunile se folosesc intransportul schemelor conceputale din modelul EEA si din UML in modelul relationalExemplu de adaugare de constringere

12

Alter Table task Constraint Foreign Key (newtaskind)references newtask(newtaskid)O constringere se poate adauga si la crearea tabeluluiConstringeri de integritateCheile primarevalori implicite pt cimpuriDaca integritatea bazei de date nu este asigurataadica nu sint respectate constringerile de integritatea se spune ca bd este incosistenta

13

Page 2: Baze de Date Examen.[Conspecte.md]

-ierarhic - Nod artificial

-retea programarea devine complicata

-relational(propus de Codd 1970)

8Nivelul conceptual de abstracţie icircn BD Modele de date ExempleLa acest nivel se construieste schema conceptuala a BDModele de date-entitatea asocieriiElementeentitati si asocieri intre entitatiAtribute(numeprenume)UML-limbaj universal de modelare-retele semantice-model ce se foloseste in baze de cunostinte9Nivelul de abstracţie a viziunilor utilizatorilor icircn BD Modele de date ExempleScheme conceptuale particulare ale utilizatorului10Etapa de proiectare fizică a bazelor de dateProiectarea fizică a BDUrmătoarele aspecte s-ar putea dovedi de importanţă pentru succesul proiectării BD lucrul interactiv cu utilizatorii cacirct de mulţi trebuie urmărirea unei metodologii structurate de-a lungul procesului de modelare a datelor utilizarea unei abordări coordonată prin date icircncorporarea consideraţiilor structurale şi de integritate icircn modelul de date utilizarea diagramelor pentru a reprezenta cacirct mai mult din modelul de date utilizarea unui limbaj de proiectare a BD Data Base Design Language (BDDL) pentru a reprezenta semantica suplimentară a datelor construirea unui dicţionar care să suplimenteze diagramele modelului de date disponibilitatea de a repeta anumite etapeMetodologia de proiectare a BD constă dintr-o serie de etape11Etapa de proiectare logică a bazelor de dateConstruirea tabelelor si a legaturilor dintre acesteaEtapele metodologiei de organizare logică a bazelor de date pentru modelul relaţional sunt următoareleConstruirea şi validarea modelului de date logice pentru fiecare vedere a utilizatorilorConstruirea şi validarea modelului de date logic globalEtapa E2 are ca obiectiv realizarea unui model de date logic ndash bazat pe modelul de date conceptual al vederii utilizatorului asupra icircntreprinderii ndash urmat de validarea acestuia prin utilizarea tehnicii de normalizare şi conformtranzacţiilor ceruteOperaţiile efectuate icircn cadrul acestei etape (E2) suntE21 Transpunerea modelului de date conceptual local icircn modelul de date logic localE22 Extragerea relaţiilor din modelul de date logic localE23 Validarea modelului prin utilizarea normalizăriiE24 Validarea modelului conform tranzacţiilor utilizatoruluiE25 Desenarea diagramei Entitate ndash Relaţie (ER)E26 Definirea constracircngerilor de integritateE27 Revizuirea modelului de date logic loca icircmpreună cu utilizatoriiLa icircncheierea acestei etape (E2) trebuie să se obţină un model al vederilor utilizatorului care să fie riguros cuprinzător şi fără echivoc Dacă sunt respectate aceste cerinţe se va dispune icircn acest stadiu de un fundament solid pentru a putea trece la etapa următoare (E3) care constă icircn combinarea modelelor de date logice locale individuale pentru a realiza un model de date logic global al icircntreprinderii12Analiza cerinţelor informaţionale la etapa de proiectare conceptuală a bazelor de date

2

Se aduna informatia de la diviziuni si subdiviziuni Prima etapă icircn proiectarea BD constă icircn realizarea unor modele de date conceptuale pentru fiecare vedere a utilizatorilor asupra icircntreprinderii O vedere a utilizatorului reprezintă datele cerute de către un anumit utilizator pentru a lua o decizie corectă sau a efectua o anumită activitate De obicei vederea unui utilizator constituie o zonă funcţională a icircntreprinderii cum ar fi producţia marketing vacircnzările personalul contabilitatea sau controlul aprovizionării Un utilizator poate fi o persoană reală sau un grup de persoane care utilizează icircnmod direct sistemul Utilizatorul se poate referi la un raport produs de către sistem sau poate solicita rezultatele unei tranzacţii care trebuie acceptată de către acestea Vederile utilizatorilor pot fi identificate utilizacircnd diverse metode pot fi examinate diagramele de flux de date care au fost realizate mai icircnainte icircn scopul de a identifica zonele funcţionale şi posibil funcţiile individuale ar putea fi chestionaţi utilizatorii se pot examina procedurile rapoartele şi formulările şisau observa icircntreprinderea icircn funcţiune13Modelarea viziunilor utilizatorului la etapa de proiectare conceptuală a bazelor de dateConsta din 3 etape-analiza cerintelor informationale-modelarea schemelor conceptuale particulare (viziunile user)-integrarea schemei particulare si crearea schemei globale1415Elementele modelului relaţional atribute domenii tupluri Definiţii şi exempleO entitate este un obiect real sau conceptual cu o existenta independenta O entitate este un obiect cu existenta fizica persoana particulara automobil companie activitate curs universitar etcOrice entitate are o serie de proprietati numite si atribute ce particularizeaza entitatea respectiva De exemplu pentru o entitate angajat se pot enumera o serie de atribute cum sint nume adresa data nasterii sex salariu Atribut (attribut) o unitate specifică a informaţiei despre un subiect coloană sau cacircmp icircn tabelDomeniul o multime finite de valori de acelasi tip pe care le poate lua atributulTuplu-secventa de elemente care merg unul dupa altul dar nu fixam ordinea16Elementele modelului relaţional schemă relaţională relaţie bază de date schemă a bazei de date Definiţii şi exempleRelatie-multimea finita de tupluriRelaţiile icircntre două tabele sunt unidirecţionale astfel că o tabelă devine principală iar cealaltă devine subordonată Schema relatiei-capulBaza de date - un ansamblu de date structurate accesibile unei comunităţi de utilizatoriSchema bazei de date poate fi reprezentată printr-o diagramă de structură icircn care sunt puse icircn evidenţă şi legăturile dintre tabele17 Noţiunea de cheie Tipuri de chei ExempleCheiendashun camp sau o asociatie de campuri ce are valori distincte NOT NULL pentru fiecare inregistrare din bdCheie primară garantează unicitatea şi minimalitatea şi obligă mulţimea de atribute să fie cheie primară Pentru aceasta se utilizeaza clauza PRIMARY KEYCheie secundară garantează unicitatea atributelor ^^ astfel declarate Se utilizează clauza UNIQUEŞi obligatoriu trebuie adiţional specificat NOT NULL Restrictia precizeaza faptul ca un camp este o cheie straina fiind cheie primara a altei tabele

Definire in tabela angajat a cheii straine pentru campul D_nrCREATE TABLE Angajat (NUME VARCHAR(15)INI CHAR(1)

PREN VARCHAR(12)SSN CHAR(9) CONSTRAINTS ang_PK PRIMARY KEYDAT_NA CHAR(8)ADR VARCHAR(30)SEX CHAR(1)SALARIU INTEGERSSSN CHAR(9)D_NR INTEGER CONSTRAINTS ang_FK REFERENCES departament(D_nr) FOREIGN KEY(D_nr) on delete cascade|on delete set NULL)

18 Constracircngeri de integritate structurale ExempleNot nullspecifica faptul ca un cimp nu poate avea valori necunoscutenull

3

Uniquedetermina comportamentul cimpurilor care nu fac parte din cheia primaraConstringerea Unique asigura ca valorile duplicate nu vor fi introduse pentru cimpurile specificateInsa cimpurile specificate pot avea valori nuleiar sistemul creeaza automat din ele un index pentru facilitatea cautarii in tabeleCheia primaracimpurile nu pot contine valori duplicateCheia externaun cimp sau o multime de cimpuri ce orespund cheii primare a altui tabelCheia primara se utilizeaza pentru a defini legaturile dintre tabeleExtabelul comenzi contine codfurnizor ca cheie primaracod furnizor din tabela furniozor este cheie externa pentru tabelul comenzi19 Constracircngeri de integritate comportamentale ExempleCheck limiteaza valorile care pot fi luate de un cimp (sau mai multe cimpuri)In cazul actualizarii BD sistemul testeaza constringerea booleana care urmeaza dupa cuv rezervat checkDaca adevarat-este acceptata actualizareaex CHECK(ldquoan studiurdquo BETWEEN 1 and 5) Reguli

orice restricţie are asociat un nume (explicit sau implicit) Dacă folosim CONSTRAINT atunci numele trebuie dat explicit Cheile multiple pot fi definite doar la nivelul tabelei NOT NULL doar la nivelul coloanei

20 Operaţii de actualizare a relaţiilor INSERT ndash Adaugă un tuplu sau mai multe icircntr-o relaţie1048708 UPDATE ndash Modifică valorile unor atribute icircntro relaţie specificată icircn tuplurile specificate deun criteriu1048708 DELETE ndash Şterge tuplurile dintr-o relaţie care satisfac un criteriu specificat21 Operaţiile tradiţionale pe mulţimi uniunea intersecţia şi diferenţa Proprietăţi Exemple

Operatiile binare asupra relatiilor uniunea intersectia si diferenta necesita ca operanzii (relatiile) sa fie defintii pe scheme compatibile

Uniunea a doua relatii compatibile r(R) si s(S) notata cu r U s e o relatie definita pe schema R sau S si consta din tuplurile ce apartin relatiilor r sau s Operatia uniunea are doua proprietati Ea e comutativa adica r U s = s U r Ea este si asociativa adics (r U s) U q = rU(s U q) pentru relaiile mutual compatibile r s si q

Intersectia a doua relatii compatibile r(R) si s(S) notata cu r cap sneste o relatie definita peschema R sau S si consta din tuplurile ce apartin concomitent relatiilor r si s

Diferenta a doua relatii compatibile r(R) si s(S) notata cu r s este o relatie definita pe multimea de atribute R sau S si are icircn calitate de tupluri toate tuplurile din relatia r ce nu sunt icircn s Diferena nu se bucura de proprietatea comutativa adica r s ne s r Totodata nu e nici asociativa adica (r s) q ne r (s q) fiindca (r s) q = r (s U q) pentru orice relaii mutual compatibile r s si q

Intersectia q=rcaps

Diferenta q1=rs q2=sr

22 Operaţia produsul cartezian Proprietăţi Exemple Produsul cartezian a doua relatii r(A1hellipAn) si s(B1hellipBm) notat cu r s

este o multime de tupluri (si nu icircntotdeauna o relatie) definite pe multimea de atribute A1hellipAn B1hellipBm Tuplurile reprezinta toate posibilele asociatii de

4

tupluri din r si s daca tr Є r si ts Є s atunci concatenatia trts este un tuplu icircn r s pentru orice pereche de tupluri tr si ts din r si s respectiv exista un tuplu t icircn r s icircncacirct t[Ai]=tr[Ai] 1leilen si t[Bj]=ts[Bj 1lejlem

Produsul cartezian nu este o operatie comutativa Icircn schimb se bucura de proprietatea asociativa23 Operaţiile complement şi complement activ Proprietăţi Exemple

Fie relatia r(R) Notam prin tup(R) multimea tuturor tuplurilor asupra atributelor schemei R si a domeniilor lor Complementul relatiei r notat cu ־r este ־r = tup(R) r

Fie r o relatie asupra schemei R AЄR si adom(A) = a|aЄdom(A) amp Ǝ tЄrampt[A] =a Multimea de valori adom(A) se numeste domeniul activ al atributului A Notam cu atup(R) multimea tuturor tuplurilor asupra atributelor schemei R si a domeniilor lor active Atunci complementul activ notat cu ~r este ~r = atup(R) r

Complemen tul activ

Complemen tul

24

Operaţia selecţia

Proprietăţi ExempleSelectia este o operatie unara Pentru selectarea unor

tupluri dintr-o relatie e necesara specificarea conditiilor de selectare Icircn rezultat se obtine o relatie ce e o submultime de

tupluri a relatiei initiale Selectia relatiei r (R) conform formulei F unde F e aplicabila relatiei r(R) e o submultime a relatiei r(R)

notata cu σF(r) ce consta din toate tuplurile tЄr ce satisfac F adica σF(r) = t | t Є r amp F(t)

Selectia s=σ((A = B) amp (D5))(r)25 Operaţia proiecţia Proprietăţi ExempleProiectia e o operatie unara

Proiectia relatiei r asupra multimii de atribute X notata cu πx(r) e o relatie cu schema X ce consta din X-valorile tuturor tuplurilor din r πx(r) = t X| t Є r

Proiectia s = πAC(r)26 Operaţia joncţiune Proprietăţi Exemple

5

Fie doua relatii r(R) si s(S) Jonctiunea relatiilor r si s (notatia uzuala r|x|s) este o relatie cu schema RS Tuplul t apartine relatiei rezultat daca exista tuplurile tr si ts icircn r si s respectiv si satisfac t[R]=tr si t[S]=ts adica r |x| s = t | t[R] = tramp t[S] = tsamp trЄ r amp ts Є s Deci fiecare tuplu din relatia rezultat este o concatenare a unui tuplu din r cu un tuplu din s ce au (RcapS)-valori egale Atributele cu acelasi nume icircn schema relatiei rezultat se iau o singura data Operatia jonctiunea nu este comutativa Icircn schimb ea se bucura de proprietatea asociativa

Jonctiunea q = r |x| s27 Interacţiunea dintre operaţiile joncţiunea şi proiecţia Exemple

Fie relatiile r(A B) si s(B C) Notam q=r|x|s si r1 = πAB(q) Icircn urma operatiilor observam ca tuplurile relatiei r1 constituie o submultime proprie a relatiei r

28 Operaţia θ-joncţiune Proprietăţi Exemple

θ-jonctiunea relatiilor r(R) si s(S) notata cu r|x|AθBs este o multime de tupluri concatenate de forma trts unde tr Є r ts Є s si tr(A) θ ts(B) adicar|x|AθBs = trts | tr Є r amp ts Є s amp tr(A) θ ts(B)

Operatia θ-jonctiunea poate fi exprimata prin operatiile produsul cartezian si selectia Rezultatul unei θ-jonctiuni este acelasi cu rezultatul unei selectii operate asupra unui produs cartezian adica r|x|AθBs = σAθB(r s)

29 Operaţia semijoncţiunea Proprietăţi Exemple

Semijonctiunea e o operatie binara Ea consta icircn construirea unei relatii din cele doua si e formata numai din tuplurile unei singure relatii ce participa la jonctiune

Fie doua relatii r(R) si s(S) Semijonctiunea relatiei r si s notata cur|x s este o multime de tupluri determinata de expresia r|x s = πR(r|x|s)

6

Semijonctiunea q =r|xs30 Operaţia divizarea Proprietăţi Exemple

Fie r(R) si s(S) doua relaii si S R Notam Q = R S Diviziunea relatiei r la relatia s notata cu rs este o relatie definita pe multimea de atribute Q rs = t| pentru tsЄ s(S) Ǝ tr Є r(R) ce satisface tr[Q]=t si tr[S]=ts

Operatia diviziunea poate fi conceputa drept operatie inversa produsului cartezian Fie q=rs Atunci qs produce o relatie cu schema R si relatia q va contine numarul maximal de tupluri ce ar satisface expresia qs r

Diviziunea q= rs

31Componentele limbajului SQL2

Componentele pe care le cuprinde limbajul SQL sunt

urmatoarele 1Componenta de descriere a datelor relationale (limbajul de descriere a datelor-LLD) 2Componenta de manipulare a datelor relationale(libajul de manipulare a datelro-LMD) Ambele fiind absolut necesare in gestiunea BD Pe linga aceste componente principale standartul SQL2 mai prevede si alte compon ale limbaj 3Controlul tranzactiilor contine comenzi pt specific tranzactiilor 4Controlul securitatii si refacerea datelor contine comenzi de administrare a bazei de date pt definirea utilizatorilor si a dreputului de acces la tabele32Tipuri de date numerice icircn SQL2 şi Transact SQL ExempleTipul numeric include numere intregi e diferite dimensiuni(integer sau int reprez pe 4 octetismallint pe 2 octeti)numere reale reprez in virdula flotanta cu diferite precizii(float-4 octetireal si double[precision]-8octeti)si numere zecimale reprezentate cu precizia dorita(tip numerci sau decimal)Formatul de repcentare a numer zecimale cu precizia dorita estenumerci[(ps)] sau decimal[(ps)]) unde p(precizia) este nr otal de cifre afisate iar s (scara) nr de cifre dupa punctul zecimalExemplu decimal(41) va fi 11162 si nu 162 sau 11162133 Tipuri de date secvenţe de caractere icircn SQL2 şi Transact SQL ExempleTipul sir de caractere permite definirea sirurilor de caractere de lungime fixa(char(n) sau character (n))precum si a sirurilor de caractere cu lungime variabila (varchar(n))Ambele tipuri pot reprezenta siruri de maximum n caractere cu diferenta ca pt siruri de lungime mai mica decit n la tipul char(n) se completeaza sirul cu spatii albe pina la n caractere in timp ce la tipul varchar(n) se memoreaza numai atitea caractere cit are sirul datText-pt secvente de caractere ASCI cu lungime variabila mai mare de 8Ko(de exemplu documente Html) dar care nu depaseste valoarea (2147483647 caractere) 34 Tipuri de date temporale icircn SQL2 şi Transact SQL Exemple (Date speciale)Cursor-contine referinta la un cursorHierarchyd-pt crearea tabelelor cu structura ierarhicaTable- tip special de date utilizat pt stocarea unui rezultat pt tratarea ulterioarapt pastrarea unei multimi de rind obtinute in calitate de rezultat al unei fti cu valoarea unui tabelTimestamp-identificator unic pt toata baza de date se util in calitate de mecanism de marcare a versiunii unui rind din tabelXML-tip de date ce pastreaza date XML35 Definirea schemei unei relaţii icircn SQL2 Exemple

7

Schema unei relaţii este numele relaţiei urmată de lista de atribute pentru fiecare atribut precizacircndu-se domeniul asociat Astfel pentru o relaţie R cu atributele A1 A2 An şi domeniile D1 D2 Dmcu m le n schema relaţiei R poate fi prezentată astfel

R(A1 D1 A2D2 An Dm) sauR

A1D1 AnDm

Fig 34 Reprezentarea schemei relaţiei R36 Constracircngeri de comportament icircn SQL2 ExempleSpecifica caracteristicile independente ale unui atribut(sau domeniu)Ele exprima semanticca elementelor domeniilorDe exemplu valorile atributului Nota_med trebuie sa fie mai mare decit zerodar nu poate depasi zeceSau nici o persoana de virsta 25 ani nu poate avea o vechime in munca de 37 de aniDeci conform acestei restrictii valorile atributului trebuie sa se incadreze intre anumite limite37 Constracircngeri structurale icircn SQL2 Exemple Constringeri de dependenteSpecifica legatura dintre atribute(sau domenii)Aici putem identifica asa numita dependenta de multime de atributeAngajat Salariu Departament Manager In relatia personalun manager este in acelasi timp un angajatdar nu orice angajat este managerDeci avem ca dom(manager) Ui dom (angajat)38 Modificarea şi suprimarea schemei relaţionale icircn SQL239Cele mai simple interogari (numai cu proiectiaInterogare (querry) este o operatie prin care se obtin datele dorite dintro baza de date selectate conform unui anumit criteriu(conditie)Proiectia ndashoperatie relationala unara prin care se selecteaza o submultime de atribute ale relatieiNumele si reducerile clientilor din OrheiProiectia Cl_numereducere (Selectia (clienti) cloras=rdquoorheirdquo40Interogări cu criterii de selecţie icircn SQL2 Exemple

Interogarile cu criterii de selectie in SQL sunt utilizate pu selectarea datelor din tabeleAre urmatoarea sintaxa de bazaSELECT[TIP]ltlista de cimpurigtFROMltlista de tabelegt[CONDITIE]Lista de cimpuri-lista de cimpuri ce trebuie selectateLista de tabele-lista de tabele de unde datele trebuie sa fie selectateCONDITIE-defineste un filtru pu interogare folosind unele clause ca WHEREEX ModelPret FROM pc_uri WHERE Cd=rsquo40xrsquo ORDER BY Pret

41Interogări cu funcţii de agregare icircn SQL2 Exemple Fde agreg -prelucreaza multimi de inregistrari(linii) ale tabelului si returneaza un anumit rezultatMajoritatea acestor functiide obiceiactioneaza asupra tuturor liniilor tabeluluiEle accepat parametriiAll-face ca functia sa considere toate inregistrarile inclusiv cele duplicateDISTINCT-face ca funct Sa considere numai inregistrarile ce nu poseda o valoare duplicataAVG-returneaza media aritmetica a lui xCOUNT-returneaza nr de linii a interogariiMAXMIN-returneaza valoarea maxima sau minima a exprMAX sau MIN ([DISTINCT|ALL)] expr)EX SELECT AVG(Viteza) As Viteza_medie MAX(Viteza) As Viteza_maxima MIN(Viteza) As Viteza_minina42Interogări cu agregarea tuplurilor icircn SQL2 Exemple43 Interogări de actualizare (inserare şi ştergere) a datelor icircn SQL2 ExempleLimbajul TRANSACT-SQL propune 3 instructiuni ce corespund celor 3 operatii de actualizare a bazei de dateinserarea(instructiunea INSERT)-pentru inserarea datelorsuprimarea(instructiunea DELETE)-pu stergerea datelor si modificarea(instructiunea UPDATE)-pu modificarea datelorToate optiunile se asupra tabelelor (fizice sau virtuale) si actualizearea se petrece la nivel de linie de tabelEXCREATE TABLE clienti(Cod_client INTTara CHAR(2)DEFAULT(sbquoMDrsquo)Nume CHAR(20))

8

INSERT clienti (Cod_clientTaraNume)VALUES(12340rsquoMDrsquorsquoIon Petrachersquo) INSERT clienti DEFAULT VALUES INSERT clienti VALUES (12560rsquoFRrsquorsquoJack Londonrsquo)44 Interogări de actualizare (modificare) a datelor icircn SQL2 ExempleUPDATE-operatia de modificare a continutului unuia sau a mai multor cimpuri ale tuplurilorSintaxa instructiunii UPDATE lttabelgt SETltcoloanagt=ltvaloare nouagt WHERE ltconditiegt In caz cind nici o conditie nu e impusa toate cimpurile tuturor inregistrarilor vor fi alterate de valorile noiEX UPDATE functionari SET Sector=rsquoAdministratiersquo WHERE Sector=rsquoFinantersquo SELECT FROM functionari ORDER BY Sector45 Interogări cu uniuni icircn SQL2 ExempleOperatia UNION-permite fuzionarea a doua selectii pentru a obtine o multime de tupluri egala cu uniunea acestor doua selectiiEX SELECT produseModel Pret FROM produsepc_uri WHERE produseModel=pc_uriModel AND Producator=rsquoBrsquo UNION SELECT produseModelPret FROM produselaptop_uri WHERE produseModel=laptop_uriModel AND Producator=rsquoBrsquo UNION SELECT produseModelPret FROM produseimprimante WHERE produseModel=imprimanteModel AND Producator=rsquoBrsquo46Interogări cu intersecţii icircn SQL2 ExempleInterogarile cu operatiile uniuneintersectia si diferenta sunt foarte aproape de interogarile scrise in algebra relationalaSe formuleaza doua interogari care construiesc relatii cu scheme compatibile adica cu acelasi nr de atribute si de acelasi tip si aceste cereri sunt legate cu cuvintele cheie UNIONINTERSECT sau EXCEPT Pentru a gasi valori ce coincid in doua sau mai multe tabele se poate utiliza instructiunea INTERSECTEX SELECT Model FROM produse INTERSECT SELECT Model FROM pc_uriDaca INTERSECT este substituit cu EXCEPT se obtine un rezultatintr-un felinvers celui precedentadica se vor afisa modelele de produse din primul tabel care nu sunt in al doilea tabel

47Interogări cu diferenţe icircn SQL2 ExempleInterogarile cu operatiile uniuneintersectia si diferenta sunt foarte aproape de interogarile scrise in algebra relationalaSe formuleaza doua interogari care construiesc relatii cu scheme compatibile adica cu acelasi nr de atribute si de acelasi tip si aceste cereri sunt legate cu cuvintele cheie UNIONINTERSECT sau EXCEPTEX SELECT Model FROM produse EXCEPT SELECT Model FROM pc_uri48Interogări cu joncţiuni icircn SQL2 ExempleDeseoripu a obtine un rezultat complet este necesara selectarea datelor din doua sau mai multe tabeleTabelele din baza de date sunt legate intre ele prin cheiEste importantindeosebirolul cheii primare care face ca coloanele ce o constituie sa posede o valoare unica pu fiece rindDe exe necesar sa se afiseze producatorul si viteza laptopurilorAtributul viteza se afla in tabelul laptop_uriInformatia referitoare la producatori se afla in tabelul produserezultatul este ordonat dupa cimpul ProducatorEX SELECT ProducatorViteza FROM produselaptop_uri WHERE produseModel=laptop_uriModel ORDER BY ProducatorCU Jonctiune internaEX SELECT ProducatorViteza FROM produse INNER JOIN laptop_uri ON produseModel=laptop_uriModel ORDER BY Producator49Interogări imbricate cu ALL icircn SQL2 ExempleSubinterogare este o cerere care restituie un singur atribut Interogarea utilizată in comparaŃie se defineste in interiorul predicatului din clauza where si se numeste interogare imbricatăAll - face ca functia sa considere toate inregistrarile inclusive cele duplicateCuvantul cheie all specifică faptul că linia este validă dacă valoarea atributului se află in

9

relatie cu toate valorile returnate de interogareSă se găsească departamentele in care nu lucrează nici un angajat cu numele Ionescuselect Deptfrom Departamentwhere Dept ltgt all (select Deptfrom Angajatiwhere Nume = rsquoIonescursquo)Această interogare poate fi exprimată cu ajutorul operatorului diferenŃăselect Deptfrom Departamentexceptselect Deptfrom Angajatiwhere Nume = rsquoIonescursquo 50 Interogări imbricate cu ANY icircn SQL2 Exemple Cuvantul cheie any specifică faptul că linia este validă dacă valoarea atributului se află inrelatie cu cel putin o valoare returnată de interogarea imbricatăSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Exemplu Să se găsească angajaŃii ce lucrează intr-un departament din Iasiselect Nume Prenumefrom Angajatiwhere Dept = any (select Deptfrom Departamentwhere Oras = rsquoIasirsquo)ObservaŃie Această interogare poate fi rezolvată prin realizarea unei joncŃiuni intre celedouă tabele 51 Interogări imbricate cu EXISTS icircn SQL2 Exemple Acest operator acceptă ca parametru o interogare imbricată sireturnează valoarea adevărat doar dacă interogarea nu produce un rezultat vidSă se găsească persoanele care au acelasi nume si prenume dar coduri diferiteselect from Persoana Pwhere exists (select from Persoana P1where P1Nume = PNume andP1Prenume = PPrenume andP1Cod ltgt PCod ) 52 Interogări imbricate cu IN icircn SQL2 ExempleSQL pune la dispozitie doi operatori pentru a reprezenta apartenenta la o multime sinegatia sa in si not in Acesti operatori sunt echivalenti cu = any respectiv ltgt allselect Deptfrom Angajatiwhere Salariu = any sau in (select max(Salariu)from Angajati) 53 Interogări imbricate cu bdquo=rdquo icircn SQL2 ExempleSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Să se găsească departamentele in care lucrează angajatii ce castigă cel mai mare salariuselect Deptfrom Angajatiwhere Salariu = any (select max(Salariu)from Angajati)sauselect Deptfrom Angajatiwhere Salariu gt= all (select Salariufrom Angajati)ObservatiiDesi cele două interogări sunt echivalente este indicată folosirea functiilor

10

agregat deoarece sunt mai concludente si se execută mai eficientIn cazul primei interogări nu există nici o diferenŃa dacă in loc de operatorul anyse foloseste operatorul all (deoarece interogarea internă are ca rezultat o singurălinie) 54 Definirea utilizatorilor şi accesului la baza de date icircn SQL2 ExempleIn functie de modul de exploatare a bazei de date utilizatorii se pot impărti inadministratorul bazei de date (DBA) ndash persoana responsabilă de proiectarea controlul siadministrarea bazei de dateprogramatorii de aplicatii ndash definesc si creează programele ce accesează baza de dateutilizatorii obisnuiti ndash cei care utilizează efectiv baza de date- utilizatori finali ndash utilizează tranzactii (spre exemplu programe ce realizeazăactivităŃi frecvente si predefinite- utilizatori ocazionali ndash capabili să utilizeze limbaje interactive pentru a accesabaza de date formuland interogări (sau actualizări) de diferite tipuriPentru a putea lucra cu baze de date trebuie sa avem instalat un server de baze de dateTrebuie sa realizam conexiunea sh sa accesam in sfirsit datele 55Definirea permiselor asupra relaţiilor icircn SQL2 ExempleSGBD-urile permit datelor să fie considerate drept resurse comune ale organizatieidisponibile tuturor membrilor autorizatiBaza de date furnizează un model standardizat si precis al acelei părti a lumii reale careprezintă interes pentru organizatie model folosit in aplicaŃiile existente si care cuextensiile necesare poate fi folosit in aplicatii viitoareSGBD-urile oferă posibilitatea unui control centralizat al datelorPartajarea bazelor de date permite reducerea redundantei si inconsistentei datelorIndependenta datelor caracteristica fundamentală a SGBD-urilor favorizeazădezvoltarea de aplicatii mai flexibile si mai usor de modificat 55 Definirea permiselor asupra relaţiilor icircn SQL2 ExempleIdee nam ce o avut in vedere pp )56 Definirea sinonimilor icircn SQL2 ExempleSinonimele pot fi utilizate in interogari sau procedure stocate in loc de numele originale ale obiectelor din 23 sau 4 parti De exemplu este nevoie de executat o interogare catre un obiect de stocat pe alt serverAtunci pt a accesa acest obiect e necesar sa se scrie numele lui implicitNume_serverNume_baza_de_dateNume_schemaNume_ObiectUtilizind un sinonim creat in schema curentaobiectul poate fi accesat doar specificind sinonimul respectivUn sinonim apartine unei scheme ca si alte obiecte ale schemeiNumele unui sinonim trebuie sa fie unicUn sinonim poate fi creat pt urmat obiecte din baza de datetabelele definite de utilizator(inclusive tabelele temporare atit locale cit sh globale)viziuniprocedure stocatefunctiiUn sinonim nu poate fi obiect de baza pt alt sinonimUn sinonim nu poate referi o functie de agregare definite de utilizatorDoar numele unui sinonim executa legatura intre acesta si obiectul de bazaExistenta si tipul de verificarea drepturilor de acces catre obiectul de baza sunt aminate pina la rulareprin urmare acelasi nume ca si obiectul de baza originalDe exemplu se considera un sinonim cumparaturi care face referire la dbovinzari in baza de date calculatoareDaca tabelul dbovinzari este sters si inlocuit cu o viziune numita dbovinzariatunci cumparaturi acum se refera la viziunea dbovinzariUrmatorul exemplu creaza un sinonim notebook pt obiectul d ebazalaptop_ri din vaza de calculatoare apoi interogheaza baza de dateutilizind sinonimul creatUse calculatoareGoCreate Synonym notebook for calculatoaredbolaptop_uriGoSelect from notebookGo 57 Blocarea relaţiilor şi gestiunea tranzacţiilor icircn SQL2Sistemul blocheaza icircn mod automat o linie icircn numele unei tranzactii pentru a icircmpiedica alte tranzactii sa blocheze aceeasi linie Aceasta blocare icircmpiedica manipularea simultana a unei Unii de catre doua tranzactii distincte

11

prevenindu-se astfel interferenta distructiva a instructiunilor DDL si DML contradictorii De exemplu Oracfe icircmpiedica distrugerea unui tabel daca exista tranzactii nefinalizate icircn care este implicat tabelul respectiv Aceste blocari ale datelor sunt anulate automat atunci cacircnd tranzactia este finalizata Blocarea implicita a datelor decurge automat pentru toate instructiunile SQL astfel icircncacirct nu este necesar ca utilizatorii bazei de date sa blocheze liniile icircn mod explicit icircn mod prestabilit Oracle blocheaza resursele la nivelul cel mai scazut posibilTranzactiile sunt grupuri logice de instructiuni SQL Fiecare tranzactie se icircncheie fie cu o finalizare fie cu o derulare icircnapoi Finalizarile duc la salvarea permanenta a modificarilor bazei de date efectuate de catre tranzactie Derularile icircnapoi anuleaza toate modificarile bazei de date efectuate de catre tranzactieGestionarea tranzactiilor asigura concurenta si coerenta datelor pentru toti utilizatorii bazei de date icircn lipsa gestiunii tranzactiilor calitatea si precizia datelor ar fi compromise iar baza de date ar deveni aproape de neutilizat58 Definirea viziunilor icircn SQL2 ExempleO viziune (VIEW) este un table virtual al carui continut este definit de o interogareO V poate fi create din unul sau mai multe tabele ale bdViziunile sunt folosite pentru a concentrasimplifica si personalize fiecare patrundere a utilizatorului in bdEle pot fi folosite si ca mecanisme de securitate permitind utilizatorului sa acceseze date prin intermediului viziunilorfara a acorda utilizatorilor permisiuni sa acceseze tabelele de baza direztViziunile pot fi deasemenea folosite atunci cind sunt copiate date din SQL server si pentru partajarea datelor2 tipuri de creare a viziunilorFolosind instructiunea Create view a limbajului transact_sqlFolosind VEW Designer al componentei SQ server management studioPrincipii de creare a viziunilorO V poate fi create numai in baza de data in uzTotusi tabelele si viziunile ce se refera la o viziune noua pot exista in alte baze de date sau cjiar pe alte serverePot fi construite viziuni asupra altor viziuni sau procedure ce se refera la viziuniAsupra V nu pot fi construiti indecsi sau definiti indecsi full-textO V fie exemplu2 in bd calculatoare poate fi definite folosind limb SQL de exempluUse calculatoareGoIf object_ID(lsquoexemplul2rsquorsquoVrsquo) is not null drop view exemplul2GoCreate View exemplul2 As select Model from produse 59Definirea indecşilor icircn SQL2 ExempleUn index este un obiect al schemei bazei de date care facilitează accesarea rapidă şi univocă a datelor Icircn anumite condiţii viteza de execuţie a cererilor După ce indexul a fost creat utilizatorului nu i se mai cere nici o operaţie directă asupra lui el va fi folosit şi icircntreţinut automat de către SGBDSintaxa pentru crearea unui index este următoareaCREATE INDEX nume_index ON nume_tabela (nume_coloana1 [ nume coloana2 hellip])Exemplu crearea unui index după coloana număr factură icircn tabela facturiCREATE INDEX nr_factura_index ON facturi (nrfact)Pentru tabele mici folosirea indecşilor nu aduce icircmbunătăţiri de performanţă Se folosesc atunci cacircnd coloanele după care se creează indecşii conţin o diversitate mare de informaţii sau multe valori NULL Indecşii optimizează interogările atunci cacircnd acestea returnează o cantitate mică de date Indecşii cresc viteza de regăsire a datelor dar icircncetinesc actualizarea datelor datorită faptului că sistemul trebuie să actualizeze şi fişierele index Icircn general este foarte util să se creeze indecşi după cacircmpuri care se folosesc icircn operaţii de joinŞtergerea unui index se face cu comanda DROP INDEXDROP INDEX nume_index [ON nume_tabela] 60Definirea constracircngerilor şi aserţiunilor icircn SQL2 ExemplePt formularea unor restrictii mai generale decit cele corespunzind tabelelor si coloanelor SQL da posibilitatea folosirii unei intructiuni specifice cu sintaxaCreate assertion ltconstraint_namegt check(search_condition)Spre deosebire de restrictiile de tabele si de coloane asertiunile nu sint associate cu nici o definitie de tabela particularaAsertiunile sunt folosite de obicei pt a formula restrictii asupra mai multor tabeleRemarcam ca pt a satisface restrictiaconditia din clauza check trebuie sa furmizeze o valoare fie truefie unknownVederile si Aseriunile se folosesc intransportul schemelor conceputale din modelul EEA si din UML in modelul relationalExemplu de adaugare de constringere

12

Alter Table task Constraint Foreign Key (newtaskind)references newtask(newtaskid)O constringere se poate adauga si la crearea tabeluluiConstringeri de integritateCheile primarevalori implicite pt cimpuriDaca integritatea bazei de date nu este asigurataadica nu sint respectate constringerile de integritatea se spune ca bd este incosistenta

13

Page 3: Baze de Date Examen.[Conspecte.md]

Se aduna informatia de la diviziuni si subdiviziuni Prima etapă icircn proiectarea BD constă icircn realizarea unor modele de date conceptuale pentru fiecare vedere a utilizatorilor asupra icircntreprinderii O vedere a utilizatorului reprezintă datele cerute de către un anumit utilizator pentru a lua o decizie corectă sau a efectua o anumită activitate De obicei vederea unui utilizator constituie o zonă funcţională a icircntreprinderii cum ar fi producţia marketing vacircnzările personalul contabilitatea sau controlul aprovizionării Un utilizator poate fi o persoană reală sau un grup de persoane care utilizează icircnmod direct sistemul Utilizatorul se poate referi la un raport produs de către sistem sau poate solicita rezultatele unei tranzacţii care trebuie acceptată de către acestea Vederile utilizatorilor pot fi identificate utilizacircnd diverse metode pot fi examinate diagramele de flux de date care au fost realizate mai icircnainte icircn scopul de a identifica zonele funcţionale şi posibil funcţiile individuale ar putea fi chestionaţi utilizatorii se pot examina procedurile rapoartele şi formulările şisau observa icircntreprinderea icircn funcţiune13Modelarea viziunilor utilizatorului la etapa de proiectare conceptuală a bazelor de dateConsta din 3 etape-analiza cerintelor informationale-modelarea schemelor conceptuale particulare (viziunile user)-integrarea schemei particulare si crearea schemei globale1415Elementele modelului relaţional atribute domenii tupluri Definiţii şi exempleO entitate este un obiect real sau conceptual cu o existenta independenta O entitate este un obiect cu existenta fizica persoana particulara automobil companie activitate curs universitar etcOrice entitate are o serie de proprietati numite si atribute ce particularizeaza entitatea respectiva De exemplu pentru o entitate angajat se pot enumera o serie de atribute cum sint nume adresa data nasterii sex salariu Atribut (attribut) o unitate specifică a informaţiei despre un subiect coloană sau cacircmp icircn tabelDomeniul o multime finite de valori de acelasi tip pe care le poate lua atributulTuplu-secventa de elemente care merg unul dupa altul dar nu fixam ordinea16Elementele modelului relaţional schemă relaţională relaţie bază de date schemă a bazei de date Definiţii şi exempleRelatie-multimea finita de tupluriRelaţiile icircntre două tabele sunt unidirecţionale astfel că o tabelă devine principală iar cealaltă devine subordonată Schema relatiei-capulBaza de date - un ansamblu de date structurate accesibile unei comunităţi de utilizatoriSchema bazei de date poate fi reprezentată printr-o diagramă de structură icircn care sunt puse icircn evidenţă şi legăturile dintre tabele17 Noţiunea de cheie Tipuri de chei ExempleCheiendashun camp sau o asociatie de campuri ce are valori distincte NOT NULL pentru fiecare inregistrare din bdCheie primară garantează unicitatea şi minimalitatea şi obligă mulţimea de atribute să fie cheie primară Pentru aceasta se utilizeaza clauza PRIMARY KEYCheie secundară garantează unicitatea atributelor ^^ astfel declarate Se utilizează clauza UNIQUEŞi obligatoriu trebuie adiţional specificat NOT NULL Restrictia precizeaza faptul ca un camp este o cheie straina fiind cheie primara a altei tabele

Definire in tabela angajat a cheii straine pentru campul D_nrCREATE TABLE Angajat (NUME VARCHAR(15)INI CHAR(1)

PREN VARCHAR(12)SSN CHAR(9) CONSTRAINTS ang_PK PRIMARY KEYDAT_NA CHAR(8)ADR VARCHAR(30)SEX CHAR(1)SALARIU INTEGERSSSN CHAR(9)D_NR INTEGER CONSTRAINTS ang_FK REFERENCES departament(D_nr) FOREIGN KEY(D_nr) on delete cascade|on delete set NULL)

18 Constracircngeri de integritate structurale ExempleNot nullspecifica faptul ca un cimp nu poate avea valori necunoscutenull

3

Uniquedetermina comportamentul cimpurilor care nu fac parte din cheia primaraConstringerea Unique asigura ca valorile duplicate nu vor fi introduse pentru cimpurile specificateInsa cimpurile specificate pot avea valori nuleiar sistemul creeaza automat din ele un index pentru facilitatea cautarii in tabeleCheia primaracimpurile nu pot contine valori duplicateCheia externaun cimp sau o multime de cimpuri ce orespund cheii primare a altui tabelCheia primara se utilizeaza pentru a defini legaturile dintre tabeleExtabelul comenzi contine codfurnizor ca cheie primaracod furnizor din tabela furniozor este cheie externa pentru tabelul comenzi19 Constracircngeri de integritate comportamentale ExempleCheck limiteaza valorile care pot fi luate de un cimp (sau mai multe cimpuri)In cazul actualizarii BD sistemul testeaza constringerea booleana care urmeaza dupa cuv rezervat checkDaca adevarat-este acceptata actualizareaex CHECK(ldquoan studiurdquo BETWEEN 1 and 5) Reguli

orice restricţie are asociat un nume (explicit sau implicit) Dacă folosim CONSTRAINT atunci numele trebuie dat explicit Cheile multiple pot fi definite doar la nivelul tabelei NOT NULL doar la nivelul coloanei

20 Operaţii de actualizare a relaţiilor INSERT ndash Adaugă un tuplu sau mai multe icircntr-o relaţie1048708 UPDATE ndash Modifică valorile unor atribute icircntro relaţie specificată icircn tuplurile specificate deun criteriu1048708 DELETE ndash Şterge tuplurile dintr-o relaţie care satisfac un criteriu specificat21 Operaţiile tradiţionale pe mulţimi uniunea intersecţia şi diferenţa Proprietăţi Exemple

Operatiile binare asupra relatiilor uniunea intersectia si diferenta necesita ca operanzii (relatiile) sa fie defintii pe scheme compatibile

Uniunea a doua relatii compatibile r(R) si s(S) notata cu r U s e o relatie definita pe schema R sau S si consta din tuplurile ce apartin relatiilor r sau s Operatia uniunea are doua proprietati Ea e comutativa adica r U s = s U r Ea este si asociativa adics (r U s) U q = rU(s U q) pentru relaiile mutual compatibile r s si q

Intersectia a doua relatii compatibile r(R) si s(S) notata cu r cap sneste o relatie definita peschema R sau S si consta din tuplurile ce apartin concomitent relatiilor r si s

Diferenta a doua relatii compatibile r(R) si s(S) notata cu r s este o relatie definita pe multimea de atribute R sau S si are icircn calitate de tupluri toate tuplurile din relatia r ce nu sunt icircn s Diferena nu se bucura de proprietatea comutativa adica r s ne s r Totodata nu e nici asociativa adica (r s) q ne r (s q) fiindca (r s) q = r (s U q) pentru orice relaii mutual compatibile r s si q

Intersectia q=rcaps

Diferenta q1=rs q2=sr

22 Operaţia produsul cartezian Proprietăţi Exemple Produsul cartezian a doua relatii r(A1hellipAn) si s(B1hellipBm) notat cu r s

este o multime de tupluri (si nu icircntotdeauna o relatie) definite pe multimea de atribute A1hellipAn B1hellipBm Tuplurile reprezinta toate posibilele asociatii de

4

tupluri din r si s daca tr Є r si ts Є s atunci concatenatia trts este un tuplu icircn r s pentru orice pereche de tupluri tr si ts din r si s respectiv exista un tuplu t icircn r s icircncacirct t[Ai]=tr[Ai] 1leilen si t[Bj]=ts[Bj 1lejlem

Produsul cartezian nu este o operatie comutativa Icircn schimb se bucura de proprietatea asociativa23 Operaţiile complement şi complement activ Proprietăţi Exemple

Fie relatia r(R) Notam prin tup(R) multimea tuturor tuplurilor asupra atributelor schemei R si a domeniilor lor Complementul relatiei r notat cu ־r este ־r = tup(R) r

Fie r o relatie asupra schemei R AЄR si adom(A) = a|aЄdom(A) amp Ǝ tЄrampt[A] =a Multimea de valori adom(A) se numeste domeniul activ al atributului A Notam cu atup(R) multimea tuturor tuplurilor asupra atributelor schemei R si a domeniilor lor active Atunci complementul activ notat cu ~r este ~r = atup(R) r

Complemen tul activ

Complemen tul

24

Operaţia selecţia

Proprietăţi ExempleSelectia este o operatie unara Pentru selectarea unor

tupluri dintr-o relatie e necesara specificarea conditiilor de selectare Icircn rezultat se obtine o relatie ce e o submultime de

tupluri a relatiei initiale Selectia relatiei r (R) conform formulei F unde F e aplicabila relatiei r(R) e o submultime a relatiei r(R)

notata cu σF(r) ce consta din toate tuplurile tЄr ce satisfac F adica σF(r) = t | t Є r amp F(t)

Selectia s=σ((A = B) amp (D5))(r)25 Operaţia proiecţia Proprietăţi ExempleProiectia e o operatie unara

Proiectia relatiei r asupra multimii de atribute X notata cu πx(r) e o relatie cu schema X ce consta din X-valorile tuturor tuplurilor din r πx(r) = t X| t Є r

Proiectia s = πAC(r)26 Operaţia joncţiune Proprietăţi Exemple

5

Fie doua relatii r(R) si s(S) Jonctiunea relatiilor r si s (notatia uzuala r|x|s) este o relatie cu schema RS Tuplul t apartine relatiei rezultat daca exista tuplurile tr si ts icircn r si s respectiv si satisfac t[R]=tr si t[S]=ts adica r |x| s = t | t[R] = tramp t[S] = tsamp trЄ r amp ts Є s Deci fiecare tuplu din relatia rezultat este o concatenare a unui tuplu din r cu un tuplu din s ce au (RcapS)-valori egale Atributele cu acelasi nume icircn schema relatiei rezultat se iau o singura data Operatia jonctiunea nu este comutativa Icircn schimb ea se bucura de proprietatea asociativa

Jonctiunea q = r |x| s27 Interacţiunea dintre operaţiile joncţiunea şi proiecţia Exemple

Fie relatiile r(A B) si s(B C) Notam q=r|x|s si r1 = πAB(q) Icircn urma operatiilor observam ca tuplurile relatiei r1 constituie o submultime proprie a relatiei r

28 Operaţia θ-joncţiune Proprietăţi Exemple

θ-jonctiunea relatiilor r(R) si s(S) notata cu r|x|AθBs este o multime de tupluri concatenate de forma trts unde tr Є r ts Є s si tr(A) θ ts(B) adicar|x|AθBs = trts | tr Є r amp ts Є s amp tr(A) θ ts(B)

Operatia θ-jonctiunea poate fi exprimata prin operatiile produsul cartezian si selectia Rezultatul unei θ-jonctiuni este acelasi cu rezultatul unei selectii operate asupra unui produs cartezian adica r|x|AθBs = σAθB(r s)

29 Operaţia semijoncţiunea Proprietăţi Exemple

Semijonctiunea e o operatie binara Ea consta icircn construirea unei relatii din cele doua si e formata numai din tuplurile unei singure relatii ce participa la jonctiune

Fie doua relatii r(R) si s(S) Semijonctiunea relatiei r si s notata cur|x s este o multime de tupluri determinata de expresia r|x s = πR(r|x|s)

6

Semijonctiunea q =r|xs30 Operaţia divizarea Proprietăţi Exemple

Fie r(R) si s(S) doua relaii si S R Notam Q = R S Diviziunea relatiei r la relatia s notata cu rs este o relatie definita pe multimea de atribute Q rs = t| pentru tsЄ s(S) Ǝ tr Є r(R) ce satisface tr[Q]=t si tr[S]=ts

Operatia diviziunea poate fi conceputa drept operatie inversa produsului cartezian Fie q=rs Atunci qs produce o relatie cu schema R si relatia q va contine numarul maximal de tupluri ce ar satisface expresia qs r

Diviziunea q= rs

31Componentele limbajului SQL2

Componentele pe care le cuprinde limbajul SQL sunt

urmatoarele 1Componenta de descriere a datelor relationale (limbajul de descriere a datelor-LLD) 2Componenta de manipulare a datelor relationale(libajul de manipulare a datelro-LMD) Ambele fiind absolut necesare in gestiunea BD Pe linga aceste componente principale standartul SQL2 mai prevede si alte compon ale limbaj 3Controlul tranzactiilor contine comenzi pt specific tranzactiilor 4Controlul securitatii si refacerea datelor contine comenzi de administrare a bazei de date pt definirea utilizatorilor si a dreputului de acces la tabele32Tipuri de date numerice icircn SQL2 şi Transact SQL ExempleTipul numeric include numere intregi e diferite dimensiuni(integer sau int reprez pe 4 octetismallint pe 2 octeti)numere reale reprez in virdula flotanta cu diferite precizii(float-4 octetireal si double[precision]-8octeti)si numere zecimale reprezentate cu precizia dorita(tip numerci sau decimal)Formatul de repcentare a numer zecimale cu precizia dorita estenumerci[(ps)] sau decimal[(ps)]) unde p(precizia) este nr otal de cifre afisate iar s (scara) nr de cifre dupa punctul zecimalExemplu decimal(41) va fi 11162 si nu 162 sau 11162133 Tipuri de date secvenţe de caractere icircn SQL2 şi Transact SQL ExempleTipul sir de caractere permite definirea sirurilor de caractere de lungime fixa(char(n) sau character (n))precum si a sirurilor de caractere cu lungime variabila (varchar(n))Ambele tipuri pot reprezenta siruri de maximum n caractere cu diferenta ca pt siruri de lungime mai mica decit n la tipul char(n) se completeaza sirul cu spatii albe pina la n caractere in timp ce la tipul varchar(n) se memoreaza numai atitea caractere cit are sirul datText-pt secvente de caractere ASCI cu lungime variabila mai mare de 8Ko(de exemplu documente Html) dar care nu depaseste valoarea (2147483647 caractere) 34 Tipuri de date temporale icircn SQL2 şi Transact SQL Exemple (Date speciale)Cursor-contine referinta la un cursorHierarchyd-pt crearea tabelelor cu structura ierarhicaTable- tip special de date utilizat pt stocarea unui rezultat pt tratarea ulterioarapt pastrarea unei multimi de rind obtinute in calitate de rezultat al unei fti cu valoarea unui tabelTimestamp-identificator unic pt toata baza de date se util in calitate de mecanism de marcare a versiunii unui rind din tabelXML-tip de date ce pastreaza date XML35 Definirea schemei unei relaţii icircn SQL2 Exemple

7

Schema unei relaţii este numele relaţiei urmată de lista de atribute pentru fiecare atribut precizacircndu-se domeniul asociat Astfel pentru o relaţie R cu atributele A1 A2 An şi domeniile D1 D2 Dmcu m le n schema relaţiei R poate fi prezentată astfel

R(A1 D1 A2D2 An Dm) sauR

A1D1 AnDm

Fig 34 Reprezentarea schemei relaţiei R36 Constracircngeri de comportament icircn SQL2 ExempleSpecifica caracteristicile independente ale unui atribut(sau domeniu)Ele exprima semanticca elementelor domeniilorDe exemplu valorile atributului Nota_med trebuie sa fie mai mare decit zerodar nu poate depasi zeceSau nici o persoana de virsta 25 ani nu poate avea o vechime in munca de 37 de aniDeci conform acestei restrictii valorile atributului trebuie sa se incadreze intre anumite limite37 Constracircngeri structurale icircn SQL2 Exemple Constringeri de dependenteSpecifica legatura dintre atribute(sau domenii)Aici putem identifica asa numita dependenta de multime de atributeAngajat Salariu Departament Manager In relatia personalun manager este in acelasi timp un angajatdar nu orice angajat este managerDeci avem ca dom(manager) Ui dom (angajat)38 Modificarea şi suprimarea schemei relaţionale icircn SQL239Cele mai simple interogari (numai cu proiectiaInterogare (querry) este o operatie prin care se obtin datele dorite dintro baza de date selectate conform unui anumit criteriu(conditie)Proiectia ndashoperatie relationala unara prin care se selecteaza o submultime de atribute ale relatieiNumele si reducerile clientilor din OrheiProiectia Cl_numereducere (Selectia (clienti) cloras=rdquoorheirdquo40Interogări cu criterii de selecţie icircn SQL2 Exemple

Interogarile cu criterii de selectie in SQL sunt utilizate pu selectarea datelor din tabeleAre urmatoarea sintaxa de bazaSELECT[TIP]ltlista de cimpurigtFROMltlista de tabelegt[CONDITIE]Lista de cimpuri-lista de cimpuri ce trebuie selectateLista de tabele-lista de tabele de unde datele trebuie sa fie selectateCONDITIE-defineste un filtru pu interogare folosind unele clause ca WHEREEX ModelPret FROM pc_uri WHERE Cd=rsquo40xrsquo ORDER BY Pret

41Interogări cu funcţii de agregare icircn SQL2 Exemple Fde agreg -prelucreaza multimi de inregistrari(linii) ale tabelului si returneaza un anumit rezultatMajoritatea acestor functiide obiceiactioneaza asupra tuturor liniilor tabeluluiEle accepat parametriiAll-face ca functia sa considere toate inregistrarile inclusiv cele duplicateDISTINCT-face ca funct Sa considere numai inregistrarile ce nu poseda o valoare duplicataAVG-returneaza media aritmetica a lui xCOUNT-returneaza nr de linii a interogariiMAXMIN-returneaza valoarea maxima sau minima a exprMAX sau MIN ([DISTINCT|ALL)] expr)EX SELECT AVG(Viteza) As Viteza_medie MAX(Viteza) As Viteza_maxima MIN(Viteza) As Viteza_minina42Interogări cu agregarea tuplurilor icircn SQL2 Exemple43 Interogări de actualizare (inserare şi ştergere) a datelor icircn SQL2 ExempleLimbajul TRANSACT-SQL propune 3 instructiuni ce corespund celor 3 operatii de actualizare a bazei de dateinserarea(instructiunea INSERT)-pentru inserarea datelorsuprimarea(instructiunea DELETE)-pu stergerea datelor si modificarea(instructiunea UPDATE)-pu modificarea datelorToate optiunile se asupra tabelelor (fizice sau virtuale) si actualizearea se petrece la nivel de linie de tabelEXCREATE TABLE clienti(Cod_client INTTara CHAR(2)DEFAULT(sbquoMDrsquo)Nume CHAR(20))

8

INSERT clienti (Cod_clientTaraNume)VALUES(12340rsquoMDrsquorsquoIon Petrachersquo) INSERT clienti DEFAULT VALUES INSERT clienti VALUES (12560rsquoFRrsquorsquoJack Londonrsquo)44 Interogări de actualizare (modificare) a datelor icircn SQL2 ExempleUPDATE-operatia de modificare a continutului unuia sau a mai multor cimpuri ale tuplurilorSintaxa instructiunii UPDATE lttabelgt SETltcoloanagt=ltvaloare nouagt WHERE ltconditiegt In caz cind nici o conditie nu e impusa toate cimpurile tuturor inregistrarilor vor fi alterate de valorile noiEX UPDATE functionari SET Sector=rsquoAdministratiersquo WHERE Sector=rsquoFinantersquo SELECT FROM functionari ORDER BY Sector45 Interogări cu uniuni icircn SQL2 ExempleOperatia UNION-permite fuzionarea a doua selectii pentru a obtine o multime de tupluri egala cu uniunea acestor doua selectiiEX SELECT produseModel Pret FROM produsepc_uri WHERE produseModel=pc_uriModel AND Producator=rsquoBrsquo UNION SELECT produseModelPret FROM produselaptop_uri WHERE produseModel=laptop_uriModel AND Producator=rsquoBrsquo UNION SELECT produseModelPret FROM produseimprimante WHERE produseModel=imprimanteModel AND Producator=rsquoBrsquo46Interogări cu intersecţii icircn SQL2 ExempleInterogarile cu operatiile uniuneintersectia si diferenta sunt foarte aproape de interogarile scrise in algebra relationalaSe formuleaza doua interogari care construiesc relatii cu scheme compatibile adica cu acelasi nr de atribute si de acelasi tip si aceste cereri sunt legate cu cuvintele cheie UNIONINTERSECT sau EXCEPT Pentru a gasi valori ce coincid in doua sau mai multe tabele se poate utiliza instructiunea INTERSECTEX SELECT Model FROM produse INTERSECT SELECT Model FROM pc_uriDaca INTERSECT este substituit cu EXCEPT se obtine un rezultatintr-un felinvers celui precedentadica se vor afisa modelele de produse din primul tabel care nu sunt in al doilea tabel

47Interogări cu diferenţe icircn SQL2 ExempleInterogarile cu operatiile uniuneintersectia si diferenta sunt foarte aproape de interogarile scrise in algebra relationalaSe formuleaza doua interogari care construiesc relatii cu scheme compatibile adica cu acelasi nr de atribute si de acelasi tip si aceste cereri sunt legate cu cuvintele cheie UNIONINTERSECT sau EXCEPTEX SELECT Model FROM produse EXCEPT SELECT Model FROM pc_uri48Interogări cu joncţiuni icircn SQL2 ExempleDeseoripu a obtine un rezultat complet este necesara selectarea datelor din doua sau mai multe tabeleTabelele din baza de date sunt legate intre ele prin cheiEste importantindeosebirolul cheii primare care face ca coloanele ce o constituie sa posede o valoare unica pu fiece rindDe exe necesar sa se afiseze producatorul si viteza laptopurilorAtributul viteza se afla in tabelul laptop_uriInformatia referitoare la producatori se afla in tabelul produserezultatul este ordonat dupa cimpul ProducatorEX SELECT ProducatorViteza FROM produselaptop_uri WHERE produseModel=laptop_uriModel ORDER BY ProducatorCU Jonctiune internaEX SELECT ProducatorViteza FROM produse INNER JOIN laptop_uri ON produseModel=laptop_uriModel ORDER BY Producator49Interogări imbricate cu ALL icircn SQL2 ExempleSubinterogare este o cerere care restituie un singur atribut Interogarea utilizată in comparaŃie se defineste in interiorul predicatului din clauza where si se numeste interogare imbricatăAll - face ca functia sa considere toate inregistrarile inclusive cele duplicateCuvantul cheie all specifică faptul că linia este validă dacă valoarea atributului se află in

9

relatie cu toate valorile returnate de interogareSă se găsească departamentele in care nu lucrează nici un angajat cu numele Ionescuselect Deptfrom Departamentwhere Dept ltgt all (select Deptfrom Angajatiwhere Nume = rsquoIonescursquo)Această interogare poate fi exprimată cu ajutorul operatorului diferenŃăselect Deptfrom Departamentexceptselect Deptfrom Angajatiwhere Nume = rsquoIonescursquo 50 Interogări imbricate cu ANY icircn SQL2 Exemple Cuvantul cheie any specifică faptul că linia este validă dacă valoarea atributului se află inrelatie cu cel putin o valoare returnată de interogarea imbricatăSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Exemplu Să se găsească angajaŃii ce lucrează intr-un departament din Iasiselect Nume Prenumefrom Angajatiwhere Dept = any (select Deptfrom Departamentwhere Oras = rsquoIasirsquo)ObservaŃie Această interogare poate fi rezolvată prin realizarea unei joncŃiuni intre celedouă tabele 51 Interogări imbricate cu EXISTS icircn SQL2 Exemple Acest operator acceptă ca parametru o interogare imbricată sireturnează valoarea adevărat doar dacă interogarea nu produce un rezultat vidSă se găsească persoanele care au acelasi nume si prenume dar coduri diferiteselect from Persoana Pwhere exists (select from Persoana P1where P1Nume = PNume andP1Prenume = PPrenume andP1Cod ltgt PCod ) 52 Interogări imbricate cu IN icircn SQL2 ExempleSQL pune la dispozitie doi operatori pentru a reprezenta apartenenta la o multime sinegatia sa in si not in Acesti operatori sunt echivalenti cu = any respectiv ltgt allselect Deptfrom Angajatiwhere Salariu = any sau in (select max(Salariu)from Angajati) 53 Interogări imbricate cu bdquo=rdquo icircn SQL2 ExempleSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Să se găsească departamentele in care lucrează angajatii ce castigă cel mai mare salariuselect Deptfrom Angajatiwhere Salariu = any (select max(Salariu)from Angajati)sauselect Deptfrom Angajatiwhere Salariu gt= all (select Salariufrom Angajati)ObservatiiDesi cele două interogări sunt echivalente este indicată folosirea functiilor

10

agregat deoarece sunt mai concludente si se execută mai eficientIn cazul primei interogări nu există nici o diferenŃa dacă in loc de operatorul anyse foloseste operatorul all (deoarece interogarea internă are ca rezultat o singurălinie) 54 Definirea utilizatorilor şi accesului la baza de date icircn SQL2 ExempleIn functie de modul de exploatare a bazei de date utilizatorii se pot impărti inadministratorul bazei de date (DBA) ndash persoana responsabilă de proiectarea controlul siadministrarea bazei de dateprogramatorii de aplicatii ndash definesc si creează programele ce accesează baza de dateutilizatorii obisnuiti ndash cei care utilizează efectiv baza de date- utilizatori finali ndash utilizează tranzactii (spre exemplu programe ce realizeazăactivităŃi frecvente si predefinite- utilizatori ocazionali ndash capabili să utilizeze limbaje interactive pentru a accesabaza de date formuland interogări (sau actualizări) de diferite tipuriPentru a putea lucra cu baze de date trebuie sa avem instalat un server de baze de dateTrebuie sa realizam conexiunea sh sa accesam in sfirsit datele 55Definirea permiselor asupra relaţiilor icircn SQL2 ExempleSGBD-urile permit datelor să fie considerate drept resurse comune ale organizatieidisponibile tuturor membrilor autorizatiBaza de date furnizează un model standardizat si precis al acelei părti a lumii reale careprezintă interes pentru organizatie model folosit in aplicaŃiile existente si care cuextensiile necesare poate fi folosit in aplicatii viitoareSGBD-urile oferă posibilitatea unui control centralizat al datelorPartajarea bazelor de date permite reducerea redundantei si inconsistentei datelorIndependenta datelor caracteristica fundamentală a SGBD-urilor favorizeazădezvoltarea de aplicatii mai flexibile si mai usor de modificat 55 Definirea permiselor asupra relaţiilor icircn SQL2 ExempleIdee nam ce o avut in vedere pp )56 Definirea sinonimilor icircn SQL2 ExempleSinonimele pot fi utilizate in interogari sau procedure stocate in loc de numele originale ale obiectelor din 23 sau 4 parti De exemplu este nevoie de executat o interogare catre un obiect de stocat pe alt serverAtunci pt a accesa acest obiect e necesar sa se scrie numele lui implicitNume_serverNume_baza_de_dateNume_schemaNume_ObiectUtilizind un sinonim creat in schema curentaobiectul poate fi accesat doar specificind sinonimul respectivUn sinonim apartine unei scheme ca si alte obiecte ale schemeiNumele unui sinonim trebuie sa fie unicUn sinonim poate fi creat pt urmat obiecte din baza de datetabelele definite de utilizator(inclusive tabelele temporare atit locale cit sh globale)viziuniprocedure stocatefunctiiUn sinonim nu poate fi obiect de baza pt alt sinonimUn sinonim nu poate referi o functie de agregare definite de utilizatorDoar numele unui sinonim executa legatura intre acesta si obiectul de bazaExistenta si tipul de verificarea drepturilor de acces catre obiectul de baza sunt aminate pina la rulareprin urmare acelasi nume ca si obiectul de baza originalDe exemplu se considera un sinonim cumparaturi care face referire la dbovinzari in baza de date calculatoareDaca tabelul dbovinzari este sters si inlocuit cu o viziune numita dbovinzariatunci cumparaturi acum se refera la viziunea dbovinzariUrmatorul exemplu creaza un sinonim notebook pt obiectul d ebazalaptop_ri din vaza de calculatoare apoi interogheaza baza de dateutilizind sinonimul creatUse calculatoareGoCreate Synonym notebook for calculatoaredbolaptop_uriGoSelect from notebookGo 57 Blocarea relaţiilor şi gestiunea tranzacţiilor icircn SQL2Sistemul blocheaza icircn mod automat o linie icircn numele unei tranzactii pentru a icircmpiedica alte tranzactii sa blocheze aceeasi linie Aceasta blocare icircmpiedica manipularea simultana a unei Unii de catre doua tranzactii distincte

11

prevenindu-se astfel interferenta distructiva a instructiunilor DDL si DML contradictorii De exemplu Oracfe icircmpiedica distrugerea unui tabel daca exista tranzactii nefinalizate icircn care este implicat tabelul respectiv Aceste blocari ale datelor sunt anulate automat atunci cacircnd tranzactia este finalizata Blocarea implicita a datelor decurge automat pentru toate instructiunile SQL astfel icircncacirct nu este necesar ca utilizatorii bazei de date sa blocheze liniile icircn mod explicit icircn mod prestabilit Oracle blocheaza resursele la nivelul cel mai scazut posibilTranzactiile sunt grupuri logice de instructiuni SQL Fiecare tranzactie se icircncheie fie cu o finalizare fie cu o derulare icircnapoi Finalizarile duc la salvarea permanenta a modificarilor bazei de date efectuate de catre tranzactie Derularile icircnapoi anuleaza toate modificarile bazei de date efectuate de catre tranzactieGestionarea tranzactiilor asigura concurenta si coerenta datelor pentru toti utilizatorii bazei de date icircn lipsa gestiunii tranzactiilor calitatea si precizia datelor ar fi compromise iar baza de date ar deveni aproape de neutilizat58 Definirea viziunilor icircn SQL2 ExempleO viziune (VIEW) este un table virtual al carui continut este definit de o interogareO V poate fi create din unul sau mai multe tabele ale bdViziunile sunt folosite pentru a concentrasimplifica si personalize fiecare patrundere a utilizatorului in bdEle pot fi folosite si ca mecanisme de securitate permitind utilizatorului sa acceseze date prin intermediului viziunilorfara a acorda utilizatorilor permisiuni sa acceseze tabelele de baza direztViziunile pot fi deasemenea folosite atunci cind sunt copiate date din SQL server si pentru partajarea datelor2 tipuri de creare a viziunilorFolosind instructiunea Create view a limbajului transact_sqlFolosind VEW Designer al componentei SQ server management studioPrincipii de creare a viziunilorO V poate fi create numai in baza de data in uzTotusi tabelele si viziunile ce se refera la o viziune noua pot exista in alte baze de date sau cjiar pe alte serverePot fi construite viziuni asupra altor viziuni sau procedure ce se refera la viziuniAsupra V nu pot fi construiti indecsi sau definiti indecsi full-textO V fie exemplu2 in bd calculatoare poate fi definite folosind limb SQL de exempluUse calculatoareGoIf object_ID(lsquoexemplul2rsquorsquoVrsquo) is not null drop view exemplul2GoCreate View exemplul2 As select Model from produse 59Definirea indecşilor icircn SQL2 ExempleUn index este un obiect al schemei bazei de date care facilitează accesarea rapidă şi univocă a datelor Icircn anumite condiţii viteza de execuţie a cererilor După ce indexul a fost creat utilizatorului nu i se mai cere nici o operaţie directă asupra lui el va fi folosit şi icircntreţinut automat de către SGBDSintaxa pentru crearea unui index este următoareaCREATE INDEX nume_index ON nume_tabela (nume_coloana1 [ nume coloana2 hellip])Exemplu crearea unui index după coloana număr factură icircn tabela facturiCREATE INDEX nr_factura_index ON facturi (nrfact)Pentru tabele mici folosirea indecşilor nu aduce icircmbunătăţiri de performanţă Se folosesc atunci cacircnd coloanele după care se creează indecşii conţin o diversitate mare de informaţii sau multe valori NULL Indecşii optimizează interogările atunci cacircnd acestea returnează o cantitate mică de date Indecşii cresc viteza de regăsire a datelor dar icircncetinesc actualizarea datelor datorită faptului că sistemul trebuie să actualizeze şi fişierele index Icircn general este foarte util să se creeze indecşi după cacircmpuri care se folosesc icircn operaţii de joinŞtergerea unui index se face cu comanda DROP INDEXDROP INDEX nume_index [ON nume_tabela] 60Definirea constracircngerilor şi aserţiunilor icircn SQL2 ExemplePt formularea unor restrictii mai generale decit cele corespunzind tabelelor si coloanelor SQL da posibilitatea folosirii unei intructiuni specifice cu sintaxaCreate assertion ltconstraint_namegt check(search_condition)Spre deosebire de restrictiile de tabele si de coloane asertiunile nu sint associate cu nici o definitie de tabela particularaAsertiunile sunt folosite de obicei pt a formula restrictii asupra mai multor tabeleRemarcam ca pt a satisface restrictiaconditia din clauza check trebuie sa furmizeze o valoare fie truefie unknownVederile si Aseriunile se folosesc intransportul schemelor conceputale din modelul EEA si din UML in modelul relationalExemplu de adaugare de constringere

12

Alter Table task Constraint Foreign Key (newtaskind)references newtask(newtaskid)O constringere se poate adauga si la crearea tabeluluiConstringeri de integritateCheile primarevalori implicite pt cimpuriDaca integritatea bazei de date nu este asigurataadica nu sint respectate constringerile de integritatea se spune ca bd este incosistenta

13

Page 4: Baze de Date Examen.[Conspecte.md]

Uniquedetermina comportamentul cimpurilor care nu fac parte din cheia primaraConstringerea Unique asigura ca valorile duplicate nu vor fi introduse pentru cimpurile specificateInsa cimpurile specificate pot avea valori nuleiar sistemul creeaza automat din ele un index pentru facilitatea cautarii in tabeleCheia primaracimpurile nu pot contine valori duplicateCheia externaun cimp sau o multime de cimpuri ce orespund cheii primare a altui tabelCheia primara se utilizeaza pentru a defini legaturile dintre tabeleExtabelul comenzi contine codfurnizor ca cheie primaracod furnizor din tabela furniozor este cheie externa pentru tabelul comenzi19 Constracircngeri de integritate comportamentale ExempleCheck limiteaza valorile care pot fi luate de un cimp (sau mai multe cimpuri)In cazul actualizarii BD sistemul testeaza constringerea booleana care urmeaza dupa cuv rezervat checkDaca adevarat-este acceptata actualizareaex CHECK(ldquoan studiurdquo BETWEEN 1 and 5) Reguli

orice restricţie are asociat un nume (explicit sau implicit) Dacă folosim CONSTRAINT atunci numele trebuie dat explicit Cheile multiple pot fi definite doar la nivelul tabelei NOT NULL doar la nivelul coloanei

20 Operaţii de actualizare a relaţiilor INSERT ndash Adaugă un tuplu sau mai multe icircntr-o relaţie1048708 UPDATE ndash Modifică valorile unor atribute icircntro relaţie specificată icircn tuplurile specificate deun criteriu1048708 DELETE ndash Şterge tuplurile dintr-o relaţie care satisfac un criteriu specificat21 Operaţiile tradiţionale pe mulţimi uniunea intersecţia şi diferenţa Proprietăţi Exemple

Operatiile binare asupra relatiilor uniunea intersectia si diferenta necesita ca operanzii (relatiile) sa fie defintii pe scheme compatibile

Uniunea a doua relatii compatibile r(R) si s(S) notata cu r U s e o relatie definita pe schema R sau S si consta din tuplurile ce apartin relatiilor r sau s Operatia uniunea are doua proprietati Ea e comutativa adica r U s = s U r Ea este si asociativa adics (r U s) U q = rU(s U q) pentru relaiile mutual compatibile r s si q

Intersectia a doua relatii compatibile r(R) si s(S) notata cu r cap sneste o relatie definita peschema R sau S si consta din tuplurile ce apartin concomitent relatiilor r si s

Diferenta a doua relatii compatibile r(R) si s(S) notata cu r s este o relatie definita pe multimea de atribute R sau S si are icircn calitate de tupluri toate tuplurile din relatia r ce nu sunt icircn s Diferena nu se bucura de proprietatea comutativa adica r s ne s r Totodata nu e nici asociativa adica (r s) q ne r (s q) fiindca (r s) q = r (s U q) pentru orice relaii mutual compatibile r s si q

Intersectia q=rcaps

Diferenta q1=rs q2=sr

22 Operaţia produsul cartezian Proprietăţi Exemple Produsul cartezian a doua relatii r(A1hellipAn) si s(B1hellipBm) notat cu r s

este o multime de tupluri (si nu icircntotdeauna o relatie) definite pe multimea de atribute A1hellipAn B1hellipBm Tuplurile reprezinta toate posibilele asociatii de

4

tupluri din r si s daca tr Є r si ts Є s atunci concatenatia trts este un tuplu icircn r s pentru orice pereche de tupluri tr si ts din r si s respectiv exista un tuplu t icircn r s icircncacirct t[Ai]=tr[Ai] 1leilen si t[Bj]=ts[Bj 1lejlem

Produsul cartezian nu este o operatie comutativa Icircn schimb se bucura de proprietatea asociativa23 Operaţiile complement şi complement activ Proprietăţi Exemple

Fie relatia r(R) Notam prin tup(R) multimea tuturor tuplurilor asupra atributelor schemei R si a domeniilor lor Complementul relatiei r notat cu ־r este ־r = tup(R) r

Fie r o relatie asupra schemei R AЄR si adom(A) = a|aЄdom(A) amp Ǝ tЄrampt[A] =a Multimea de valori adom(A) se numeste domeniul activ al atributului A Notam cu atup(R) multimea tuturor tuplurilor asupra atributelor schemei R si a domeniilor lor active Atunci complementul activ notat cu ~r este ~r = atup(R) r

Complemen tul activ

Complemen tul

24

Operaţia selecţia

Proprietăţi ExempleSelectia este o operatie unara Pentru selectarea unor

tupluri dintr-o relatie e necesara specificarea conditiilor de selectare Icircn rezultat se obtine o relatie ce e o submultime de

tupluri a relatiei initiale Selectia relatiei r (R) conform formulei F unde F e aplicabila relatiei r(R) e o submultime a relatiei r(R)

notata cu σF(r) ce consta din toate tuplurile tЄr ce satisfac F adica σF(r) = t | t Є r amp F(t)

Selectia s=σ((A = B) amp (D5))(r)25 Operaţia proiecţia Proprietăţi ExempleProiectia e o operatie unara

Proiectia relatiei r asupra multimii de atribute X notata cu πx(r) e o relatie cu schema X ce consta din X-valorile tuturor tuplurilor din r πx(r) = t X| t Є r

Proiectia s = πAC(r)26 Operaţia joncţiune Proprietăţi Exemple

5

Fie doua relatii r(R) si s(S) Jonctiunea relatiilor r si s (notatia uzuala r|x|s) este o relatie cu schema RS Tuplul t apartine relatiei rezultat daca exista tuplurile tr si ts icircn r si s respectiv si satisfac t[R]=tr si t[S]=ts adica r |x| s = t | t[R] = tramp t[S] = tsamp trЄ r amp ts Є s Deci fiecare tuplu din relatia rezultat este o concatenare a unui tuplu din r cu un tuplu din s ce au (RcapS)-valori egale Atributele cu acelasi nume icircn schema relatiei rezultat se iau o singura data Operatia jonctiunea nu este comutativa Icircn schimb ea se bucura de proprietatea asociativa

Jonctiunea q = r |x| s27 Interacţiunea dintre operaţiile joncţiunea şi proiecţia Exemple

Fie relatiile r(A B) si s(B C) Notam q=r|x|s si r1 = πAB(q) Icircn urma operatiilor observam ca tuplurile relatiei r1 constituie o submultime proprie a relatiei r

28 Operaţia θ-joncţiune Proprietăţi Exemple

θ-jonctiunea relatiilor r(R) si s(S) notata cu r|x|AθBs este o multime de tupluri concatenate de forma trts unde tr Є r ts Є s si tr(A) θ ts(B) adicar|x|AθBs = trts | tr Є r amp ts Є s amp tr(A) θ ts(B)

Operatia θ-jonctiunea poate fi exprimata prin operatiile produsul cartezian si selectia Rezultatul unei θ-jonctiuni este acelasi cu rezultatul unei selectii operate asupra unui produs cartezian adica r|x|AθBs = σAθB(r s)

29 Operaţia semijoncţiunea Proprietăţi Exemple

Semijonctiunea e o operatie binara Ea consta icircn construirea unei relatii din cele doua si e formata numai din tuplurile unei singure relatii ce participa la jonctiune

Fie doua relatii r(R) si s(S) Semijonctiunea relatiei r si s notata cur|x s este o multime de tupluri determinata de expresia r|x s = πR(r|x|s)

6

Semijonctiunea q =r|xs30 Operaţia divizarea Proprietăţi Exemple

Fie r(R) si s(S) doua relaii si S R Notam Q = R S Diviziunea relatiei r la relatia s notata cu rs este o relatie definita pe multimea de atribute Q rs = t| pentru tsЄ s(S) Ǝ tr Є r(R) ce satisface tr[Q]=t si tr[S]=ts

Operatia diviziunea poate fi conceputa drept operatie inversa produsului cartezian Fie q=rs Atunci qs produce o relatie cu schema R si relatia q va contine numarul maximal de tupluri ce ar satisface expresia qs r

Diviziunea q= rs

31Componentele limbajului SQL2

Componentele pe care le cuprinde limbajul SQL sunt

urmatoarele 1Componenta de descriere a datelor relationale (limbajul de descriere a datelor-LLD) 2Componenta de manipulare a datelor relationale(libajul de manipulare a datelro-LMD) Ambele fiind absolut necesare in gestiunea BD Pe linga aceste componente principale standartul SQL2 mai prevede si alte compon ale limbaj 3Controlul tranzactiilor contine comenzi pt specific tranzactiilor 4Controlul securitatii si refacerea datelor contine comenzi de administrare a bazei de date pt definirea utilizatorilor si a dreputului de acces la tabele32Tipuri de date numerice icircn SQL2 şi Transact SQL ExempleTipul numeric include numere intregi e diferite dimensiuni(integer sau int reprez pe 4 octetismallint pe 2 octeti)numere reale reprez in virdula flotanta cu diferite precizii(float-4 octetireal si double[precision]-8octeti)si numere zecimale reprezentate cu precizia dorita(tip numerci sau decimal)Formatul de repcentare a numer zecimale cu precizia dorita estenumerci[(ps)] sau decimal[(ps)]) unde p(precizia) este nr otal de cifre afisate iar s (scara) nr de cifre dupa punctul zecimalExemplu decimal(41) va fi 11162 si nu 162 sau 11162133 Tipuri de date secvenţe de caractere icircn SQL2 şi Transact SQL ExempleTipul sir de caractere permite definirea sirurilor de caractere de lungime fixa(char(n) sau character (n))precum si a sirurilor de caractere cu lungime variabila (varchar(n))Ambele tipuri pot reprezenta siruri de maximum n caractere cu diferenta ca pt siruri de lungime mai mica decit n la tipul char(n) se completeaza sirul cu spatii albe pina la n caractere in timp ce la tipul varchar(n) se memoreaza numai atitea caractere cit are sirul datText-pt secvente de caractere ASCI cu lungime variabila mai mare de 8Ko(de exemplu documente Html) dar care nu depaseste valoarea (2147483647 caractere) 34 Tipuri de date temporale icircn SQL2 şi Transact SQL Exemple (Date speciale)Cursor-contine referinta la un cursorHierarchyd-pt crearea tabelelor cu structura ierarhicaTable- tip special de date utilizat pt stocarea unui rezultat pt tratarea ulterioarapt pastrarea unei multimi de rind obtinute in calitate de rezultat al unei fti cu valoarea unui tabelTimestamp-identificator unic pt toata baza de date se util in calitate de mecanism de marcare a versiunii unui rind din tabelXML-tip de date ce pastreaza date XML35 Definirea schemei unei relaţii icircn SQL2 Exemple

7

Schema unei relaţii este numele relaţiei urmată de lista de atribute pentru fiecare atribut precizacircndu-se domeniul asociat Astfel pentru o relaţie R cu atributele A1 A2 An şi domeniile D1 D2 Dmcu m le n schema relaţiei R poate fi prezentată astfel

R(A1 D1 A2D2 An Dm) sauR

A1D1 AnDm

Fig 34 Reprezentarea schemei relaţiei R36 Constracircngeri de comportament icircn SQL2 ExempleSpecifica caracteristicile independente ale unui atribut(sau domeniu)Ele exprima semanticca elementelor domeniilorDe exemplu valorile atributului Nota_med trebuie sa fie mai mare decit zerodar nu poate depasi zeceSau nici o persoana de virsta 25 ani nu poate avea o vechime in munca de 37 de aniDeci conform acestei restrictii valorile atributului trebuie sa se incadreze intre anumite limite37 Constracircngeri structurale icircn SQL2 Exemple Constringeri de dependenteSpecifica legatura dintre atribute(sau domenii)Aici putem identifica asa numita dependenta de multime de atributeAngajat Salariu Departament Manager In relatia personalun manager este in acelasi timp un angajatdar nu orice angajat este managerDeci avem ca dom(manager) Ui dom (angajat)38 Modificarea şi suprimarea schemei relaţionale icircn SQL239Cele mai simple interogari (numai cu proiectiaInterogare (querry) este o operatie prin care se obtin datele dorite dintro baza de date selectate conform unui anumit criteriu(conditie)Proiectia ndashoperatie relationala unara prin care se selecteaza o submultime de atribute ale relatieiNumele si reducerile clientilor din OrheiProiectia Cl_numereducere (Selectia (clienti) cloras=rdquoorheirdquo40Interogări cu criterii de selecţie icircn SQL2 Exemple

Interogarile cu criterii de selectie in SQL sunt utilizate pu selectarea datelor din tabeleAre urmatoarea sintaxa de bazaSELECT[TIP]ltlista de cimpurigtFROMltlista de tabelegt[CONDITIE]Lista de cimpuri-lista de cimpuri ce trebuie selectateLista de tabele-lista de tabele de unde datele trebuie sa fie selectateCONDITIE-defineste un filtru pu interogare folosind unele clause ca WHEREEX ModelPret FROM pc_uri WHERE Cd=rsquo40xrsquo ORDER BY Pret

41Interogări cu funcţii de agregare icircn SQL2 Exemple Fde agreg -prelucreaza multimi de inregistrari(linii) ale tabelului si returneaza un anumit rezultatMajoritatea acestor functiide obiceiactioneaza asupra tuturor liniilor tabeluluiEle accepat parametriiAll-face ca functia sa considere toate inregistrarile inclusiv cele duplicateDISTINCT-face ca funct Sa considere numai inregistrarile ce nu poseda o valoare duplicataAVG-returneaza media aritmetica a lui xCOUNT-returneaza nr de linii a interogariiMAXMIN-returneaza valoarea maxima sau minima a exprMAX sau MIN ([DISTINCT|ALL)] expr)EX SELECT AVG(Viteza) As Viteza_medie MAX(Viteza) As Viteza_maxima MIN(Viteza) As Viteza_minina42Interogări cu agregarea tuplurilor icircn SQL2 Exemple43 Interogări de actualizare (inserare şi ştergere) a datelor icircn SQL2 ExempleLimbajul TRANSACT-SQL propune 3 instructiuni ce corespund celor 3 operatii de actualizare a bazei de dateinserarea(instructiunea INSERT)-pentru inserarea datelorsuprimarea(instructiunea DELETE)-pu stergerea datelor si modificarea(instructiunea UPDATE)-pu modificarea datelorToate optiunile se asupra tabelelor (fizice sau virtuale) si actualizearea se petrece la nivel de linie de tabelEXCREATE TABLE clienti(Cod_client INTTara CHAR(2)DEFAULT(sbquoMDrsquo)Nume CHAR(20))

8

INSERT clienti (Cod_clientTaraNume)VALUES(12340rsquoMDrsquorsquoIon Petrachersquo) INSERT clienti DEFAULT VALUES INSERT clienti VALUES (12560rsquoFRrsquorsquoJack Londonrsquo)44 Interogări de actualizare (modificare) a datelor icircn SQL2 ExempleUPDATE-operatia de modificare a continutului unuia sau a mai multor cimpuri ale tuplurilorSintaxa instructiunii UPDATE lttabelgt SETltcoloanagt=ltvaloare nouagt WHERE ltconditiegt In caz cind nici o conditie nu e impusa toate cimpurile tuturor inregistrarilor vor fi alterate de valorile noiEX UPDATE functionari SET Sector=rsquoAdministratiersquo WHERE Sector=rsquoFinantersquo SELECT FROM functionari ORDER BY Sector45 Interogări cu uniuni icircn SQL2 ExempleOperatia UNION-permite fuzionarea a doua selectii pentru a obtine o multime de tupluri egala cu uniunea acestor doua selectiiEX SELECT produseModel Pret FROM produsepc_uri WHERE produseModel=pc_uriModel AND Producator=rsquoBrsquo UNION SELECT produseModelPret FROM produselaptop_uri WHERE produseModel=laptop_uriModel AND Producator=rsquoBrsquo UNION SELECT produseModelPret FROM produseimprimante WHERE produseModel=imprimanteModel AND Producator=rsquoBrsquo46Interogări cu intersecţii icircn SQL2 ExempleInterogarile cu operatiile uniuneintersectia si diferenta sunt foarte aproape de interogarile scrise in algebra relationalaSe formuleaza doua interogari care construiesc relatii cu scheme compatibile adica cu acelasi nr de atribute si de acelasi tip si aceste cereri sunt legate cu cuvintele cheie UNIONINTERSECT sau EXCEPT Pentru a gasi valori ce coincid in doua sau mai multe tabele se poate utiliza instructiunea INTERSECTEX SELECT Model FROM produse INTERSECT SELECT Model FROM pc_uriDaca INTERSECT este substituit cu EXCEPT se obtine un rezultatintr-un felinvers celui precedentadica se vor afisa modelele de produse din primul tabel care nu sunt in al doilea tabel

47Interogări cu diferenţe icircn SQL2 ExempleInterogarile cu operatiile uniuneintersectia si diferenta sunt foarte aproape de interogarile scrise in algebra relationalaSe formuleaza doua interogari care construiesc relatii cu scheme compatibile adica cu acelasi nr de atribute si de acelasi tip si aceste cereri sunt legate cu cuvintele cheie UNIONINTERSECT sau EXCEPTEX SELECT Model FROM produse EXCEPT SELECT Model FROM pc_uri48Interogări cu joncţiuni icircn SQL2 ExempleDeseoripu a obtine un rezultat complet este necesara selectarea datelor din doua sau mai multe tabeleTabelele din baza de date sunt legate intre ele prin cheiEste importantindeosebirolul cheii primare care face ca coloanele ce o constituie sa posede o valoare unica pu fiece rindDe exe necesar sa se afiseze producatorul si viteza laptopurilorAtributul viteza se afla in tabelul laptop_uriInformatia referitoare la producatori se afla in tabelul produserezultatul este ordonat dupa cimpul ProducatorEX SELECT ProducatorViteza FROM produselaptop_uri WHERE produseModel=laptop_uriModel ORDER BY ProducatorCU Jonctiune internaEX SELECT ProducatorViteza FROM produse INNER JOIN laptop_uri ON produseModel=laptop_uriModel ORDER BY Producator49Interogări imbricate cu ALL icircn SQL2 ExempleSubinterogare este o cerere care restituie un singur atribut Interogarea utilizată in comparaŃie se defineste in interiorul predicatului din clauza where si se numeste interogare imbricatăAll - face ca functia sa considere toate inregistrarile inclusive cele duplicateCuvantul cheie all specifică faptul că linia este validă dacă valoarea atributului se află in

9

relatie cu toate valorile returnate de interogareSă se găsească departamentele in care nu lucrează nici un angajat cu numele Ionescuselect Deptfrom Departamentwhere Dept ltgt all (select Deptfrom Angajatiwhere Nume = rsquoIonescursquo)Această interogare poate fi exprimată cu ajutorul operatorului diferenŃăselect Deptfrom Departamentexceptselect Deptfrom Angajatiwhere Nume = rsquoIonescursquo 50 Interogări imbricate cu ANY icircn SQL2 Exemple Cuvantul cheie any specifică faptul că linia este validă dacă valoarea atributului se află inrelatie cu cel putin o valoare returnată de interogarea imbricatăSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Exemplu Să se găsească angajaŃii ce lucrează intr-un departament din Iasiselect Nume Prenumefrom Angajatiwhere Dept = any (select Deptfrom Departamentwhere Oras = rsquoIasirsquo)ObservaŃie Această interogare poate fi rezolvată prin realizarea unei joncŃiuni intre celedouă tabele 51 Interogări imbricate cu EXISTS icircn SQL2 Exemple Acest operator acceptă ca parametru o interogare imbricată sireturnează valoarea adevărat doar dacă interogarea nu produce un rezultat vidSă se găsească persoanele care au acelasi nume si prenume dar coduri diferiteselect from Persoana Pwhere exists (select from Persoana P1where P1Nume = PNume andP1Prenume = PPrenume andP1Cod ltgt PCod ) 52 Interogări imbricate cu IN icircn SQL2 ExempleSQL pune la dispozitie doi operatori pentru a reprezenta apartenenta la o multime sinegatia sa in si not in Acesti operatori sunt echivalenti cu = any respectiv ltgt allselect Deptfrom Angajatiwhere Salariu = any sau in (select max(Salariu)from Angajati) 53 Interogări imbricate cu bdquo=rdquo icircn SQL2 ExempleSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Să se găsească departamentele in care lucrează angajatii ce castigă cel mai mare salariuselect Deptfrom Angajatiwhere Salariu = any (select max(Salariu)from Angajati)sauselect Deptfrom Angajatiwhere Salariu gt= all (select Salariufrom Angajati)ObservatiiDesi cele două interogări sunt echivalente este indicată folosirea functiilor

10

agregat deoarece sunt mai concludente si se execută mai eficientIn cazul primei interogări nu există nici o diferenŃa dacă in loc de operatorul anyse foloseste operatorul all (deoarece interogarea internă are ca rezultat o singurălinie) 54 Definirea utilizatorilor şi accesului la baza de date icircn SQL2 ExempleIn functie de modul de exploatare a bazei de date utilizatorii se pot impărti inadministratorul bazei de date (DBA) ndash persoana responsabilă de proiectarea controlul siadministrarea bazei de dateprogramatorii de aplicatii ndash definesc si creează programele ce accesează baza de dateutilizatorii obisnuiti ndash cei care utilizează efectiv baza de date- utilizatori finali ndash utilizează tranzactii (spre exemplu programe ce realizeazăactivităŃi frecvente si predefinite- utilizatori ocazionali ndash capabili să utilizeze limbaje interactive pentru a accesabaza de date formuland interogări (sau actualizări) de diferite tipuriPentru a putea lucra cu baze de date trebuie sa avem instalat un server de baze de dateTrebuie sa realizam conexiunea sh sa accesam in sfirsit datele 55Definirea permiselor asupra relaţiilor icircn SQL2 ExempleSGBD-urile permit datelor să fie considerate drept resurse comune ale organizatieidisponibile tuturor membrilor autorizatiBaza de date furnizează un model standardizat si precis al acelei părti a lumii reale careprezintă interes pentru organizatie model folosit in aplicaŃiile existente si care cuextensiile necesare poate fi folosit in aplicatii viitoareSGBD-urile oferă posibilitatea unui control centralizat al datelorPartajarea bazelor de date permite reducerea redundantei si inconsistentei datelorIndependenta datelor caracteristica fundamentală a SGBD-urilor favorizeazădezvoltarea de aplicatii mai flexibile si mai usor de modificat 55 Definirea permiselor asupra relaţiilor icircn SQL2 ExempleIdee nam ce o avut in vedere pp )56 Definirea sinonimilor icircn SQL2 ExempleSinonimele pot fi utilizate in interogari sau procedure stocate in loc de numele originale ale obiectelor din 23 sau 4 parti De exemplu este nevoie de executat o interogare catre un obiect de stocat pe alt serverAtunci pt a accesa acest obiect e necesar sa se scrie numele lui implicitNume_serverNume_baza_de_dateNume_schemaNume_ObiectUtilizind un sinonim creat in schema curentaobiectul poate fi accesat doar specificind sinonimul respectivUn sinonim apartine unei scheme ca si alte obiecte ale schemeiNumele unui sinonim trebuie sa fie unicUn sinonim poate fi creat pt urmat obiecte din baza de datetabelele definite de utilizator(inclusive tabelele temporare atit locale cit sh globale)viziuniprocedure stocatefunctiiUn sinonim nu poate fi obiect de baza pt alt sinonimUn sinonim nu poate referi o functie de agregare definite de utilizatorDoar numele unui sinonim executa legatura intre acesta si obiectul de bazaExistenta si tipul de verificarea drepturilor de acces catre obiectul de baza sunt aminate pina la rulareprin urmare acelasi nume ca si obiectul de baza originalDe exemplu se considera un sinonim cumparaturi care face referire la dbovinzari in baza de date calculatoareDaca tabelul dbovinzari este sters si inlocuit cu o viziune numita dbovinzariatunci cumparaturi acum se refera la viziunea dbovinzariUrmatorul exemplu creaza un sinonim notebook pt obiectul d ebazalaptop_ri din vaza de calculatoare apoi interogheaza baza de dateutilizind sinonimul creatUse calculatoareGoCreate Synonym notebook for calculatoaredbolaptop_uriGoSelect from notebookGo 57 Blocarea relaţiilor şi gestiunea tranzacţiilor icircn SQL2Sistemul blocheaza icircn mod automat o linie icircn numele unei tranzactii pentru a icircmpiedica alte tranzactii sa blocheze aceeasi linie Aceasta blocare icircmpiedica manipularea simultana a unei Unii de catre doua tranzactii distincte

11

prevenindu-se astfel interferenta distructiva a instructiunilor DDL si DML contradictorii De exemplu Oracfe icircmpiedica distrugerea unui tabel daca exista tranzactii nefinalizate icircn care este implicat tabelul respectiv Aceste blocari ale datelor sunt anulate automat atunci cacircnd tranzactia este finalizata Blocarea implicita a datelor decurge automat pentru toate instructiunile SQL astfel icircncacirct nu este necesar ca utilizatorii bazei de date sa blocheze liniile icircn mod explicit icircn mod prestabilit Oracle blocheaza resursele la nivelul cel mai scazut posibilTranzactiile sunt grupuri logice de instructiuni SQL Fiecare tranzactie se icircncheie fie cu o finalizare fie cu o derulare icircnapoi Finalizarile duc la salvarea permanenta a modificarilor bazei de date efectuate de catre tranzactie Derularile icircnapoi anuleaza toate modificarile bazei de date efectuate de catre tranzactieGestionarea tranzactiilor asigura concurenta si coerenta datelor pentru toti utilizatorii bazei de date icircn lipsa gestiunii tranzactiilor calitatea si precizia datelor ar fi compromise iar baza de date ar deveni aproape de neutilizat58 Definirea viziunilor icircn SQL2 ExempleO viziune (VIEW) este un table virtual al carui continut este definit de o interogareO V poate fi create din unul sau mai multe tabele ale bdViziunile sunt folosite pentru a concentrasimplifica si personalize fiecare patrundere a utilizatorului in bdEle pot fi folosite si ca mecanisme de securitate permitind utilizatorului sa acceseze date prin intermediului viziunilorfara a acorda utilizatorilor permisiuni sa acceseze tabelele de baza direztViziunile pot fi deasemenea folosite atunci cind sunt copiate date din SQL server si pentru partajarea datelor2 tipuri de creare a viziunilorFolosind instructiunea Create view a limbajului transact_sqlFolosind VEW Designer al componentei SQ server management studioPrincipii de creare a viziunilorO V poate fi create numai in baza de data in uzTotusi tabelele si viziunile ce se refera la o viziune noua pot exista in alte baze de date sau cjiar pe alte serverePot fi construite viziuni asupra altor viziuni sau procedure ce se refera la viziuniAsupra V nu pot fi construiti indecsi sau definiti indecsi full-textO V fie exemplu2 in bd calculatoare poate fi definite folosind limb SQL de exempluUse calculatoareGoIf object_ID(lsquoexemplul2rsquorsquoVrsquo) is not null drop view exemplul2GoCreate View exemplul2 As select Model from produse 59Definirea indecşilor icircn SQL2 ExempleUn index este un obiect al schemei bazei de date care facilitează accesarea rapidă şi univocă a datelor Icircn anumite condiţii viteza de execuţie a cererilor După ce indexul a fost creat utilizatorului nu i se mai cere nici o operaţie directă asupra lui el va fi folosit şi icircntreţinut automat de către SGBDSintaxa pentru crearea unui index este următoareaCREATE INDEX nume_index ON nume_tabela (nume_coloana1 [ nume coloana2 hellip])Exemplu crearea unui index după coloana număr factură icircn tabela facturiCREATE INDEX nr_factura_index ON facturi (nrfact)Pentru tabele mici folosirea indecşilor nu aduce icircmbunătăţiri de performanţă Se folosesc atunci cacircnd coloanele după care se creează indecşii conţin o diversitate mare de informaţii sau multe valori NULL Indecşii optimizează interogările atunci cacircnd acestea returnează o cantitate mică de date Indecşii cresc viteza de regăsire a datelor dar icircncetinesc actualizarea datelor datorită faptului că sistemul trebuie să actualizeze şi fişierele index Icircn general este foarte util să se creeze indecşi după cacircmpuri care se folosesc icircn operaţii de joinŞtergerea unui index se face cu comanda DROP INDEXDROP INDEX nume_index [ON nume_tabela] 60Definirea constracircngerilor şi aserţiunilor icircn SQL2 ExemplePt formularea unor restrictii mai generale decit cele corespunzind tabelelor si coloanelor SQL da posibilitatea folosirii unei intructiuni specifice cu sintaxaCreate assertion ltconstraint_namegt check(search_condition)Spre deosebire de restrictiile de tabele si de coloane asertiunile nu sint associate cu nici o definitie de tabela particularaAsertiunile sunt folosite de obicei pt a formula restrictii asupra mai multor tabeleRemarcam ca pt a satisface restrictiaconditia din clauza check trebuie sa furmizeze o valoare fie truefie unknownVederile si Aseriunile se folosesc intransportul schemelor conceputale din modelul EEA si din UML in modelul relationalExemplu de adaugare de constringere

12

Alter Table task Constraint Foreign Key (newtaskind)references newtask(newtaskid)O constringere se poate adauga si la crearea tabeluluiConstringeri de integritateCheile primarevalori implicite pt cimpuriDaca integritatea bazei de date nu este asigurataadica nu sint respectate constringerile de integritatea se spune ca bd este incosistenta

13

Page 5: Baze de Date Examen.[Conspecte.md]

tupluri din r si s daca tr Є r si ts Є s atunci concatenatia trts este un tuplu icircn r s pentru orice pereche de tupluri tr si ts din r si s respectiv exista un tuplu t icircn r s icircncacirct t[Ai]=tr[Ai] 1leilen si t[Bj]=ts[Bj 1lejlem

Produsul cartezian nu este o operatie comutativa Icircn schimb se bucura de proprietatea asociativa23 Operaţiile complement şi complement activ Proprietăţi Exemple

Fie relatia r(R) Notam prin tup(R) multimea tuturor tuplurilor asupra atributelor schemei R si a domeniilor lor Complementul relatiei r notat cu ־r este ־r = tup(R) r

Fie r o relatie asupra schemei R AЄR si adom(A) = a|aЄdom(A) amp Ǝ tЄrampt[A] =a Multimea de valori adom(A) se numeste domeniul activ al atributului A Notam cu atup(R) multimea tuturor tuplurilor asupra atributelor schemei R si a domeniilor lor active Atunci complementul activ notat cu ~r este ~r = atup(R) r

Complemen tul activ

Complemen tul

24

Operaţia selecţia

Proprietăţi ExempleSelectia este o operatie unara Pentru selectarea unor

tupluri dintr-o relatie e necesara specificarea conditiilor de selectare Icircn rezultat se obtine o relatie ce e o submultime de

tupluri a relatiei initiale Selectia relatiei r (R) conform formulei F unde F e aplicabila relatiei r(R) e o submultime a relatiei r(R)

notata cu σF(r) ce consta din toate tuplurile tЄr ce satisfac F adica σF(r) = t | t Є r amp F(t)

Selectia s=σ((A = B) amp (D5))(r)25 Operaţia proiecţia Proprietăţi ExempleProiectia e o operatie unara

Proiectia relatiei r asupra multimii de atribute X notata cu πx(r) e o relatie cu schema X ce consta din X-valorile tuturor tuplurilor din r πx(r) = t X| t Є r

Proiectia s = πAC(r)26 Operaţia joncţiune Proprietăţi Exemple

5

Fie doua relatii r(R) si s(S) Jonctiunea relatiilor r si s (notatia uzuala r|x|s) este o relatie cu schema RS Tuplul t apartine relatiei rezultat daca exista tuplurile tr si ts icircn r si s respectiv si satisfac t[R]=tr si t[S]=ts adica r |x| s = t | t[R] = tramp t[S] = tsamp trЄ r amp ts Є s Deci fiecare tuplu din relatia rezultat este o concatenare a unui tuplu din r cu un tuplu din s ce au (RcapS)-valori egale Atributele cu acelasi nume icircn schema relatiei rezultat se iau o singura data Operatia jonctiunea nu este comutativa Icircn schimb ea se bucura de proprietatea asociativa

Jonctiunea q = r |x| s27 Interacţiunea dintre operaţiile joncţiunea şi proiecţia Exemple

Fie relatiile r(A B) si s(B C) Notam q=r|x|s si r1 = πAB(q) Icircn urma operatiilor observam ca tuplurile relatiei r1 constituie o submultime proprie a relatiei r

28 Operaţia θ-joncţiune Proprietăţi Exemple

θ-jonctiunea relatiilor r(R) si s(S) notata cu r|x|AθBs este o multime de tupluri concatenate de forma trts unde tr Є r ts Є s si tr(A) θ ts(B) adicar|x|AθBs = trts | tr Є r amp ts Є s amp tr(A) θ ts(B)

Operatia θ-jonctiunea poate fi exprimata prin operatiile produsul cartezian si selectia Rezultatul unei θ-jonctiuni este acelasi cu rezultatul unei selectii operate asupra unui produs cartezian adica r|x|AθBs = σAθB(r s)

29 Operaţia semijoncţiunea Proprietăţi Exemple

Semijonctiunea e o operatie binara Ea consta icircn construirea unei relatii din cele doua si e formata numai din tuplurile unei singure relatii ce participa la jonctiune

Fie doua relatii r(R) si s(S) Semijonctiunea relatiei r si s notata cur|x s este o multime de tupluri determinata de expresia r|x s = πR(r|x|s)

6

Semijonctiunea q =r|xs30 Operaţia divizarea Proprietăţi Exemple

Fie r(R) si s(S) doua relaii si S R Notam Q = R S Diviziunea relatiei r la relatia s notata cu rs este o relatie definita pe multimea de atribute Q rs = t| pentru tsЄ s(S) Ǝ tr Є r(R) ce satisface tr[Q]=t si tr[S]=ts

Operatia diviziunea poate fi conceputa drept operatie inversa produsului cartezian Fie q=rs Atunci qs produce o relatie cu schema R si relatia q va contine numarul maximal de tupluri ce ar satisface expresia qs r

Diviziunea q= rs

31Componentele limbajului SQL2

Componentele pe care le cuprinde limbajul SQL sunt

urmatoarele 1Componenta de descriere a datelor relationale (limbajul de descriere a datelor-LLD) 2Componenta de manipulare a datelor relationale(libajul de manipulare a datelro-LMD) Ambele fiind absolut necesare in gestiunea BD Pe linga aceste componente principale standartul SQL2 mai prevede si alte compon ale limbaj 3Controlul tranzactiilor contine comenzi pt specific tranzactiilor 4Controlul securitatii si refacerea datelor contine comenzi de administrare a bazei de date pt definirea utilizatorilor si a dreputului de acces la tabele32Tipuri de date numerice icircn SQL2 şi Transact SQL ExempleTipul numeric include numere intregi e diferite dimensiuni(integer sau int reprez pe 4 octetismallint pe 2 octeti)numere reale reprez in virdula flotanta cu diferite precizii(float-4 octetireal si double[precision]-8octeti)si numere zecimale reprezentate cu precizia dorita(tip numerci sau decimal)Formatul de repcentare a numer zecimale cu precizia dorita estenumerci[(ps)] sau decimal[(ps)]) unde p(precizia) este nr otal de cifre afisate iar s (scara) nr de cifre dupa punctul zecimalExemplu decimal(41) va fi 11162 si nu 162 sau 11162133 Tipuri de date secvenţe de caractere icircn SQL2 şi Transact SQL ExempleTipul sir de caractere permite definirea sirurilor de caractere de lungime fixa(char(n) sau character (n))precum si a sirurilor de caractere cu lungime variabila (varchar(n))Ambele tipuri pot reprezenta siruri de maximum n caractere cu diferenta ca pt siruri de lungime mai mica decit n la tipul char(n) se completeaza sirul cu spatii albe pina la n caractere in timp ce la tipul varchar(n) se memoreaza numai atitea caractere cit are sirul datText-pt secvente de caractere ASCI cu lungime variabila mai mare de 8Ko(de exemplu documente Html) dar care nu depaseste valoarea (2147483647 caractere) 34 Tipuri de date temporale icircn SQL2 şi Transact SQL Exemple (Date speciale)Cursor-contine referinta la un cursorHierarchyd-pt crearea tabelelor cu structura ierarhicaTable- tip special de date utilizat pt stocarea unui rezultat pt tratarea ulterioarapt pastrarea unei multimi de rind obtinute in calitate de rezultat al unei fti cu valoarea unui tabelTimestamp-identificator unic pt toata baza de date se util in calitate de mecanism de marcare a versiunii unui rind din tabelXML-tip de date ce pastreaza date XML35 Definirea schemei unei relaţii icircn SQL2 Exemple

7

Schema unei relaţii este numele relaţiei urmată de lista de atribute pentru fiecare atribut precizacircndu-se domeniul asociat Astfel pentru o relaţie R cu atributele A1 A2 An şi domeniile D1 D2 Dmcu m le n schema relaţiei R poate fi prezentată astfel

R(A1 D1 A2D2 An Dm) sauR

A1D1 AnDm

Fig 34 Reprezentarea schemei relaţiei R36 Constracircngeri de comportament icircn SQL2 ExempleSpecifica caracteristicile independente ale unui atribut(sau domeniu)Ele exprima semanticca elementelor domeniilorDe exemplu valorile atributului Nota_med trebuie sa fie mai mare decit zerodar nu poate depasi zeceSau nici o persoana de virsta 25 ani nu poate avea o vechime in munca de 37 de aniDeci conform acestei restrictii valorile atributului trebuie sa se incadreze intre anumite limite37 Constracircngeri structurale icircn SQL2 Exemple Constringeri de dependenteSpecifica legatura dintre atribute(sau domenii)Aici putem identifica asa numita dependenta de multime de atributeAngajat Salariu Departament Manager In relatia personalun manager este in acelasi timp un angajatdar nu orice angajat este managerDeci avem ca dom(manager) Ui dom (angajat)38 Modificarea şi suprimarea schemei relaţionale icircn SQL239Cele mai simple interogari (numai cu proiectiaInterogare (querry) este o operatie prin care se obtin datele dorite dintro baza de date selectate conform unui anumit criteriu(conditie)Proiectia ndashoperatie relationala unara prin care se selecteaza o submultime de atribute ale relatieiNumele si reducerile clientilor din OrheiProiectia Cl_numereducere (Selectia (clienti) cloras=rdquoorheirdquo40Interogări cu criterii de selecţie icircn SQL2 Exemple

Interogarile cu criterii de selectie in SQL sunt utilizate pu selectarea datelor din tabeleAre urmatoarea sintaxa de bazaSELECT[TIP]ltlista de cimpurigtFROMltlista de tabelegt[CONDITIE]Lista de cimpuri-lista de cimpuri ce trebuie selectateLista de tabele-lista de tabele de unde datele trebuie sa fie selectateCONDITIE-defineste un filtru pu interogare folosind unele clause ca WHEREEX ModelPret FROM pc_uri WHERE Cd=rsquo40xrsquo ORDER BY Pret

41Interogări cu funcţii de agregare icircn SQL2 Exemple Fde agreg -prelucreaza multimi de inregistrari(linii) ale tabelului si returneaza un anumit rezultatMajoritatea acestor functiide obiceiactioneaza asupra tuturor liniilor tabeluluiEle accepat parametriiAll-face ca functia sa considere toate inregistrarile inclusiv cele duplicateDISTINCT-face ca funct Sa considere numai inregistrarile ce nu poseda o valoare duplicataAVG-returneaza media aritmetica a lui xCOUNT-returneaza nr de linii a interogariiMAXMIN-returneaza valoarea maxima sau minima a exprMAX sau MIN ([DISTINCT|ALL)] expr)EX SELECT AVG(Viteza) As Viteza_medie MAX(Viteza) As Viteza_maxima MIN(Viteza) As Viteza_minina42Interogări cu agregarea tuplurilor icircn SQL2 Exemple43 Interogări de actualizare (inserare şi ştergere) a datelor icircn SQL2 ExempleLimbajul TRANSACT-SQL propune 3 instructiuni ce corespund celor 3 operatii de actualizare a bazei de dateinserarea(instructiunea INSERT)-pentru inserarea datelorsuprimarea(instructiunea DELETE)-pu stergerea datelor si modificarea(instructiunea UPDATE)-pu modificarea datelorToate optiunile se asupra tabelelor (fizice sau virtuale) si actualizearea se petrece la nivel de linie de tabelEXCREATE TABLE clienti(Cod_client INTTara CHAR(2)DEFAULT(sbquoMDrsquo)Nume CHAR(20))

8

INSERT clienti (Cod_clientTaraNume)VALUES(12340rsquoMDrsquorsquoIon Petrachersquo) INSERT clienti DEFAULT VALUES INSERT clienti VALUES (12560rsquoFRrsquorsquoJack Londonrsquo)44 Interogări de actualizare (modificare) a datelor icircn SQL2 ExempleUPDATE-operatia de modificare a continutului unuia sau a mai multor cimpuri ale tuplurilorSintaxa instructiunii UPDATE lttabelgt SETltcoloanagt=ltvaloare nouagt WHERE ltconditiegt In caz cind nici o conditie nu e impusa toate cimpurile tuturor inregistrarilor vor fi alterate de valorile noiEX UPDATE functionari SET Sector=rsquoAdministratiersquo WHERE Sector=rsquoFinantersquo SELECT FROM functionari ORDER BY Sector45 Interogări cu uniuni icircn SQL2 ExempleOperatia UNION-permite fuzionarea a doua selectii pentru a obtine o multime de tupluri egala cu uniunea acestor doua selectiiEX SELECT produseModel Pret FROM produsepc_uri WHERE produseModel=pc_uriModel AND Producator=rsquoBrsquo UNION SELECT produseModelPret FROM produselaptop_uri WHERE produseModel=laptop_uriModel AND Producator=rsquoBrsquo UNION SELECT produseModelPret FROM produseimprimante WHERE produseModel=imprimanteModel AND Producator=rsquoBrsquo46Interogări cu intersecţii icircn SQL2 ExempleInterogarile cu operatiile uniuneintersectia si diferenta sunt foarte aproape de interogarile scrise in algebra relationalaSe formuleaza doua interogari care construiesc relatii cu scheme compatibile adica cu acelasi nr de atribute si de acelasi tip si aceste cereri sunt legate cu cuvintele cheie UNIONINTERSECT sau EXCEPT Pentru a gasi valori ce coincid in doua sau mai multe tabele se poate utiliza instructiunea INTERSECTEX SELECT Model FROM produse INTERSECT SELECT Model FROM pc_uriDaca INTERSECT este substituit cu EXCEPT se obtine un rezultatintr-un felinvers celui precedentadica se vor afisa modelele de produse din primul tabel care nu sunt in al doilea tabel

47Interogări cu diferenţe icircn SQL2 ExempleInterogarile cu operatiile uniuneintersectia si diferenta sunt foarte aproape de interogarile scrise in algebra relationalaSe formuleaza doua interogari care construiesc relatii cu scheme compatibile adica cu acelasi nr de atribute si de acelasi tip si aceste cereri sunt legate cu cuvintele cheie UNIONINTERSECT sau EXCEPTEX SELECT Model FROM produse EXCEPT SELECT Model FROM pc_uri48Interogări cu joncţiuni icircn SQL2 ExempleDeseoripu a obtine un rezultat complet este necesara selectarea datelor din doua sau mai multe tabeleTabelele din baza de date sunt legate intre ele prin cheiEste importantindeosebirolul cheii primare care face ca coloanele ce o constituie sa posede o valoare unica pu fiece rindDe exe necesar sa se afiseze producatorul si viteza laptopurilorAtributul viteza se afla in tabelul laptop_uriInformatia referitoare la producatori se afla in tabelul produserezultatul este ordonat dupa cimpul ProducatorEX SELECT ProducatorViteza FROM produselaptop_uri WHERE produseModel=laptop_uriModel ORDER BY ProducatorCU Jonctiune internaEX SELECT ProducatorViteza FROM produse INNER JOIN laptop_uri ON produseModel=laptop_uriModel ORDER BY Producator49Interogări imbricate cu ALL icircn SQL2 ExempleSubinterogare este o cerere care restituie un singur atribut Interogarea utilizată in comparaŃie se defineste in interiorul predicatului din clauza where si se numeste interogare imbricatăAll - face ca functia sa considere toate inregistrarile inclusive cele duplicateCuvantul cheie all specifică faptul că linia este validă dacă valoarea atributului se află in

9

relatie cu toate valorile returnate de interogareSă se găsească departamentele in care nu lucrează nici un angajat cu numele Ionescuselect Deptfrom Departamentwhere Dept ltgt all (select Deptfrom Angajatiwhere Nume = rsquoIonescursquo)Această interogare poate fi exprimată cu ajutorul operatorului diferenŃăselect Deptfrom Departamentexceptselect Deptfrom Angajatiwhere Nume = rsquoIonescursquo 50 Interogări imbricate cu ANY icircn SQL2 Exemple Cuvantul cheie any specifică faptul că linia este validă dacă valoarea atributului se află inrelatie cu cel putin o valoare returnată de interogarea imbricatăSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Exemplu Să se găsească angajaŃii ce lucrează intr-un departament din Iasiselect Nume Prenumefrom Angajatiwhere Dept = any (select Deptfrom Departamentwhere Oras = rsquoIasirsquo)ObservaŃie Această interogare poate fi rezolvată prin realizarea unei joncŃiuni intre celedouă tabele 51 Interogări imbricate cu EXISTS icircn SQL2 Exemple Acest operator acceptă ca parametru o interogare imbricată sireturnează valoarea adevărat doar dacă interogarea nu produce un rezultat vidSă se găsească persoanele care au acelasi nume si prenume dar coduri diferiteselect from Persoana Pwhere exists (select from Persoana P1where P1Nume = PNume andP1Prenume = PPrenume andP1Cod ltgt PCod ) 52 Interogări imbricate cu IN icircn SQL2 ExempleSQL pune la dispozitie doi operatori pentru a reprezenta apartenenta la o multime sinegatia sa in si not in Acesti operatori sunt echivalenti cu = any respectiv ltgt allselect Deptfrom Angajatiwhere Salariu = any sau in (select max(Salariu)from Angajati) 53 Interogări imbricate cu bdquo=rdquo icircn SQL2 ExempleSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Să se găsească departamentele in care lucrează angajatii ce castigă cel mai mare salariuselect Deptfrom Angajatiwhere Salariu = any (select max(Salariu)from Angajati)sauselect Deptfrom Angajatiwhere Salariu gt= all (select Salariufrom Angajati)ObservatiiDesi cele două interogări sunt echivalente este indicată folosirea functiilor

10

agregat deoarece sunt mai concludente si se execută mai eficientIn cazul primei interogări nu există nici o diferenŃa dacă in loc de operatorul anyse foloseste operatorul all (deoarece interogarea internă are ca rezultat o singurălinie) 54 Definirea utilizatorilor şi accesului la baza de date icircn SQL2 ExempleIn functie de modul de exploatare a bazei de date utilizatorii se pot impărti inadministratorul bazei de date (DBA) ndash persoana responsabilă de proiectarea controlul siadministrarea bazei de dateprogramatorii de aplicatii ndash definesc si creează programele ce accesează baza de dateutilizatorii obisnuiti ndash cei care utilizează efectiv baza de date- utilizatori finali ndash utilizează tranzactii (spre exemplu programe ce realizeazăactivităŃi frecvente si predefinite- utilizatori ocazionali ndash capabili să utilizeze limbaje interactive pentru a accesabaza de date formuland interogări (sau actualizări) de diferite tipuriPentru a putea lucra cu baze de date trebuie sa avem instalat un server de baze de dateTrebuie sa realizam conexiunea sh sa accesam in sfirsit datele 55Definirea permiselor asupra relaţiilor icircn SQL2 ExempleSGBD-urile permit datelor să fie considerate drept resurse comune ale organizatieidisponibile tuturor membrilor autorizatiBaza de date furnizează un model standardizat si precis al acelei părti a lumii reale careprezintă interes pentru organizatie model folosit in aplicaŃiile existente si care cuextensiile necesare poate fi folosit in aplicatii viitoareSGBD-urile oferă posibilitatea unui control centralizat al datelorPartajarea bazelor de date permite reducerea redundantei si inconsistentei datelorIndependenta datelor caracteristica fundamentală a SGBD-urilor favorizeazădezvoltarea de aplicatii mai flexibile si mai usor de modificat 55 Definirea permiselor asupra relaţiilor icircn SQL2 ExempleIdee nam ce o avut in vedere pp )56 Definirea sinonimilor icircn SQL2 ExempleSinonimele pot fi utilizate in interogari sau procedure stocate in loc de numele originale ale obiectelor din 23 sau 4 parti De exemplu este nevoie de executat o interogare catre un obiect de stocat pe alt serverAtunci pt a accesa acest obiect e necesar sa se scrie numele lui implicitNume_serverNume_baza_de_dateNume_schemaNume_ObiectUtilizind un sinonim creat in schema curentaobiectul poate fi accesat doar specificind sinonimul respectivUn sinonim apartine unei scheme ca si alte obiecte ale schemeiNumele unui sinonim trebuie sa fie unicUn sinonim poate fi creat pt urmat obiecte din baza de datetabelele definite de utilizator(inclusive tabelele temporare atit locale cit sh globale)viziuniprocedure stocatefunctiiUn sinonim nu poate fi obiect de baza pt alt sinonimUn sinonim nu poate referi o functie de agregare definite de utilizatorDoar numele unui sinonim executa legatura intre acesta si obiectul de bazaExistenta si tipul de verificarea drepturilor de acces catre obiectul de baza sunt aminate pina la rulareprin urmare acelasi nume ca si obiectul de baza originalDe exemplu se considera un sinonim cumparaturi care face referire la dbovinzari in baza de date calculatoareDaca tabelul dbovinzari este sters si inlocuit cu o viziune numita dbovinzariatunci cumparaturi acum se refera la viziunea dbovinzariUrmatorul exemplu creaza un sinonim notebook pt obiectul d ebazalaptop_ri din vaza de calculatoare apoi interogheaza baza de dateutilizind sinonimul creatUse calculatoareGoCreate Synonym notebook for calculatoaredbolaptop_uriGoSelect from notebookGo 57 Blocarea relaţiilor şi gestiunea tranzacţiilor icircn SQL2Sistemul blocheaza icircn mod automat o linie icircn numele unei tranzactii pentru a icircmpiedica alte tranzactii sa blocheze aceeasi linie Aceasta blocare icircmpiedica manipularea simultana a unei Unii de catre doua tranzactii distincte

11

prevenindu-se astfel interferenta distructiva a instructiunilor DDL si DML contradictorii De exemplu Oracfe icircmpiedica distrugerea unui tabel daca exista tranzactii nefinalizate icircn care este implicat tabelul respectiv Aceste blocari ale datelor sunt anulate automat atunci cacircnd tranzactia este finalizata Blocarea implicita a datelor decurge automat pentru toate instructiunile SQL astfel icircncacirct nu este necesar ca utilizatorii bazei de date sa blocheze liniile icircn mod explicit icircn mod prestabilit Oracle blocheaza resursele la nivelul cel mai scazut posibilTranzactiile sunt grupuri logice de instructiuni SQL Fiecare tranzactie se icircncheie fie cu o finalizare fie cu o derulare icircnapoi Finalizarile duc la salvarea permanenta a modificarilor bazei de date efectuate de catre tranzactie Derularile icircnapoi anuleaza toate modificarile bazei de date efectuate de catre tranzactieGestionarea tranzactiilor asigura concurenta si coerenta datelor pentru toti utilizatorii bazei de date icircn lipsa gestiunii tranzactiilor calitatea si precizia datelor ar fi compromise iar baza de date ar deveni aproape de neutilizat58 Definirea viziunilor icircn SQL2 ExempleO viziune (VIEW) este un table virtual al carui continut este definit de o interogareO V poate fi create din unul sau mai multe tabele ale bdViziunile sunt folosite pentru a concentrasimplifica si personalize fiecare patrundere a utilizatorului in bdEle pot fi folosite si ca mecanisme de securitate permitind utilizatorului sa acceseze date prin intermediului viziunilorfara a acorda utilizatorilor permisiuni sa acceseze tabelele de baza direztViziunile pot fi deasemenea folosite atunci cind sunt copiate date din SQL server si pentru partajarea datelor2 tipuri de creare a viziunilorFolosind instructiunea Create view a limbajului transact_sqlFolosind VEW Designer al componentei SQ server management studioPrincipii de creare a viziunilorO V poate fi create numai in baza de data in uzTotusi tabelele si viziunile ce se refera la o viziune noua pot exista in alte baze de date sau cjiar pe alte serverePot fi construite viziuni asupra altor viziuni sau procedure ce se refera la viziuniAsupra V nu pot fi construiti indecsi sau definiti indecsi full-textO V fie exemplu2 in bd calculatoare poate fi definite folosind limb SQL de exempluUse calculatoareGoIf object_ID(lsquoexemplul2rsquorsquoVrsquo) is not null drop view exemplul2GoCreate View exemplul2 As select Model from produse 59Definirea indecşilor icircn SQL2 ExempleUn index este un obiect al schemei bazei de date care facilitează accesarea rapidă şi univocă a datelor Icircn anumite condiţii viteza de execuţie a cererilor După ce indexul a fost creat utilizatorului nu i se mai cere nici o operaţie directă asupra lui el va fi folosit şi icircntreţinut automat de către SGBDSintaxa pentru crearea unui index este următoareaCREATE INDEX nume_index ON nume_tabela (nume_coloana1 [ nume coloana2 hellip])Exemplu crearea unui index după coloana număr factură icircn tabela facturiCREATE INDEX nr_factura_index ON facturi (nrfact)Pentru tabele mici folosirea indecşilor nu aduce icircmbunătăţiri de performanţă Se folosesc atunci cacircnd coloanele după care se creează indecşii conţin o diversitate mare de informaţii sau multe valori NULL Indecşii optimizează interogările atunci cacircnd acestea returnează o cantitate mică de date Indecşii cresc viteza de regăsire a datelor dar icircncetinesc actualizarea datelor datorită faptului că sistemul trebuie să actualizeze şi fişierele index Icircn general este foarte util să se creeze indecşi după cacircmpuri care se folosesc icircn operaţii de joinŞtergerea unui index se face cu comanda DROP INDEXDROP INDEX nume_index [ON nume_tabela] 60Definirea constracircngerilor şi aserţiunilor icircn SQL2 ExemplePt formularea unor restrictii mai generale decit cele corespunzind tabelelor si coloanelor SQL da posibilitatea folosirii unei intructiuni specifice cu sintaxaCreate assertion ltconstraint_namegt check(search_condition)Spre deosebire de restrictiile de tabele si de coloane asertiunile nu sint associate cu nici o definitie de tabela particularaAsertiunile sunt folosite de obicei pt a formula restrictii asupra mai multor tabeleRemarcam ca pt a satisface restrictiaconditia din clauza check trebuie sa furmizeze o valoare fie truefie unknownVederile si Aseriunile se folosesc intransportul schemelor conceputale din modelul EEA si din UML in modelul relationalExemplu de adaugare de constringere

12

Alter Table task Constraint Foreign Key (newtaskind)references newtask(newtaskid)O constringere se poate adauga si la crearea tabeluluiConstringeri de integritateCheile primarevalori implicite pt cimpuriDaca integritatea bazei de date nu este asigurataadica nu sint respectate constringerile de integritatea se spune ca bd este incosistenta

13

Page 6: Baze de Date Examen.[Conspecte.md]

Fie doua relatii r(R) si s(S) Jonctiunea relatiilor r si s (notatia uzuala r|x|s) este o relatie cu schema RS Tuplul t apartine relatiei rezultat daca exista tuplurile tr si ts icircn r si s respectiv si satisfac t[R]=tr si t[S]=ts adica r |x| s = t | t[R] = tramp t[S] = tsamp trЄ r amp ts Є s Deci fiecare tuplu din relatia rezultat este o concatenare a unui tuplu din r cu un tuplu din s ce au (RcapS)-valori egale Atributele cu acelasi nume icircn schema relatiei rezultat se iau o singura data Operatia jonctiunea nu este comutativa Icircn schimb ea se bucura de proprietatea asociativa

Jonctiunea q = r |x| s27 Interacţiunea dintre operaţiile joncţiunea şi proiecţia Exemple

Fie relatiile r(A B) si s(B C) Notam q=r|x|s si r1 = πAB(q) Icircn urma operatiilor observam ca tuplurile relatiei r1 constituie o submultime proprie a relatiei r

28 Operaţia θ-joncţiune Proprietăţi Exemple

θ-jonctiunea relatiilor r(R) si s(S) notata cu r|x|AθBs este o multime de tupluri concatenate de forma trts unde tr Є r ts Є s si tr(A) θ ts(B) adicar|x|AθBs = trts | tr Є r amp ts Є s amp tr(A) θ ts(B)

Operatia θ-jonctiunea poate fi exprimata prin operatiile produsul cartezian si selectia Rezultatul unei θ-jonctiuni este acelasi cu rezultatul unei selectii operate asupra unui produs cartezian adica r|x|AθBs = σAθB(r s)

29 Operaţia semijoncţiunea Proprietăţi Exemple

Semijonctiunea e o operatie binara Ea consta icircn construirea unei relatii din cele doua si e formata numai din tuplurile unei singure relatii ce participa la jonctiune

Fie doua relatii r(R) si s(S) Semijonctiunea relatiei r si s notata cur|x s este o multime de tupluri determinata de expresia r|x s = πR(r|x|s)

6

Semijonctiunea q =r|xs30 Operaţia divizarea Proprietăţi Exemple

Fie r(R) si s(S) doua relaii si S R Notam Q = R S Diviziunea relatiei r la relatia s notata cu rs este o relatie definita pe multimea de atribute Q rs = t| pentru tsЄ s(S) Ǝ tr Є r(R) ce satisface tr[Q]=t si tr[S]=ts

Operatia diviziunea poate fi conceputa drept operatie inversa produsului cartezian Fie q=rs Atunci qs produce o relatie cu schema R si relatia q va contine numarul maximal de tupluri ce ar satisface expresia qs r

Diviziunea q= rs

31Componentele limbajului SQL2

Componentele pe care le cuprinde limbajul SQL sunt

urmatoarele 1Componenta de descriere a datelor relationale (limbajul de descriere a datelor-LLD) 2Componenta de manipulare a datelor relationale(libajul de manipulare a datelro-LMD) Ambele fiind absolut necesare in gestiunea BD Pe linga aceste componente principale standartul SQL2 mai prevede si alte compon ale limbaj 3Controlul tranzactiilor contine comenzi pt specific tranzactiilor 4Controlul securitatii si refacerea datelor contine comenzi de administrare a bazei de date pt definirea utilizatorilor si a dreputului de acces la tabele32Tipuri de date numerice icircn SQL2 şi Transact SQL ExempleTipul numeric include numere intregi e diferite dimensiuni(integer sau int reprez pe 4 octetismallint pe 2 octeti)numere reale reprez in virdula flotanta cu diferite precizii(float-4 octetireal si double[precision]-8octeti)si numere zecimale reprezentate cu precizia dorita(tip numerci sau decimal)Formatul de repcentare a numer zecimale cu precizia dorita estenumerci[(ps)] sau decimal[(ps)]) unde p(precizia) este nr otal de cifre afisate iar s (scara) nr de cifre dupa punctul zecimalExemplu decimal(41) va fi 11162 si nu 162 sau 11162133 Tipuri de date secvenţe de caractere icircn SQL2 şi Transact SQL ExempleTipul sir de caractere permite definirea sirurilor de caractere de lungime fixa(char(n) sau character (n))precum si a sirurilor de caractere cu lungime variabila (varchar(n))Ambele tipuri pot reprezenta siruri de maximum n caractere cu diferenta ca pt siruri de lungime mai mica decit n la tipul char(n) se completeaza sirul cu spatii albe pina la n caractere in timp ce la tipul varchar(n) se memoreaza numai atitea caractere cit are sirul datText-pt secvente de caractere ASCI cu lungime variabila mai mare de 8Ko(de exemplu documente Html) dar care nu depaseste valoarea (2147483647 caractere) 34 Tipuri de date temporale icircn SQL2 şi Transact SQL Exemple (Date speciale)Cursor-contine referinta la un cursorHierarchyd-pt crearea tabelelor cu structura ierarhicaTable- tip special de date utilizat pt stocarea unui rezultat pt tratarea ulterioarapt pastrarea unei multimi de rind obtinute in calitate de rezultat al unei fti cu valoarea unui tabelTimestamp-identificator unic pt toata baza de date se util in calitate de mecanism de marcare a versiunii unui rind din tabelXML-tip de date ce pastreaza date XML35 Definirea schemei unei relaţii icircn SQL2 Exemple

7

Schema unei relaţii este numele relaţiei urmată de lista de atribute pentru fiecare atribut precizacircndu-se domeniul asociat Astfel pentru o relaţie R cu atributele A1 A2 An şi domeniile D1 D2 Dmcu m le n schema relaţiei R poate fi prezentată astfel

R(A1 D1 A2D2 An Dm) sauR

A1D1 AnDm

Fig 34 Reprezentarea schemei relaţiei R36 Constracircngeri de comportament icircn SQL2 ExempleSpecifica caracteristicile independente ale unui atribut(sau domeniu)Ele exprima semanticca elementelor domeniilorDe exemplu valorile atributului Nota_med trebuie sa fie mai mare decit zerodar nu poate depasi zeceSau nici o persoana de virsta 25 ani nu poate avea o vechime in munca de 37 de aniDeci conform acestei restrictii valorile atributului trebuie sa se incadreze intre anumite limite37 Constracircngeri structurale icircn SQL2 Exemple Constringeri de dependenteSpecifica legatura dintre atribute(sau domenii)Aici putem identifica asa numita dependenta de multime de atributeAngajat Salariu Departament Manager In relatia personalun manager este in acelasi timp un angajatdar nu orice angajat este managerDeci avem ca dom(manager) Ui dom (angajat)38 Modificarea şi suprimarea schemei relaţionale icircn SQL239Cele mai simple interogari (numai cu proiectiaInterogare (querry) este o operatie prin care se obtin datele dorite dintro baza de date selectate conform unui anumit criteriu(conditie)Proiectia ndashoperatie relationala unara prin care se selecteaza o submultime de atribute ale relatieiNumele si reducerile clientilor din OrheiProiectia Cl_numereducere (Selectia (clienti) cloras=rdquoorheirdquo40Interogări cu criterii de selecţie icircn SQL2 Exemple

Interogarile cu criterii de selectie in SQL sunt utilizate pu selectarea datelor din tabeleAre urmatoarea sintaxa de bazaSELECT[TIP]ltlista de cimpurigtFROMltlista de tabelegt[CONDITIE]Lista de cimpuri-lista de cimpuri ce trebuie selectateLista de tabele-lista de tabele de unde datele trebuie sa fie selectateCONDITIE-defineste un filtru pu interogare folosind unele clause ca WHEREEX ModelPret FROM pc_uri WHERE Cd=rsquo40xrsquo ORDER BY Pret

41Interogări cu funcţii de agregare icircn SQL2 Exemple Fde agreg -prelucreaza multimi de inregistrari(linii) ale tabelului si returneaza un anumit rezultatMajoritatea acestor functiide obiceiactioneaza asupra tuturor liniilor tabeluluiEle accepat parametriiAll-face ca functia sa considere toate inregistrarile inclusiv cele duplicateDISTINCT-face ca funct Sa considere numai inregistrarile ce nu poseda o valoare duplicataAVG-returneaza media aritmetica a lui xCOUNT-returneaza nr de linii a interogariiMAXMIN-returneaza valoarea maxima sau minima a exprMAX sau MIN ([DISTINCT|ALL)] expr)EX SELECT AVG(Viteza) As Viteza_medie MAX(Viteza) As Viteza_maxima MIN(Viteza) As Viteza_minina42Interogări cu agregarea tuplurilor icircn SQL2 Exemple43 Interogări de actualizare (inserare şi ştergere) a datelor icircn SQL2 ExempleLimbajul TRANSACT-SQL propune 3 instructiuni ce corespund celor 3 operatii de actualizare a bazei de dateinserarea(instructiunea INSERT)-pentru inserarea datelorsuprimarea(instructiunea DELETE)-pu stergerea datelor si modificarea(instructiunea UPDATE)-pu modificarea datelorToate optiunile se asupra tabelelor (fizice sau virtuale) si actualizearea se petrece la nivel de linie de tabelEXCREATE TABLE clienti(Cod_client INTTara CHAR(2)DEFAULT(sbquoMDrsquo)Nume CHAR(20))

8

INSERT clienti (Cod_clientTaraNume)VALUES(12340rsquoMDrsquorsquoIon Petrachersquo) INSERT clienti DEFAULT VALUES INSERT clienti VALUES (12560rsquoFRrsquorsquoJack Londonrsquo)44 Interogări de actualizare (modificare) a datelor icircn SQL2 ExempleUPDATE-operatia de modificare a continutului unuia sau a mai multor cimpuri ale tuplurilorSintaxa instructiunii UPDATE lttabelgt SETltcoloanagt=ltvaloare nouagt WHERE ltconditiegt In caz cind nici o conditie nu e impusa toate cimpurile tuturor inregistrarilor vor fi alterate de valorile noiEX UPDATE functionari SET Sector=rsquoAdministratiersquo WHERE Sector=rsquoFinantersquo SELECT FROM functionari ORDER BY Sector45 Interogări cu uniuni icircn SQL2 ExempleOperatia UNION-permite fuzionarea a doua selectii pentru a obtine o multime de tupluri egala cu uniunea acestor doua selectiiEX SELECT produseModel Pret FROM produsepc_uri WHERE produseModel=pc_uriModel AND Producator=rsquoBrsquo UNION SELECT produseModelPret FROM produselaptop_uri WHERE produseModel=laptop_uriModel AND Producator=rsquoBrsquo UNION SELECT produseModelPret FROM produseimprimante WHERE produseModel=imprimanteModel AND Producator=rsquoBrsquo46Interogări cu intersecţii icircn SQL2 ExempleInterogarile cu operatiile uniuneintersectia si diferenta sunt foarte aproape de interogarile scrise in algebra relationalaSe formuleaza doua interogari care construiesc relatii cu scheme compatibile adica cu acelasi nr de atribute si de acelasi tip si aceste cereri sunt legate cu cuvintele cheie UNIONINTERSECT sau EXCEPT Pentru a gasi valori ce coincid in doua sau mai multe tabele se poate utiliza instructiunea INTERSECTEX SELECT Model FROM produse INTERSECT SELECT Model FROM pc_uriDaca INTERSECT este substituit cu EXCEPT se obtine un rezultatintr-un felinvers celui precedentadica se vor afisa modelele de produse din primul tabel care nu sunt in al doilea tabel

47Interogări cu diferenţe icircn SQL2 ExempleInterogarile cu operatiile uniuneintersectia si diferenta sunt foarte aproape de interogarile scrise in algebra relationalaSe formuleaza doua interogari care construiesc relatii cu scheme compatibile adica cu acelasi nr de atribute si de acelasi tip si aceste cereri sunt legate cu cuvintele cheie UNIONINTERSECT sau EXCEPTEX SELECT Model FROM produse EXCEPT SELECT Model FROM pc_uri48Interogări cu joncţiuni icircn SQL2 ExempleDeseoripu a obtine un rezultat complet este necesara selectarea datelor din doua sau mai multe tabeleTabelele din baza de date sunt legate intre ele prin cheiEste importantindeosebirolul cheii primare care face ca coloanele ce o constituie sa posede o valoare unica pu fiece rindDe exe necesar sa se afiseze producatorul si viteza laptopurilorAtributul viteza se afla in tabelul laptop_uriInformatia referitoare la producatori se afla in tabelul produserezultatul este ordonat dupa cimpul ProducatorEX SELECT ProducatorViteza FROM produselaptop_uri WHERE produseModel=laptop_uriModel ORDER BY ProducatorCU Jonctiune internaEX SELECT ProducatorViteza FROM produse INNER JOIN laptop_uri ON produseModel=laptop_uriModel ORDER BY Producator49Interogări imbricate cu ALL icircn SQL2 ExempleSubinterogare este o cerere care restituie un singur atribut Interogarea utilizată in comparaŃie se defineste in interiorul predicatului din clauza where si se numeste interogare imbricatăAll - face ca functia sa considere toate inregistrarile inclusive cele duplicateCuvantul cheie all specifică faptul că linia este validă dacă valoarea atributului se află in

9

relatie cu toate valorile returnate de interogareSă se găsească departamentele in care nu lucrează nici un angajat cu numele Ionescuselect Deptfrom Departamentwhere Dept ltgt all (select Deptfrom Angajatiwhere Nume = rsquoIonescursquo)Această interogare poate fi exprimată cu ajutorul operatorului diferenŃăselect Deptfrom Departamentexceptselect Deptfrom Angajatiwhere Nume = rsquoIonescursquo 50 Interogări imbricate cu ANY icircn SQL2 Exemple Cuvantul cheie any specifică faptul că linia este validă dacă valoarea atributului se află inrelatie cu cel putin o valoare returnată de interogarea imbricatăSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Exemplu Să se găsească angajaŃii ce lucrează intr-un departament din Iasiselect Nume Prenumefrom Angajatiwhere Dept = any (select Deptfrom Departamentwhere Oras = rsquoIasirsquo)ObservaŃie Această interogare poate fi rezolvată prin realizarea unei joncŃiuni intre celedouă tabele 51 Interogări imbricate cu EXISTS icircn SQL2 Exemple Acest operator acceptă ca parametru o interogare imbricată sireturnează valoarea adevărat doar dacă interogarea nu produce un rezultat vidSă se găsească persoanele care au acelasi nume si prenume dar coduri diferiteselect from Persoana Pwhere exists (select from Persoana P1where P1Nume = PNume andP1Prenume = PPrenume andP1Cod ltgt PCod ) 52 Interogări imbricate cu IN icircn SQL2 ExempleSQL pune la dispozitie doi operatori pentru a reprezenta apartenenta la o multime sinegatia sa in si not in Acesti operatori sunt echivalenti cu = any respectiv ltgt allselect Deptfrom Angajatiwhere Salariu = any sau in (select max(Salariu)from Angajati) 53 Interogări imbricate cu bdquo=rdquo icircn SQL2 ExempleSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Să se găsească departamentele in care lucrează angajatii ce castigă cel mai mare salariuselect Deptfrom Angajatiwhere Salariu = any (select max(Salariu)from Angajati)sauselect Deptfrom Angajatiwhere Salariu gt= all (select Salariufrom Angajati)ObservatiiDesi cele două interogări sunt echivalente este indicată folosirea functiilor

10

agregat deoarece sunt mai concludente si se execută mai eficientIn cazul primei interogări nu există nici o diferenŃa dacă in loc de operatorul anyse foloseste operatorul all (deoarece interogarea internă are ca rezultat o singurălinie) 54 Definirea utilizatorilor şi accesului la baza de date icircn SQL2 ExempleIn functie de modul de exploatare a bazei de date utilizatorii se pot impărti inadministratorul bazei de date (DBA) ndash persoana responsabilă de proiectarea controlul siadministrarea bazei de dateprogramatorii de aplicatii ndash definesc si creează programele ce accesează baza de dateutilizatorii obisnuiti ndash cei care utilizează efectiv baza de date- utilizatori finali ndash utilizează tranzactii (spre exemplu programe ce realizeazăactivităŃi frecvente si predefinite- utilizatori ocazionali ndash capabili să utilizeze limbaje interactive pentru a accesabaza de date formuland interogări (sau actualizări) de diferite tipuriPentru a putea lucra cu baze de date trebuie sa avem instalat un server de baze de dateTrebuie sa realizam conexiunea sh sa accesam in sfirsit datele 55Definirea permiselor asupra relaţiilor icircn SQL2 ExempleSGBD-urile permit datelor să fie considerate drept resurse comune ale organizatieidisponibile tuturor membrilor autorizatiBaza de date furnizează un model standardizat si precis al acelei părti a lumii reale careprezintă interes pentru organizatie model folosit in aplicaŃiile existente si care cuextensiile necesare poate fi folosit in aplicatii viitoareSGBD-urile oferă posibilitatea unui control centralizat al datelorPartajarea bazelor de date permite reducerea redundantei si inconsistentei datelorIndependenta datelor caracteristica fundamentală a SGBD-urilor favorizeazădezvoltarea de aplicatii mai flexibile si mai usor de modificat 55 Definirea permiselor asupra relaţiilor icircn SQL2 ExempleIdee nam ce o avut in vedere pp )56 Definirea sinonimilor icircn SQL2 ExempleSinonimele pot fi utilizate in interogari sau procedure stocate in loc de numele originale ale obiectelor din 23 sau 4 parti De exemplu este nevoie de executat o interogare catre un obiect de stocat pe alt serverAtunci pt a accesa acest obiect e necesar sa se scrie numele lui implicitNume_serverNume_baza_de_dateNume_schemaNume_ObiectUtilizind un sinonim creat in schema curentaobiectul poate fi accesat doar specificind sinonimul respectivUn sinonim apartine unei scheme ca si alte obiecte ale schemeiNumele unui sinonim trebuie sa fie unicUn sinonim poate fi creat pt urmat obiecte din baza de datetabelele definite de utilizator(inclusive tabelele temporare atit locale cit sh globale)viziuniprocedure stocatefunctiiUn sinonim nu poate fi obiect de baza pt alt sinonimUn sinonim nu poate referi o functie de agregare definite de utilizatorDoar numele unui sinonim executa legatura intre acesta si obiectul de bazaExistenta si tipul de verificarea drepturilor de acces catre obiectul de baza sunt aminate pina la rulareprin urmare acelasi nume ca si obiectul de baza originalDe exemplu se considera un sinonim cumparaturi care face referire la dbovinzari in baza de date calculatoareDaca tabelul dbovinzari este sters si inlocuit cu o viziune numita dbovinzariatunci cumparaturi acum se refera la viziunea dbovinzariUrmatorul exemplu creaza un sinonim notebook pt obiectul d ebazalaptop_ri din vaza de calculatoare apoi interogheaza baza de dateutilizind sinonimul creatUse calculatoareGoCreate Synonym notebook for calculatoaredbolaptop_uriGoSelect from notebookGo 57 Blocarea relaţiilor şi gestiunea tranzacţiilor icircn SQL2Sistemul blocheaza icircn mod automat o linie icircn numele unei tranzactii pentru a icircmpiedica alte tranzactii sa blocheze aceeasi linie Aceasta blocare icircmpiedica manipularea simultana a unei Unii de catre doua tranzactii distincte

11

prevenindu-se astfel interferenta distructiva a instructiunilor DDL si DML contradictorii De exemplu Oracfe icircmpiedica distrugerea unui tabel daca exista tranzactii nefinalizate icircn care este implicat tabelul respectiv Aceste blocari ale datelor sunt anulate automat atunci cacircnd tranzactia este finalizata Blocarea implicita a datelor decurge automat pentru toate instructiunile SQL astfel icircncacirct nu este necesar ca utilizatorii bazei de date sa blocheze liniile icircn mod explicit icircn mod prestabilit Oracle blocheaza resursele la nivelul cel mai scazut posibilTranzactiile sunt grupuri logice de instructiuni SQL Fiecare tranzactie se icircncheie fie cu o finalizare fie cu o derulare icircnapoi Finalizarile duc la salvarea permanenta a modificarilor bazei de date efectuate de catre tranzactie Derularile icircnapoi anuleaza toate modificarile bazei de date efectuate de catre tranzactieGestionarea tranzactiilor asigura concurenta si coerenta datelor pentru toti utilizatorii bazei de date icircn lipsa gestiunii tranzactiilor calitatea si precizia datelor ar fi compromise iar baza de date ar deveni aproape de neutilizat58 Definirea viziunilor icircn SQL2 ExempleO viziune (VIEW) este un table virtual al carui continut este definit de o interogareO V poate fi create din unul sau mai multe tabele ale bdViziunile sunt folosite pentru a concentrasimplifica si personalize fiecare patrundere a utilizatorului in bdEle pot fi folosite si ca mecanisme de securitate permitind utilizatorului sa acceseze date prin intermediului viziunilorfara a acorda utilizatorilor permisiuni sa acceseze tabelele de baza direztViziunile pot fi deasemenea folosite atunci cind sunt copiate date din SQL server si pentru partajarea datelor2 tipuri de creare a viziunilorFolosind instructiunea Create view a limbajului transact_sqlFolosind VEW Designer al componentei SQ server management studioPrincipii de creare a viziunilorO V poate fi create numai in baza de data in uzTotusi tabelele si viziunile ce se refera la o viziune noua pot exista in alte baze de date sau cjiar pe alte serverePot fi construite viziuni asupra altor viziuni sau procedure ce se refera la viziuniAsupra V nu pot fi construiti indecsi sau definiti indecsi full-textO V fie exemplu2 in bd calculatoare poate fi definite folosind limb SQL de exempluUse calculatoareGoIf object_ID(lsquoexemplul2rsquorsquoVrsquo) is not null drop view exemplul2GoCreate View exemplul2 As select Model from produse 59Definirea indecşilor icircn SQL2 ExempleUn index este un obiect al schemei bazei de date care facilitează accesarea rapidă şi univocă a datelor Icircn anumite condiţii viteza de execuţie a cererilor După ce indexul a fost creat utilizatorului nu i se mai cere nici o operaţie directă asupra lui el va fi folosit şi icircntreţinut automat de către SGBDSintaxa pentru crearea unui index este următoareaCREATE INDEX nume_index ON nume_tabela (nume_coloana1 [ nume coloana2 hellip])Exemplu crearea unui index după coloana număr factură icircn tabela facturiCREATE INDEX nr_factura_index ON facturi (nrfact)Pentru tabele mici folosirea indecşilor nu aduce icircmbunătăţiri de performanţă Se folosesc atunci cacircnd coloanele după care se creează indecşii conţin o diversitate mare de informaţii sau multe valori NULL Indecşii optimizează interogările atunci cacircnd acestea returnează o cantitate mică de date Indecşii cresc viteza de regăsire a datelor dar icircncetinesc actualizarea datelor datorită faptului că sistemul trebuie să actualizeze şi fişierele index Icircn general este foarte util să se creeze indecşi după cacircmpuri care se folosesc icircn operaţii de joinŞtergerea unui index se face cu comanda DROP INDEXDROP INDEX nume_index [ON nume_tabela] 60Definirea constracircngerilor şi aserţiunilor icircn SQL2 ExemplePt formularea unor restrictii mai generale decit cele corespunzind tabelelor si coloanelor SQL da posibilitatea folosirii unei intructiuni specifice cu sintaxaCreate assertion ltconstraint_namegt check(search_condition)Spre deosebire de restrictiile de tabele si de coloane asertiunile nu sint associate cu nici o definitie de tabela particularaAsertiunile sunt folosite de obicei pt a formula restrictii asupra mai multor tabeleRemarcam ca pt a satisface restrictiaconditia din clauza check trebuie sa furmizeze o valoare fie truefie unknownVederile si Aseriunile se folosesc intransportul schemelor conceputale din modelul EEA si din UML in modelul relationalExemplu de adaugare de constringere

12

Alter Table task Constraint Foreign Key (newtaskind)references newtask(newtaskid)O constringere se poate adauga si la crearea tabeluluiConstringeri de integritateCheile primarevalori implicite pt cimpuriDaca integritatea bazei de date nu este asigurataadica nu sint respectate constringerile de integritatea se spune ca bd este incosistenta

13

Page 7: Baze de Date Examen.[Conspecte.md]

Semijonctiunea q =r|xs30 Operaţia divizarea Proprietăţi Exemple

Fie r(R) si s(S) doua relaii si S R Notam Q = R S Diviziunea relatiei r la relatia s notata cu rs este o relatie definita pe multimea de atribute Q rs = t| pentru tsЄ s(S) Ǝ tr Є r(R) ce satisface tr[Q]=t si tr[S]=ts

Operatia diviziunea poate fi conceputa drept operatie inversa produsului cartezian Fie q=rs Atunci qs produce o relatie cu schema R si relatia q va contine numarul maximal de tupluri ce ar satisface expresia qs r

Diviziunea q= rs

31Componentele limbajului SQL2

Componentele pe care le cuprinde limbajul SQL sunt

urmatoarele 1Componenta de descriere a datelor relationale (limbajul de descriere a datelor-LLD) 2Componenta de manipulare a datelor relationale(libajul de manipulare a datelro-LMD) Ambele fiind absolut necesare in gestiunea BD Pe linga aceste componente principale standartul SQL2 mai prevede si alte compon ale limbaj 3Controlul tranzactiilor contine comenzi pt specific tranzactiilor 4Controlul securitatii si refacerea datelor contine comenzi de administrare a bazei de date pt definirea utilizatorilor si a dreputului de acces la tabele32Tipuri de date numerice icircn SQL2 şi Transact SQL ExempleTipul numeric include numere intregi e diferite dimensiuni(integer sau int reprez pe 4 octetismallint pe 2 octeti)numere reale reprez in virdula flotanta cu diferite precizii(float-4 octetireal si double[precision]-8octeti)si numere zecimale reprezentate cu precizia dorita(tip numerci sau decimal)Formatul de repcentare a numer zecimale cu precizia dorita estenumerci[(ps)] sau decimal[(ps)]) unde p(precizia) este nr otal de cifre afisate iar s (scara) nr de cifre dupa punctul zecimalExemplu decimal(41) va fi 11162 si nu 162 sau 11162133 Tipuri de date secvenţe de caractere icircn SQL2 şi Transact SQL ExempleTipul sir de caractere permite definirea sirurilor de caractere de lungime fixa(char(n) sau character (n))precum si a sirurilor de caractere cu lungime variabila (varchar(n))Ambele tipuri pot reprezenta siruri de maximum n caractere cu diferenta ca pt siruri de lungime mai mica decit n la tipul char(n) se completeaza sirul cu spatii albe pina la n caractere in timp ce la tipul varchar(n) se memoreaza numai atitea caractere cit are sirul datText-pt secvente de caractere ASCI cu lungime variabila mai mare de 8Ko(de exemplu documente Html) dar care nu depaseste valoarea (2147483647 caractere) 34 Tipuri de date temporale icircn SQL2 şi Transact SQL Exemple (Date speciale)Cursor-contine referinta la un cursorHierarchyd-pt crearea tabelelor cu structura ierarhicaTable- tip special de date utilizat pt stocarea unui rezultat pt tratarea ulterioarapt pastrarea unei multimi de rind obtinute in calitate de rezultat al unei fti cu valoarea unui tabelTimestamp-identificator unic pt toata baza de date se util in calitate de mecanism de marcare a versiunii unui rind din tabelXML-tip de date ce pastreaza date XML35 Definirea schemei unei relaţii icircn SQL2 Exemple

7

Schema unei relaţii este numele relaţiei urmată de lista de atribute pentru fiecare atribut precizacircndu-se domeniul asociat Astfel pentru o relaţie R cu atributele A1 A2 An şi domeniile D1 D2 Dmcu m le n schema relaţiei R poate fi prezentată astfel

R(A1 D1 A2D2 An Dm) sauR

A1D1 AnDm

Fig 34 Reprezentarea schemei relaţiei R36 Constracircngeri de comportament icircn SQL2 ExempleSpecifica caracteristicile independente ale unui atribut(sau domeniu)Ele exprima semanticca elementelor domeniilorDe exemplu valorile atributului Nota_med trebuie sa fie mai mare decit zerodar nu poate depasi zeceSau nici o persoana de virsta 25 ani nu poate avea o vechime in munca de 37 de aniDeci conform acestei restrictii valorile atributului trebuie sa se incadreze intre anumite limite37 Constracircngeri structurale icircn SQL2 Exemple Constringeri de dependenteSpecifica legatura dintre atribute(sau domenii)Aici putem identifica asa numita dependenta de multime de atributeAngajat Salariu Departament Manager In relatia personalun manager este in acelasi timp un angajatdar nu orice angajat este managerDeci avem ca dom(manager) Ui dom (angajat)38 Modificarea şi suprimarea schemei relaţionale icircn SQL239Cele mai simple interogari (numai cu proiectiaInterogare (querry) este o operatie prin care se obtin datele dorite dintro baza de date selectate conform unui anumit criteriu(conditie)Proiectia ndashoperatie relationala unara prin care se selecteaza o submultime de atribute ale relatieiNumele si reducerile clientilor din OrheiProiectia Cl_numereducere (Selectia (clienti) cloras=rdquoorheirdquo40Interogări cu criterii de selecţie icircn SQL2 Exemple

Interogarile cu criterii de selectie in SQL sunt utilizate pu selectarea datelor din tabeleAre urmatoarea sintaxa de bazaSELECT[TIP]ltlista de cimpurigtFROMltlista de tabelegt[CONDITIE]Lista de cimpuri-lista de cimpuri ce trebuie selectateLista de tabele-lista de tabele de unde datele trebuie sa fie selectateCONDITIE-defineste un filtru pu interogare folosind unele clause ca WHEREEX ModelPret FROM pc_uri WHERE Cd=rsquo40xrsquo ORDER BY Pret

41Interogări cu funcţii de agregare icircn SQL2 Exemple Fde agreg -prelucreaza multimi de inregistrari(linii) ale tabelului si returneaza un anumit rezultatMajoritatea acestor functiide obiceiactioneaza asupra tuturor liniilor tabeluluiEle accepat parametriiAll-face ca functia sa considere toate inregistrarile inclusiv cele duplicateDISTINCT-face ca funct Sa considere numai inregistrarile ce nu poseda o valoare duplicataAVG-returneaza media aritmetica a lui xCOUNT-returneaza nr de linii a interogariiMAXMIN-returneaza valoarea maxima sau minima a exprMAX sau MIN ([DISTINCT|ALL)] expr)EX SELECT AVG(Viteza) As Viteza_medie MAX(Viteza) As Viteza_maxima MIN(Viteza) As Viteza_minina42Interogări cu agregarea tuplurilor icircn SQL2 Exemple43 Interogări de actualizare (inserare şi ştergere) a datelor icircn SQL2 ExempleLimbajul TRANSACT-SQL propune 3 instructiuni ce corespund celor 3 operatii de actualizare a bazei de dateinserarea(instructiunea INSERT)-pentru inserarea datelorsuprimarea(instructiunea DELETE)-pu stergerea datelor si modificarea(instructiunea UPDATE)-pu modificarea datelorToate optiunile se asupra tabelelor (fizice sau virtuale) si actualizearea se petrece la nivel de linie de tabelEXCREATE TABLE clienti(Cod_client INTTara CHAR(2)DEFAULT(sbquoMDrsquo)Nume CHAR(20))

8

INSERT clienti (Cod_clientTaraNume)VALUES(12340rsquoMDrsquorsquoIon Petrachersquo) INSERT clienti DEFAULT VALUES INSERT clienti VALUES (12560rsquoFRrsquorsquoJack Londonrsquo)44 Interogări de actualizare (modificare) a datelor icircn SQL2 ExempleUPDATE-operatia de modificare a continutului unuia sau a mai multor cimpuri ale tuplurilorSintaxa instructiunii UPDATE lttabelgt SETltcoloanagt=ltvaloare nouagt WHERE ltconditiegt In caz cind nici o conditie nu e impusa toate cimpurile tuturor inregistrarilor vor fi alterate de valorile noiEX UPDATE functionari SET Sector=rsquoAdministratiersquo WHERE Sector=rsquoFinantersquo SELECT FROM functionari ORDER BY Sector45 Interogări cu uniuni icircn SQL2 ExempleOperatia UNION-permite fuzionarea a doua selectii pentru a obtine o multime de tupluri egala cu uniunea acestor doua selectiiEX SELECT produseModel Pret FROM produsepc_uri WHERE produseModel=pc_uriModel AND Producator=rsquoBrsquo UNION SELECT produseModelPret FROM produselaptop_uri WHERE produseModel=laptop_uriModel AND Producator=rsquoBrsquo UNION SELECT produseModelPret FROM produseimprimante WHERE produseModel=imprimanteModel AND Producator=rsquoBrsquo46Interogări cu intersecţii icircn SQL2 ExempleInterogarile cu operatiile uniuneintersectia si diferenta sunt foarte aproape de interogarile scrise in algebra relationalaSe formuleaza doua interogari care construiesc relatii cu scheme compatibile adica cu acelasi nr de atribute si de acelasi tip si aceste cereri sunt legate cu cuvintele cheie UNIONINTERSECT sau EXCEPT Pentru a gasi valori ce coincid in doua sau mai multe tabele se poate utiliza instructiunea INTERSECTEX SELECT Model FROM produse INTERSECT SELECT Model FROM pc_uriDaca INTERSECT este substituit cu EXCEPT se obtine un rezultatintr-un felinvers celui precedentadica se vor afisa modelele de produse din primul tabel care nu sunt in al doilea tabel

47Interogări cu diferenţe icircn SQL2 ExempleInterogarile cu operatiile uniuneintersectia si diferenta sunt foarte aproape de interogarile scrise in algebra relationalaSe formuleaza doua interogari care construiesc relatii cu scheme compatibile adica cu acelasi nr de atribute si de acelasi tip si aceste cereri sunt legate cu cuvintele cheie UNIONINTERSECT sau EXCEPTEX SELECT Model FROM produse EXCEPT SELECT Model FROM pc_uri48Interogări cu joncţiuni icircn SQL2 ExempleDeseoripu a obtine un rezultat complet este necesara selectarea datelor din doua sau mai multe tabeleTabelele din baza de date sunt legate intre ele prin cheiEste importantindeosebirolul cheii primare care face ca coloanele ce o constituie sa posede o valoare unica pu fiece rindDe exe necesar sa se afiseze producatorul si viteza laptopurilorAtributul viteza se afla in tabelul laptop_uriInformatia referitoare la producatori se afla in tabelul produserezultatul este ordonat dupa cimpul ProducatorEX SELECT ProducatorViteza FROM produselaptop_uri WHERE produseModel=laptop_uriModel ORDER BY ProducatorCU Jonctiune internaEX SELECT ProducatorViteza FROM produse INNER JOIN laptop_uri ON produseModel=laptop_uriModel ORDER BY Producator49Interogări imbricate cu ALL icircn SQL2 ExempleSubinterogare este o cerere care restituie un singur atribut Interogarea utilizată in comparaŃie se defineste in interiorul predicatului din clauza where si se numeste interogare imbricatăAll - face ca functia sa considere toate inregistrarile inclusive cele duplicateCuvantul cheie all specifică faptul că linia este validă dacă valoarea atributului se află in

9

relatie cu toate valorile returnate de interogareSă se găsească departamentele in care nu lucrează nici un angajat cu numele Ionescuselect Deptfrom Departamentwhere Dept ltgt all (select Deptfrom Angajatiwhere Nume = rsquoIonescursquo)Această interogare poate fi exprimată cu ajutorul operatorului diferenŃăselect Deptfrom Departamentexceptselect Deptfrom Angajatiwhere Nume = rsquoIonescursquo 50 Interogări imbricate cu ANY icircn SQL2 Exemple Cuvantul cheie any specifică faptul că linia este validă dacă valoarea atributului se află inrelatie cu cel putin o valoare returnată de interogarea imbricatăSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Exemplu Să se găsească angajaŃii ce lucrează intr-un departament din Iasiselect Nume Prenumefrom Angajatiwhere Dept = any (select Deptfrom Departamentwhere Oras = rsquoIasirsquo)ObservaŃie Această interogare poate fi rezolvată prin realizarea unei joncŃiuni intre celedouă tabele 51 Interogări imbricate cu EXISTS icircn SQL2 Exemple Acest operator acceptă ca parametru o interogare imbricată sireturnează valoarea adevărat doar dacă interogarea nu produce un rezultat vidSă se găsească persoanele care au acelasi nume si prenume dar coduri diferiteselect from Persoana Pwhere exists (select from Persoana P1where P1Nume = PNume andP1Prenume = PPrenume andP1Cod ltgt PCod ) 52 Interogări imbricate cu IN icircn SQL2 ExempleSQL pune la dispozitie doi operatori pentru a reprezenta apartenenta la o multime sinegatia sa in si not in Acesti operatori sunt echivalenti cu = any respectiv ltgt allselect Deptfrom Angajatiwhere Salariu = any sau in (select max(Salariu)from Angajati) 53 Interogări imbricate cu bdquo=rdquo icircn SQL2 ExempleSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Să se găsească departamentele in care lucrează angajatii ce castigă cel mai mare salariuselect Deptfrom Angajatiwhere Salariu = any (select max(Salariu)from Angajati)sauselect Deptfrom Angajatiwhere Salariu gt= all (select Salariufrom Angajati)ObservatiiDesi cele două interogări sunt echivalente este indicată folosirea functiilor

10

agregat deoarece sunt mai concludente si se execută mai eficientIn cazul primei interogări nu există nici o diferenŃa dacă in loc de operatorul anyse foloseste operatorul all (deoarece interogarea internă are ca rezultat o singurălinie) 54 Definirea utilizatorilor şi accesului la baza de date icircn SQL2 ExempleIn functie de modul de exploatare a bazei de date utilizatorii se pot impărti inadministratorul bazei de date (DBA) ndash persoana responsabilă de proiectarea controlul siadministrarea bazei de dateprogramatorii de aplicatii ndash definesc si creează programele ce accesează baza de dateutilizatorii obisnuiti ndash cei care utilizează efectiv baza de date- utilizatori finali ndash utilizează tranzactii (spre exemplu programe ce realizeazăactivităŃi frecvente si predefinite- utilizatori ocazionali ndash capabili să utilizeze limbaje interactive pentru a accesabaza de date formuland interogări (sau actualizări) de diferite tipuriPentru a putea lucra cu baze de date trebuie sa avem instalat un server de baze de dateTrebuie sa realizam conexiunea sh sa accesam in sfirsit datele 55Definirea permiselor asupra relaţiilor icircn SQL2 ExempleSGBD-urile permit datelor să fie considerate drept resurse comune ale organizatieidisponibile tuturor membrilor autorizatiBaza de date furnizează un model standardizat si precis al acelei părti a lumii reale careprezintă interes pentru organizatie model folosit in aplicaŃiile existente si care cuextensiile necesare poate fi folosit in aplicatii viitoareSGBD-urile oferă posibilitatea unui control centralizat al datelorPartajarea bazelor de date permite reducerea redundantei si inconsistentei datelorIndependenta datelor caracteristica fundamentală a SGBD-urilor favorizeazădezvoltarea de aplicatii mai flexibile si mai usor de modificat 55 Definirea permiselor asupra relaţiilor icircn SQL2 ExempleIdee nam ce o avut in vedere pp )56 Definirea sinonimilor icircn SQL2 ExempleSinonimele pot fi utilizate in interogari sau procedure stocate in loc de numele originale ale obiectelor din 23 sau 4 parti De exemplu este nevoie de executat o interogare catre un obiect de stocat pe alt serverAtunci pt a accesa acest obiect e necesar sa se scrie numele lui implicitNume_serverNume_baza_de_dateNume_schemaNume_ObiectUtilizind un sinonim creat in schema curentaobiectul poate fi accesat doar specificind sinonimul respectivUn sinonim apartine unei scheme ca si alte obiecte ale schemeiNumele unui sinonim trebuie sa fie unicUn sinonim poate fi creat pt urmat obiecte din baza de datetabelele definite de utilizator(inclusive tabelele temporare atit locale cit sh globale)viziuniprocedure stocatefunctiiUn sinonim nu poate fi obiect de baza pt alt sinonimUn sinonim nu poate referi o functie de agregare definite de utilizatorDoar numele unui sinonim executa legatura intre acesta si obiectul de bazaExistenta si tipul de verificarea drepturilor de acces catre obiectul de baza sunt aminate pina la rulareprin urmare acelasi nume ca si obiectul de baza originalDe exemplu se considera un sinonim cumparaturi care face referire la dbovinzari in baza de date calculatoareDaca tabelul dbovinzari este sters si inlocuit cu o viziune numita dbovinzariatunci cumparaturi acum se refera la viziunea dbovinzariUrmatorul exemplu creaza un sinonim notebook pt obiectul d ebazalaptop_ri din vaza de calculatoare apoi interogheaza baza de dateutilizind sinonimul creatUse calculatoareGoCreate Synonym notebook for calculatoaredbolaptop_uriGoSelect from notebookGo 57 Blocarea relaţiilor şi gestiunea tranzacţiilor icircn SQL2Sistemul blocheaza icircn mod automat o linie icircn numele unei tranzactii pentru a icircmpiedica alte tranzactii sa blocheze aceeasi linie Aceasta blocare icircmpiedica manipularea simultana a unei Unii de catre doua tranzactii distincte

11

prevenindu-se astfel interferenta distructiva a instructiunilor DDL si DML contradictorii De exemplu Oracfe icircmpiedica distrugerea unui tabel daca exista tranzactii nefinalizate icircn care este implicat tabelul respectiv Aceste blocari ale datelor sunt anulate automat atunci cacircnd tranzactia este finalizata Blocarea implicita a datelor decurge automat pentru toate instructiunile SQL astfel icircncacirct nu este necesar ca utilizatorii bazei de date sa blocheze liniile icircn mod explicit icircn mod prestabilit Oracle blocheaza resursele la nivelul cel mai scazut posibilTranzactiile sunt grupuri logice de instructiuni SQL Fiecare tranzactie se icircncheie fie cu o finalizare fie cu o derulare icircnapoi Finalizarile duc la salvarea permanenta a modificarilor bazei de date efectuate de catre tranzactie Derularile icircnapoi anuleaza toate modificarile bazei de date efectuate de catre tranzactieGestionarea tranzactiilor asigura concurenta si coerenta datelor pentru toti utilizatorii bazei de date icircn lipsa gestiunii tranzactiilor calitatea si precizia datelor ar fi compromise iar baza de date ar deveni aproape de neutilizat58 Definirea viziunilor icircn SQL2 ExempleO viziune (VIEW) este un table virtual al carui continut este definit de o interogareO V poate fi create din unul sau mai multe tabele ale bdViziunile sunt folosite pentru a concentrasimplifica si personalize fiecare patrundere a utilizatorului in bdEle pot fi folosite si ca mecanisme de securitate permitind utilizatorului sa acceseze date prin intermediului viziunilorfara a acorda utilizatorilor permisiuni sa acceseze tabelele de baza direztViziunile pot fi deasemenea folosite atunci cind sunt copiate date din SQL server si pentru partajarea datelor2 tipuri de creare a viziunilorFolosind instructiunea Create view a limbajului transact_sqlFolosind VEW Designer al componentei SQ server management studioPrincipii de creare a viziunilorO V poate fi create numai in baza de data in uzTotusi tabelele si viziunile ce se refera la o viziune noua pot exista in alte baze de date sau cjiar pe alte serverePot fi construite viziuni asupra altor viziuni sau procedure ce se refera la viziuniAsupra V nu pot fi construiti indecsi sau definiti indecsi full-textO V fie exemplu2 in bd calculatoare poate fi definite folosind limb SQL de exempluUse calculatoareGoIf object_ID(lsquoexemplul2rsquorsquoVrsquo) is not null drop view exemplul2GoCreate View exemplul2 As select Model from produse 59Definirea indecşilor icircn SQL2 ExempleUn index este un obiect al schemei bazei de date care facilitează accesarea rapidă şi univocă a datelor Icircn anumite condiţii viteza de execuţie a cererilor După ce indexul a fost creat utilizatorului nu i se mai cere nici o operaţie directă asupra lui el va fi folosit şi icircntreţinut automat de către SGBDSintaxa pentru crearea unui index este următoareaCREATE INDEX nume_index ON nume_tabela (nume_coloana1 [ nume coloana2 hellip])Exemplu crearea unui index după coloana număr factură icircn tabela facturiCREATE INDEX nr_factura_index ON facturi (nrfact)Pentru tabele mici folosirea indecşilor nu aduce icircmbunătăţiri de performanţă Se folosesc atunci cacircnd coloanele după care se creează indecşii conţin o diversitate mare de informaţii sau multe valori NULL Indecşii optimizează interogările atunci cacircnd acestea returnează o cantitate mică de date Indecşii cresc viteza de regăsire a datelor dar icircncetinesc actualizarea datelor datorită faptului că sistemul trebuie să actualizeze şi fişierele index Icircn general este foarte util să se creeze indecşi după cacircmpuri care se folosesc icircn operaţii de joinŞtergerea unui index se face cu comanda DROP INDEXDROP INDEX nume_index [ON nume_tabela] 60Definirea constracircngerilor şi aserţiunilor icircn SQL2 ExemplePt formularea unor restrictii mai generale decit cele corespunzind tabelelor si coloanelor SQL da posibilitatea folosirii unei intructiuni specifice cu sintaxaCreate assertion ltconstraint_namegt check(search_condition)Spre deosebire de restrictiile de tabele si de coloane asertiunile nu sint associate cu nici o definitie de tabela particularaAsertiunile sunt folosite de obicei pt a formula restrictii asupra mai multor tabeleRemarcam ca pt a satisface restrictiaconditia din clauza check trebuie sa furmizeze o valoare fie truefie unknownVederile si Aseriunile se folosesc intransportul schemelor conceputale din modelul EEA si din UML in modelul relationalExemplu de adaugare de constringere

12

Alter Table task Constraint Foreign Key (newtaskind)references newtask(newtaskid)O constringere se poate adauga si la crearea tabeluluiConstringeri de integritateCheile primarevalori implicite pt cimpuriDaca integritatea bazei de date nu este asigurataadica nu sint respectate constringerile de integritatea se spune ca bd este incosistenta

13

Page 8: Baze de Date Examen.[Conspecte.md]

Schema unei relaţii este numele relaţiei urmată de lista de atribute pentru fiecare atribut precizacircndu-se domeniul asociat Astfel pentru o relaţie R cu atributele A1 A2 An şi domeniile D1 D2 Dmcu m le n schema relaţiei R poate fi prezentată astfel

R(A1 D1 A2D2 An Dm) sauR

A1D1 AnDm

Fig 34 Reprezentarea schemei relaţiei R36 Constracircngeri de comportament icircn SQL2 ExempleSpecifica caracteristicile independente ale unui atribut(sau domeniu)Ele exprima semanticca elementelor domeniilorDe exemplu valorile atributului Nota_med trebuie sa fie mai mare decit zerodar nu poate depasi zeceSau nici o persoana de virsta 25 ani nu poate avea o vechime in munca de 37 de aniDeci conform acestei restrictii valorile atributului trebuie sa se incadreze intre anumite limite37 Constracircngeri structurale icircn SQL2 Exemple Constringeri de dependenteSpecifica legatura dintre atribute(sau domenii)Aici putem identifica asa numita dependenta de multime de atributeAngajat Salariu Departament Manager In relatia personalun manager este in acelasi timp un angajatdar nu orice angajat este managerDeci avem ca dom(manager) Ui dom (angajat)38 Modificarea şi suprimarea schemei relaţionale icircn SQL239Cele mai simple interogari (numai cu proiectiaInterogare (querry) este o operatie prin care se obtin datele dorite dintro baza de date selectate conform unui anumit criteriu(conditie)Proiectia ndashoperatie relationala unara prin care se selecteaza o submultime de atribute ale relatieiNumele si reducerile clientilor din OrheiProiectia Cl_numereducere (Selectia (clienti) cloras=rdquoorheirdquo40Interogări cu criterii de selecţie icircn SQL2 Exemple

Interogarile cu criterii de selectie in SQL sunt utilizate pu selectarea datelor din tabeleAre urmatoarea sintaxa de bazaSELECT[TIP]ltlista de cimpurigtFROMltlista de tabelegt[CONDITIE]Lista de cimpuri-lista de cimpuri ce trebuie selectateLista de tabele-lista de tabele de unde datele trebuie sa fie selectateCONDITIE-defineste un filtru pu interogare folosind unele clause ca WHEREEX ModelPret FROM pc_uri WHERE Cd=rsquo40xrsquo ORDER BY Pret

41Interogări cu funcţii de agregare icircn SQL2 Exemple Fde agreg -prelucreaza multimi de inregistrari(linii) ale tabelului si returneaza un anumit rezultatMajoritatea acestor functiide obiceiactioneaza asupra tuturor liniilor tabeluluiEle accepat parametriiAll-face ca functia sa considere toate inregistrarile inclusiv cele duplicateDISTINCT-face ca funct Sa considere numai inregistrarile ce nu poseda o valoare duplicataAVG-returneaza media aritmetica a lui xCOUNT-returneaza nr de linii a interogariiMAXMIN-returneaza valoarea maxima sau minima a exprMAX sau MIN ([DISTINCT|ALL)] expr)EX SELECT AVG(Viteza) As Viteza_medie MAX(Viteza) As Viteza_maxima MIN(Viteza) As Viteza_minina42Interogări cu agregarea tuplurilor icircn SQL2 Exemple43 Interogări de actualizare (inserare şi ştergere) a datelor icircn SQL2 ExempleLimbajul TRANSACT-SQL propune 3 instructiuni ce corespund celor 3 operatii de actualizare a bazei de dateinserarea(instructiunea INSERT)-pentru inserarea datelorsuprimarea(instructiunea DELETE)-pu stergerea datelor si modificarea(instructiunea UPDATE)-pu modificarea datelorToate optiunile se asupra tabelelor (fizice sau virtuale) si actualizearea se petrece la nivel de linie de tabelEXCREATE TABLE clienti(Cod_client INTTara CHAR(2)DEFAULT(sbquoMDrsquo)Nume CHAR(20))

8

INSERT clienti (Cod_clientTaraNume)VALUES(12340rsquoMDrsquorsquoIon Petrachersquo) INSERT clienti DEFAULT VALUES INSERT clienti VALUES (12560rsquoFRrsquorsquoJack Londonrsquo)44 Interogări de actualizare (modificare) a datelor icircn SQL2 ExempleUPDATE-operatia de modificare a continutului unuia sau a mai multor cimpuri ale tuplurilorSintaxa instructiunii UPDATE lttabelgt SETltcoloanagt=ltvaloare nouagt WHERE ltconditiegt In caz cind nici o conditie nu e impusa toate cimpurile tuturor inregistrarilor vor fi alterate de valorile noiEX UPDATE functionari SET Sector=rsquoAdministratiersquo WHERE Sector=rsquoFinantersquo SELECT FROM functionari ORDER BY Sector45 Interogări cu uniuni icircn SQL2 ExempleOperatia UNION-permite fuzionarea a doua selectii pentru a obtine o multime de tupluri egala cu uniunea acestor doua selectiiEX SELECT produseModel Pret FROM produsepc_uri WHERE produseModel=pc_uriModel AND Producator=rsquoBrsquo UNION SELECT produseModelPret FROM produselaptop_uri WHERE produseModel=laptop_uriModel AND Producator=rsquoBrsquo UNION SELECT produseModelPret FROM produseimprimante WHERE produseModel=imprimanteModel AND Producator=rsquoBrsquo46Interogări cu intersecţii icircn SQL2 ExempleInterogarile cu operatiile uniuneintersectia si diferenta sunt foarte aproape de interogarile scrise in algebra relationalaSe formuleaza doua interogari care construiesc relatii cu scheme compatibile adica cu acelasi nr de atribute si de acelasi tip si aceste cereri sunt legate cu cuvintele cheie UNIONINTERSECT sau EXCEPT Pentru a gasi valori ce coincid in doua sau mai multe tabele se poate utiliza instructiunea INTERSECTEX SELECT Model FROM produse INTERSECT SELECT Model FROM pc_uriDaca INTERSECT este substituit cu EXCEPT se obtine un rezultatintr-un felinvers celui precedentadica se vor afisa modelele de produse din primul tabel care nu sunt in al doilea tabel

47Interogări cu diferenţe icircn SQL2 ExempleInterogarile cu operatiile uniuneintersectia si diferenta sunt foarte aproape de interogarile scrise in algebra relationalaSe formuleaza doua interogari care construiesc relatii cu scheme compatibile adica cu acelasi nr de atribute si de acelasi tip si aceste cereri sunt legate cu cuvintele cheie UNIONINTERSECT sau EXCEPTEX SELECT Model FROM produse EXCEPT SELECT Model FROM pc_uri48Interogări cu joncţiuni icircn SQL2 ExempleDeseoripu a obtine un rezultat complet este necesara selectarea datelor din doua sau mai multe tabeleTabelele din baza de date sunt legate intre ele prin cheiEste importantindeosebirolul cheii primare care face ca coloanele ce o constituie sa posede o valoare unica pu fiece rindDe exe necesar sa se afiseze producatorul si viteza laptopurilorAtributul viteza se afla in tabelul laptop_uriInformatia referitoare la producatori se afla in tabelul produserezultatul este ordonat dupa cimpul ProducatorEX SELECT ProducatorViteza FROM produselaptop_uri WHERE produseModel=laptop_uriModel ORDER BY ProducatorCU Jonctiune internaEX SELECT ProducatorViteza FROM produse INNER JOIN laptop_uri ON produseModel=laptop_uriModel ORDER BY Producator49Interogări imbricate cu ALL icircn SQL2 ExempleSubinterogare este o cerere care restituie un singur atribut Interogarea utilizată in comparaŃie se defineste in interiorul predicatului din clauza where si se numeste interogare imbricatăAll - face ca functia sa considere toate inregistrarile inclusive cele duplicateCuvantul cheie all specifică faptul că linia este validă dacă valoarea atributului se află in

9

relatie cu toate valorile returnate de interogareSă se găsească departamentele in care nu lucrează nici un angajat cu numele Ionescuselect Deptfrom Departamentwhere Dept ltgt all (select Deptfrom Angajatiwhere Nume = rsquoIonescursquo)Această interogare poate fi exprimată cu ajutorul operatorului diferenŃăselect Deptfrom Departamentexceptselect Deptfrom Angajatiwhere Nume = rsquoIonescursquo 50 Interogări imbricate cu ANY icircn SQL2 Exemple Cuvantul cheie any specifică faptul că linia este validă dacă valoarea atributului se află inrelatie cu cel putin o valoare returnată de interogarea imbricatăSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Exemplu Să se găsească angajaŃii ce lucrează intr-un departament din Iasiselect Nume Prenumefrom Angajatiwhere Dept = any (select Deptfrom Departamentwhere Oras = rsquoIasirsquo)ObservaŃie Această interogare poate fi rezolvată prin realizarea unei joncŃiuni intre celedouă tabele 51 Interogări imbricate cu EXISTS icircn SQL2 Exemple Acest operator acceptă ca parametru o interogare imbricată sireturnează valoarea adevărat doar dacă interogarea nu produce un rezultat vidSă se găsească persoanele care au acelasi nume si prenume dar coduri diferiteselect from Persoana Pwhere exists (select from Persoana P1where P1Nume = PNume andP1Prenume = PPrenume andP1Cod ltgt PCod ) 52 Interogări imbricate cu IN icircn SQL2 ExempleSQL pune la dispozitie doi operatori pentru a reprezenta apartenenta la o multime sinegatia sa in si not in Acesti operatori sunt echivalenti cu = any respectiv ltgt allselect Deptfrom Angajatiwhere Salariu = any sau in (select max(Salariu)from Angajati) 53 Interogări imbricate cu bdquo=rdquo icircn SQL2 ExempleSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Să se găsească departamentele in care lucrează angajatii ce castigă cel mai mare salariuselect Deptfrom Angajatiwhere Salariu = any (select max(Salariu)from Angajati)sauselect Deptfrom Angajatiwhere Salariu gt= all (select Salariufrom Angajati)ObservatiiDesi cele două interogări sunt echivalente este indicată folosirea functiilor

10

agregat deoarece sunt mai concludente si se execută mai eficientIn cazul primei interogări nu există nici o diferenŃa dacă in loc de operatorul anyse foloseste operatorul all (deoarece interogarea internă are ca rezultat o singurălinie) 54 Definirea utilizatorilor şi accesului la baza de date icircn SQL2 ExempleIn functie de modul de exploatare a bazei de date utilizatorii se pot impărti inadministratorul bazei de date (DBA) ndash persoana responsabilă de proiectarea controlul siadministrarea bazei de dateprogramatorii de aplicatii ndash definesc si creează programele ce accesează baza de dateutilizatorii obisnuiti ndash cei care utilizează efectiv baza de date- utilizatori finali ndash utilizează tranzactii (spre exemplu programe ce realizeazăactivităŃi frecvente si predefinite- utilizatori ocazionali ndash capabili să utilizeze limbaje interactive pentru a accesabaza de date formuland interogări (sau actualizări) de diferite tipuriPentru a putea lucra cu baze de date trebuie sa avem instalat un server de baze de dateTrebuie sa realizam conexiunea sh sa accesam in sfirsit datele 55Definirea permiselor asupra relaţiilor icircn SQL2 ExempleSGBD-urile permit datelor să fie considerate drept resurse comune ale organizatieidisponibile tuturor membrilor autorizatiBaza de date furnizează un model standardizat si precis al acelei părti a lumii reale careprezintă interes pentru organizatie model folosit in aplicaŃiile existente si care cuextensiile necesare poate fi folosit in aplicatii viitoareSGBD-urile oferă posibilitatea unui control centralizat al datelorPartajarea bazelor de date permite reducerea redundantei si inconsistentei datelorIndependenta datelor caracteristica fundamentală a SGBD-urilor favorizeazădezvoltarea de aplicatii mai flexibile si mai usor de modificat 55 Definirea permiselor asupra relaţiilor icircn SQL2 ExempleIdee nam ce o avut in vedere pp )56 Definirea sinonimilor icircn SQL2 ExempleSinonimele pot fi utilizate in interogari sau procedure stocate in loc de numele originale ale obiectelor din 23 sau 4 parti De exemplu este nevoie de executat o interogare catre un obiect de stocat pe alt serverAtunci pt a accesa acest obiect e necesar sa se scrie numele lui implicitNume_serverNume_baza_de_dateNume_schemaNume_ObiectUtilizind un sinonim creat in schema curentaobiectul poate fi accesat doar specificind sinonimul respectivUn sinonim apartine unei scheme ca si alte obiecte ale schemeiNumele unui sinonim trebuie sa fie unicUn sinonim poate fi creat pt urmat obiecte din baza de datetabelele definite de utilizator(inclusive tabelele temporare atit locale cit sh globale)viziuniprocedure stocatefunctiiUn sinonim nu poate fi obiect de baza pt alt sinonimUn sinonim nu poate referi o functie de agregare definite de utilizatorDoar numele unui sinonim executa legatura intre acesta si obiectul de bazaExistenta si tipul de verificarea drepturilor de acces catre obiectul de baza sunt aminate pina la rulareprin urmare acelasi nume ca si obiectul de baza originalDe exemplu se considera un sinonim cumparaturi care face referire la dbovinzari in baza de date calculatoareDaca tabelul dbovinzari este sters si inlocuit cu o viziune numita dbovinzariatunci cumparaturi acum se refera la viziunea dbovinzariUrmatorul exemplu creaza un sinonim notebook pt obiectul d ebazalaptop_ri din vaza de calculatoare apoi interogheaza baza de dateutilizind sinonimul creatUse calculatoareGoCreate Synonym notebook for calculatoaredbolaptop_uriGoSelect from notebookGo 57 Blocarea relaţiilor şi gestiunea tranzacţiilor icircn SQL2Sistemul blocheaza icircn mod automat o linie icircn numele unei tranzactii pentru a icircmpiedica alte tranzactii sa blocheze aceeasi linie Aceasta blocare icircmpiedica manipularea simultana a unei Unii de catre doua tranzactii distincte

11

prevenindu-se astfel interferenta distructiva a instructiunilor DDL si DML contradictorii De exemplu Oracfe icircmpiedica distrugerea unui tabel daca exista tranzactii nefinalizate icircn care este implicat tabelul respectiv Aceste blocari ale datelor sunt anulate automat atunci cacircnd tranzactia este finalizata Blocarea implicita a datelor decurge automat pentru toate instructiunile SQL astfel icircncacirct nu este necesar ca utilizatorii bazei de date sa blocheze liniile icircn mod explicit icircn mod prestabilit Oracle blocheaza resursele la nivelul cel mai scazut posibilTranzactiile sunt grupuri logice de instructiuni SQL Fiecare tranzactie se icircncheie fie cu o finalizare fie cu o derulare icircnapoi Finalizarile duc la salvarea permanenta a modificarilor bazei de date efectuate de catre tranzactie Derularile icircnapoi anuleaza toate modificarile bazei de date efectuate de catre tranzactieGestionarea tranzactiilor asigura concurenta si coerenta datelor pentru toti utilizatorii bazei de date icircn lipsa gestiunii tranzactiilor calitatea si precizia datelor ar fi compromise iar baza de date ar deveni aproape de neutilizat58 Definirea viziunilor icircn SQL2 ExempleO viziune (VIEW) este un table virtual al carui continut este definit de o interogareO V poate fi create din unul sau mai multe tabele ale bdViziunile sunt folosite pentru a concentrasimplifica si personalize fiecare patrundere a utilizatorului in bdEle pot fi folosite si ca mecanisme de securitate permitind utilizatorului sa acceseze date prin intermediului viziunilorfara a acorda utilizatorilor permisiuni sa acceseze tabelele de baza direztViziunile pot fi deasemenea folosite atunci cind sunt copiate date din SQL server si pentru partajarea datelor2 tipuri de creare a viziunilorFolosind instructiunea Create view a limbajului transact_sqlFolosind VEW Designer al componentei SQ server management studioPrincipii de creare a viziunilorO V poate fi create numai in baza de data in uzTotusi tabelele si viziunile ce se refera la o viziune noua pot exista in alte baze de date sau cjiar pe alte serverePot fi construite viziuni asupra altor viziuni sau procedure ce se refera la viziuniAsupra V nu pot fi construiti indecsi sau definiti indecsi full-textO V fie exemplu2 in bd calculatoare poate fi definite folosind limb SQL de exempluUse calculatoareGoIf object_ID(lsquoexemplul2rsquorsquoVrsquo) is not null drop view exemplul2GoCreate View exemplul2 As select Model from produse 59Definirea indecşilor icircn SQL2 ExempleUn index este un obiect al schemei bazei de date care facilitează accesarea rapidă şi univocă a datelor Icircn anumite condiţii viteza de execuţie a cererilor După ce indexul a fost creat utilizatorului nu i se mai cere nici o operaţie directă asupra lui el va fi folosit şi icircntreţinut automat de către SGBDSintaxa pentru crearea unui index este următoareaCREATE INDEX nume_index ON nume_tabela (nume_coloana1 [ nume coloana2 hellip])Exemplu crearea unui index după coloana număr factură icircn tabela facturiCREATE INDEX nr_factura_index ON facturi (nrfact)Pentru tabele mici folosirea indecşilor nu aduce icircmbunătăţiri de performanţă Se folosesc atunci cacircnd coloanele după care se creează indecşii conţin o diversitate mare de informaţii sau multe valori NULL Indecşii optimizează interogările atunci cacircnd acestea returnează o cantitate mică de date Indecşii cresc viteza de regăsire a datelor dar icircncetinesc actualizarea datelor datorită faptului că sistemul trebuie să actualizeze şi fişierele index Icircn general este foarte util să se creeze indecşi după cacircmpuri care se folosesc icircn operaţii de joinŞtergerea unui index se face cu comanda DROP INDEXDROP INDEX nume_index [ON nume_tabela] 60Definirea constracircngerilor şi aserţiunilor icircn SQL2 ExemplePt formularea unor restrictii mai generale decit cele corespunzind tabelelor si coloanelor SQL da posibilitatea folosirii unei intructiuni specifice cu sintaxaCreate assertion ltconstraint_namegt check(search_condition)Spre deosebire de restrictiile de tabele si de coloane asertiunile nu sint associate cu nici o definitie de tabela particularaAsertiunile sunt folosite de obicei pt a formula restrictii asupra mai multor tabeleRemarcam ca pt a satisface restrictiaconditia din clauza check trebuie sa furmizeze o valoare fie truefie unknownVederile si Aseriunile se folosesc intransportul schemelor conceputale din modelul EEA si din UML in modelul relationalExemplu de adaugare de constringere

12

Alter Table task Constraint Foreign Key (newtaskind)references newtask(newtaskid)O constringere se poate adauga si la crearea tabeluluiConstringeri de integritateCheile primarevalori implicite pt cimpuriDaca integritatea bazei de date nu este asigurataadica nu sint respectate constringerile de integritatea se spune ca bd este incosistenta

13

Page 9: Baze de Date Examen.[Conspecte.md]

INSERT clienti (Cod_clientTaraNume)VALUES(12340rsquoMDrsquorsquoIon Petrachersquo) INSERT clienti DEFAULT VALUES INSERT clienti VALUES (12560rsquoFRrsquorsquoJack Londonrsquo)44 Interogări de actualizare (modificare) a datelor icircn SQL2 ExempleUPDATE-operatia de modificare a continutului unuia sau a mai multor cimpuri ale tuplurilorSintaxa instructiunii UPDATE lttabelgt SETltcoloanagt=ltvaloare nouagt WHERE ltconditiegt In caz cind nici o conditie nu e impusa toate cimpurile tuturor inregistrarilor vor fi alterate de valorile noiEX UPDATE functionari SET Sector=rsquoAdministratiersquo WHERE Sector=rsquoFinantersquo SELECT FROM functionari ORDER BY Sector45 Interogări cu uniuni icircn SQL2 ExempleOperatia UNION-permite fuzionarea a doua selectii pentru a obtine o multime de tupluri egala cu uniunea acestor doua selectiiEX SELECT produseModel Pret FROM produsepc_uri WHERE produseModel=pc_uriModel AND Producator=rsquoBrsquo UNION SELECT produseModelPret FROM produselaptop_uri WHERE produseModel=laptop_uriModel AND Producator=rsquoBrsquo UNION SELECT produseModelPret FROM produseimprimante WHERE produseModel=imprimanteModel AND Producator=rsquoBrsquo46Interogări cu intersecţii icircn SQL2 ExempleInterogarile cu operatiile uniuneintersectia si diferenta sunt foarte aproape de interogarile scrise in algebra relationalaSe formuleaza doua interogari care construiesc relatii cu scheme compatibile adica cu acelasi nr de atribute si de acelasi tip si aceste cereri sunt legate cu cuvintele cheie UNIONINTERSECT sau EXCEPT Pentru a gasi valori ce coincid in doua sau mai multe tabele se poate utiliza instructiunea INTERSECTEX SELECT Model FROM produse INTERSECT SELECT Model FROM pc_uriDaca INTERSECT este substituit cu EXCEPT se obtine un rezultatintr-un felinvers celui precedentadica se vor afisa modelele de produse din primul tabel care nu sunt in al doilea tabel

47Interogări cu diferenţe icircn SQL2 ExempleInterogarile cu operatiile uniuneintersectia si diferenta sunt foarte aproape de interogarile scrise in algebra relationalaSe formuleaza doua interogari care construiesc relatii cu scheme compatibile adica cu acelasi nr de atribute si de acelasi tip si aceste cereri sunt legate cu cuvintele cheie UNIONINTERSECT sau EXCEPTEX SELECT Model FROM produse EXCEPT SELECT Model FROM pc_uri48Interogări cu joncţiuni icircn SQL2 ExempleDeseoripu a obtine un rezultat complet este necesara selectarea datelor din doua sau mai multe tabeleTabelele din baza de date sunt legate intre ele prin cheiEste importantindeosebirolul cheii primare care face ca coloanele ce o constituie sa posede o valoare unica pu fiece rindDe exe necesar sa se afiseze producatorul si viteza laptopurilorAtributul viteza se afla in tabelul laptop_uriInformatia referitoare la producatori se afla in tabelul produserezultatul este ordonat dupa cimpul ProducatorEX SELECT ProducatorViteza FROM produselaptop_uri WHERE produseModel=laptop_uriModel ORDER BY ProducatorCU Jonctiune internaEX SELECT ProducatorViteza FROM produse INNER JOIN laptop_uri ON produseModel=laptop_uriModel ORDER BY Producator49Interogări imbricate cu ALL icircn SQL2 ExempleSubinterogare este o cerere care restituie un singur atribut Interogarea utilizată in comparaŃie se defineste in interiorul predicatului din clauza where si se numeste interogare imbricatăAll - face ca functia sa considere toate inregistrarile inclusive cele duplicateCuvantul cheie all specifică faptul că linia este validă dacă valoarea atributului se află in

9

relatie cu toate valorile returnate de interogareSă se găsească departamentele in care nu lucrează nici un angajat cu numele Ionescuselect Deptfrom Departamentwhere Dept ltgt all (select Deptfrom Angajatiwhere Nume = rsquoIonescursquo)Această interogare poate fi exprimată cu ajutorul operatorului diferenŃăselect Deptfrom Departamentexceptselect Deptfrom Angajatiwhere Nume = rsquoIonescursquo 50 Interogări imbricate cu ANY icircn SQL2 Exemple Cuvantul cheie any specifică faptul că linia este validă dacă valoarea atributului se află inrelatie cu cel putin o valoare returnată de interogarea imbricatăSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Exemplu Să se găsească angajaŃii ce lucrează intr-un departament din Iasiselect Nume Prenumefrom Angajatiwhere Dept = any (select Deptfrom Departamentwhere Oras = rsquoIasirsquo)ObservaŃie Această interogare poate fi rezolvată prin realizarea unei joncŃiuni intre celedouă tabele 51 Interogări imbricate cu EXISTS icircn SQL2 Exemple Acest operator acceptă ca parametru o interogare imbricată sireturnează valoarea adevărat doar dacă interogarea nu produce un rezultat vidSă se găsească persoanele care au acelasi nume si prenume dar coduri diferiteselect from Persoana Pwhere exists (select from Persoana P1where P1Nume = PNume andP1Prenume = PPrenume andP1Cod ltgt PCod ) 52 Interogări imbricate cu IN icircn SQL2 ExempleSQL pune la dispozitie doi operatori pentru a reprezenta apartenenta la o multime sinegatia sa in si not in Acesti operatori sunt echivalenti cu = any respectiv ltgt allselect Deptfrom Angajatiwhere Salariu = any sau in (select max(Salariu)from Angajati) 53 Interogări imbricate cu bdquo=rdquo icircn SQL2 ExempleSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Să se găsească departamentele in care lucrează angajatii ce castigă cel mai mare salariuselect Deptfrom Angajatiwhere Salariu = any (select max(Salariu)from Angajati)sauselect Deptfrom Angajatiwhere Salariu gt= all (select Salariufrom Angajati)ObservatiiDesi cele două interogări sunt echivalente este indicată folosirea functiilor

10

agregat deoarece sunt mai concludente si se execută mai eficientIn cazul primei interogări nu există nici o diferenŃa dacă in loc de operatorul anyse foloseste operatorul all (deoarece interogarea internă are ca rezultat o singurălinie) 54 Definirea utilizatorilor şi accesului la baza de date icircn SQL2 ExempleIn functie de modul de exploatare a bazei de date utilizatorii se pot impărti inadministratorul bazei de date (DBA) ndash persoana responsabilă de proiectarea controlul siadministrarea bazei de dateprogramatorii de aplicatii ndash definesc si creează programele ce accesează baza de dateutilizatorii obisnuiti ndash cei care utilizează efectiv baza de date- utilizatori finali ndash utilizează tranzactii (spre exemplu programe ce realizeazăactivităŃi frecvente si predefinite- utilizatori ocazionali ndash capabili să utilizeze limbaje interactive pentru a accesabaza de date formuland interogări (sau actualizări) de diferite tipuriPentru a putea lucra cu baze de date trebuie sa avem instalat un server de baze de dateTrebuie sa realizam conexiunea sh sa accesam in sfirsit datele 55Definirea permiselor asupra relaţiilor icircn SQL2 ExempleSGBD-urile permit datelor să fie considerate drept resurse comune ale organizatieidisponibile tuturor membrilor autorizatiBaza de date furnizează un model standardizat si precis al acelei părti a lumii reale careprezintă interes pentru organizatie model folosit in aplicaŃiile existente si care cuextensiile necesare poate fi folosit in aplicatii viitoareSGBD-urile oferă posibilitatea unui control centralizat al datelorPartajarea bazelor de date permite reducerea redundantei si inconsistentei datelorIndependenta datelor caracteristica fundamentală a SGBD-urilor favorizeazădezvoltarea de aplicatii mai flexibile si mai usor de modificat 55 Definirea permiselor asupra relaţiilor icircn SQL2 ExempleIdee nam ce o avut in vedere pp )56 Definirea sinonimilor icircn SQL2 ExempleSinonimele pot fi utilizate in interogari sau procedure stocate in loc de numele originale ale obiectelor din 23 sau 4 parti De exemplu este nevoie de executat o interogare catre un obiect de stocat pe alt serverAtunci pt a accesa acest obiect e necesar sa se scrie numele lui implicitNume_serverNume_baza_de_dateNume_schemaNume_ObiectUtilizind un sinonim creat in schema curentaobiectul poate fi accesat doar specificind sinonimul respectivUn sinonim apartine unei scheme ca si alte obiecte ale schemeiNumele unui sinonim trebuie sa fie unicUn sinonim poate fi creat pt urmat obiecte din baza de datetabelele definite de utilizator(inclusive tabelele temporare atit locale cit sh globale)viziuniprocedure stocatefunctiiUn sinonim nu poate fi obiect de baza pt alt sinonimUn sinonim nu poate referi o functie de agregare definite de utilizatorDoar numele unui sinonim executa legatura intre acesta si obiectul de bazaExistenta si tipul de verificarea drepturilor de acces catre obiectul de baza sunt aminate pina la rulareprin urmare acelasi nume ca si obiectul de baza originalDe exemplu se considera un sinonim cumparaturi care face referire la dbovinzari in baza de date calculatoareDaca tabelul dbovinzari este sters si inlocuit cu o viziune numita dbovinzariatunci cumparaturi acum se refera la viziunea dbovinzariUrmatorul exemplu creaza un sinonim notebook pt obiectul d ebazalaptop_ri din vaza de calculatoare apoi interogheaza baza de dateutilizind sinonimul creatUse calculatoareGoCreate Synonym notebook for calculatoaredbolaptop_uriGoSelect from notebookGo 57 Blocarea relaţiilor şi gestiunea tranzacţiilor icircn SQL2Sistemul blocheaza icircn mod automat o linie icircn numele unei tranzactii pentru a icircmpiedica alte tranzactii sa blocheze aceeasi linie Aceasta blocare icircmpiedica manipularea simultana a unei Unii de catre doua tranzactii distincte

11

prevenindu-se astfel interferenta distructiva a instructiunilor DDL si DML contradictorii De exemplu Oracfe icircmpiedica distrugerea unui tabel daca exista tranzactii nefinalizate icircn care este implicat tabelul respectiv Aceste blocari ale datelor sunt anulate automat atunci cacircnd tranzactia este finalizata Blocarea implicita a datelor decurge automat pentru toate instructiunile SQL astfel icircncacirct nu este necesar ca utilizatorii bazei de date sa blocheze liniile icircn mod explicit icircn mod prestabilit Oracle blocheaza resursele la nivelul cel mai scazut posibilTranzactiile sunt grupuri logice de instructiuni SQL Fiecare tranzactie se icircncheie fie cu o finalizare fie cu o derulare icircnapoi Finalizarile duc la salvarea permanenta a modificarilor bazei de date efectuate de catre tranzactie Derularile icircnapoi anuleaza toate modificarile bazei de date efectuate de catre tranzactieGestionarea tranzactiilor asigura concurenta si coerenta datelor pentru toti utilizatorii bazei de date icircn lipsa gestiunii tranzactiilor calitatea si precizia datelor ar fi compromise iar baza de date ar deveni aproape de neutilizat58 Definirea viziunilor icircn SQL2 ExempleO viziune (VIEW) este un table virtual al carui continut este definit de o interogareO V poate fi create din unul sau mai multe tabele ale bdViziunile sunt folosite pentru a concentrasimplifica si personalize fiecare patrundere a utilizatorului in bdEle pot fi folosite si ca mecanisme de securitate permitind utilizatorului sa acceseze date prin intermediului viziunilorfara a acorda utilizatorilor permisiuni sa acceseze tabelele de baza direztViziunile pot fi deasemenea folosite atunci cind sunt copiate date din SQL server si pentru partajarea datelor2 tipuri de creare a viziunilorFolosind instructiunea Create view a limbajului transact_sqlFolosind VEW Designer al componentei SQ server management studioPrincipii de creare a viziunilorO V poate fi create numai in baza de data in uzTotusi tabelele si viziunile ce se refera la o viziune noua pot exista in alte baze de date sau cjiar pe alte serverePot fi construite viziuni asupra altor viziuni sau procedure ce se refera la viziuniAsupra V nu pot fi construiti indecsi sau definiti indecsi full-textO V fie exemplu2 in bd calculatoare poate fi definite folosind limb SQL de exempluUse calculatoareGoIf object_ID(lsquoexemplul2rsquorsquoVrsquo) is not null drop view exemplul2GoCreate View exemplul2 As select Model from produse 59Definirea indecşilor icircn SQL2 ExempleUn index este un obiect al schemei bazei de date care facilitează accesarea rapidă şi univocă a datelor Icircn anumite condiţii viteza de execuţie a cererilor După ce indexul a fost creat utilizatorului nu i se mai cere nici o operaţie directă asupra lui el va fi folosit şi icircntreţinut automat de către SGBDSintaxa pentru crearea unui index este următoareaCREATE INDEX nume_index ON nume_tabela (nume_coloana1 [ nume coloana2 hellip])Exemplu crearea unui index după coloana număr factură icircn tabela facturiCREATE INDEX nr_factura_index ON facturi (nrfact)Pentru tabele mici folosirea indecşilor nu aduce icircmbunătăţiri de performanţă Se folosesc atunci cacircnd coloanele după care se creează indecşii conţin o diversitate mare de informaţii sau multe valori NULL Indecşii optimizează interogările atunci cacircnd acestea returnează o cantitate mică de date Indecşii cresc viteza de regăsire a datelor dar icircncetinesc actualizarea datelor datorită faptului că sistemul trebuie să actualizeze şi fişierele index Icircn general este foarte util să se creeze indecşi după cacircmpuri care se folosesc icircn operaţii de joinŞtergerea unui index se face cu comanda DROP INDEXDROP INDEX nume_index [ON nume_tabela] 60Definirea constracircngerilor şi aserţiunilor icircn SQL2 ExemplePt formularea unor restrictii mai generale decit cele corespunzind tabelelor si coloanelor SQL da posibilitatea folosirii unei intructiuni specifice cu sintaxaCreate assertion ltconstraint_namegt check(search_condition)Spre deosebire de restrictiile de tabele si de coloane asertiunile nu sint associate cu nici o definitie de tabela particularaAsertiunile sunt folosite de obicei pt a formula restrictii asupra mai multor tabeleRemarcam ca pt a satisface restrictiaconditia din clauza check trebuie sa furmizeze o valoare fie truefie unknownVederile si Aseriunile se folosesc intransportul schemelor conceputale din modelul EEA si din UML in modelul relationalExemplu de adaugare de constringere

12

Alter Table task Constraint Foreign Key (newtaskind)references newtask(newtaskid)O constringere se poate adauga si la crearea tabeluluiConstringeri de integritateCheile primarevalori implicite pt cimpuriDaca integritatea bazei de date nu este asigurataadica nu sint respectate constringerile de integritatea se spune ca bd este incosistenta

13

Page 10: Baze de Date Examen.[Conspecte.md]

relatie cu toate valorile returnate de interogareSă se găsească departamentele in care nu lucrează nici un angajat cu numele Ionescuselect Deptfrom Departamentwhere Dept ltgt all (select Deptfrom Angajatiwhere Nume = rsquoIonescursquo)Această interogare poate fi exprimată cu ajutorul operatorului diferenŃăselect Deptfrom Departamentexceptselect Deptfrom Angajatiwhere Nume = rsquoIonescursquo 50 Interogări imbricate cu ANY icircn SQL2 Exemple Cuvantul cheie any specifică faptul că linia este validă dacă valoarea atributului se află inrelatie cu cel putin o valoare returnată de interogarea imbricatăSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Exemplu Să se găsească angajaŃii ce lucrează intr-un departament din Iasiselect Nume Prenumefrom Angajatiwhere Dept = any (select Deptfrom Departamentwhere Oras = rsquoIasirsquo)ObservaŃie Această interogare poate fi rezolvată prin realizarea unei joncŃiuni intre celedouă tabele 51 Interogări imbricate cu EXISTS icircn SQL2 Exemple Acest operator acceptă ca parametru o interogare imbricată sireturnează valoarea adevărat doar dacă interogarea nu produce un rezultat vidSă se găsească persoanele care au acelasi nume si prenume dar coduri diferiteselect from Persoana Pwhere exists (select from Persoana P1where P1Nume = PNume andP1Prenume = PPrenume andP1Cod ltgt PCod ) 52 Interogări imbricate cu IN icircn SQL2 ExempleSQL pune la dispozitie doi operatori pentru a reprezenta apartenenta la o multime sinegatia sa in si not in Acesti operatori sunt echivalenti cu = any respectiv ltgt allselect Deptfrom Angajatiwhere Salariu = any sau in (select max(Salariu)from Angajati) 53 Interogări imbricate cu bdquo=rdquo icircn SQL2 ExempleSe consideră tabelele ANGAJATI si DEPARTAMENT prezentate in figura 51Să se găsească departamentele in care lucrează angajatii ce castigă cel mai mare salariuselect Deptfrom Angajatiwhere Salariu = any (select max(Salariu)from Angajati)sauselect Deptfrom Angajatiwhere Salariu gt= all (select Salariufrom Angajati)ObservatiiDesi cele două interogări sunt echivalente este indicată folosirea functiilor

10

agregat deoarece sunt mai concludente si se execută mai eficientIn cazul primei interogări nu există nici o diferenŃa dacă in loc de operatorul anyse foloseste operatorul all (deoarece interogarea internă are ca rezultat o singurălinie) 54 Definirea utilizatorilor şi accesului la baza de date icircn SQL2 ExempleIn functie de modul de exploatare a bazei de date utilizatorii se pot impărti inadministratorul bazei de date (DBA) ndash persoana responsabilă de proiectarea controlul siadministrarea bazei de dateprogramatorii de aplicatii ndash definesc si creează programele ce accesează baza de dateutilizatorii obisnuiti ndash cei care utilizează efectiv baza de date- utilizatori finali ndash utilizează tranzactii (spre exemplu programe ce realizeazăactivităŃi frecvente si predefinite- utilizatori ocazionali ndash capabili să utilizeze limbaje interactive pentru a accesabaza de date formuland interogări (sau actualizări) de diferite tipuriPentru a putea lucra cu baze de date trebuie sa avem instalat un server de baze de dateTrebuie sa realizam conexiunea sh sa accesam in sfirsit datele 55Definirea permiselor asupra relaţiilor icircn SQL2 ExempleSGBD-urile permit datelor să fie considerate drept resurse comune ale organizatieidisponibile tuturor membrilor autorizatiBaza de date furnizează un model standardizat si precis al acelei părti a lumii reale careprezintă interes pentru organizatie model folosit in aplicaŃiile existente si care cuextensiile necesare poate fi folosit in aplicatii viitoareSGBD-urile oferă posibilitatea unui control centralizat al datelorPartajarea bazelor de date permite reducerea redundantei si inconsistentei datelorIndependenta datelor caracteristica fundamentală a SGBD-urilor favorizeazădezvoltarea de aplicatii mai flexibile si mai usor de modificat 55 Definirea permiselor asupra relaţiilor icircn SQL2 ExempleIdee nam ce o avut in vedere pp )56 Definirea sinonimilor icircn SQL2 ExempleSinonimele pot fi utilizate in interogari sau procedure stocate in loc de numele originale ale obiectelor din 23 sau 4 parti De exemplu este nevoie de executat o interogare catre un obiect de stocat pe alt serverAtunci pt a accesa acest obiect e necesar sa se scrie numele lui implicitNume_serverNume_baza_de_dateNume_schemaNume_ObiectUtilizind un sinonim creat in schema curentaobiectul poate fi accesat doar specificind sinonimul respectivUn sinonim apartine unei scheme ca si alte obiecte ale schemeiNumele unui sinonim trebuie sa fie unicUn sinonim poate fi creat pt urmat obiecte din baza de datetabelele definite de utilizator(inclusive tabelele temporare atit locale cit sh globale)viziuniprocedure stocatefunctiiUn sinonim nu poate fi obiect de baza pt alt sinonimUn sinonim nu poate referi o functie de agregare definite de utilizatorDoar numele unui sinonim executa legatura intre acesta si obiectul de bazaExistenta si tipul de verificarea drepturilor de acces catre obiectul de baza sunt aminate pina la rulareprin urmare acelasi nume ca si obiectul de baza originalDe exemplu se considera un sinonim cumparaturi care face referire la dbovinzari in baza de date calculatoareDaca tabelul dbovinzari este sters si inlocuit cu o viziune numita dbovinzariatunci cumparaturi acum se refera la viziunea dbovinzariUrmatorul exemplu creaza un sinonim notebook pt obiectul d ebazalaptop_ri din vaza de calculatoare apoi interogheaza baza de dateutilizind sinonimul creatUse calculatoareGoCreate Synonym notebook for calculatoaredbolaptop_uriGoSelect from notebookGo 57 Blocarea relaţiilor şi gestiunea tranzacţiilor icircn SQL2Sistemul blocheaza icircn mod automat o linie icircn numele unei tranzactii pentru a icircmpiedica alte tranzactii sa blocheze aceeasi linie Aceasta blocare icircmpiedica manipularea simultana a unei Unii de catre doua tranzactii distincte

11

prevenindu-se astfel interferenta distructiva a instructiunilor DDL si DML contradictorii De exemplu Oracfe icircmpiedica distrugerea unui tabel daca exista tranzactii nefinalizate icircn care este implicat tabelul respectiv Aceste blocari ale datelor sunt anulate automat atunci cacircnd tranzactia este finalizata Blocarea implicita a datelor decurge automat pentru toate instructiunile SQL astfel icircncacirct nu este necesar ca utilizatorii bazei de date sa blocheze liniile icircn mod explicit icircn mod prestabilit Oracle blocheaza resursele la nivelul cel mai scazut posibilTranzactiile sunt grupuri logice de instructiuni SQL Fiecare tranzactie se icircncheie fie cu o finalizare fie cu o derulare icircnapoi Finalizarile duc la salvarea permanenta a modificarilor bazei de date efectuate de catre tranzactie Derularile icircnapoi anuleaza toate modificarile bazei de date efectuate de catre tranzactieGestionarea tranzactiilor asigura concurenta si coerenta datelor pentru toti utilizatorii bazei de date icircn lipsa gestiunii tranzactiilor calitatea si precizia datelor ar fi compromise iar baza de date ar deveni aproape de neutilizat58 Definirea viziunilor icircn SQL2 ExempleO viziune (VIEW) este un table virtual al carui continut este definit de o interogareO V poate fi create din unul sau mai multe tabele ale bdViziunile sunt folosite pentru a concentrasimplifica si personalize fiecare patrundere a utilizatorului in bdEle pot fi folosite si ca mecanisme de securitate permitind utilizatorului sa acceseze date prin intermediului viziunilorfara a acorda utilizatorilor permisiuni sa acceseze tabelele de baza direztViziunile pot fi deasemenea folosite atunci cind sunt copiate date din SQL server si pentru partajarea datelor2 tipuri de creare a viziunilorFolosind instructiunea Create view a limbajului transact_sqlFolosind VEW Designer al componentei SQ server management studioPrincipii de creare a viziunilorO V poate fi create numai in baza de data in uzTotusi tabelele si viziunile ce se refera la o viziune noua pot exista in alte baze de date sau cjiar pe alte serverePot fi construite viziuni asupra altor viziuni sau procedure ce se refera la viziuniAsupra V nu pot fi construiti indecsi sau definiti indecsi full-textO V fie exemplu2 in bd calculatoare poate fi definite folosind limb SQL de exempluUse calculatoareGoIf object_ID(lsquoexemplul2rsquorsquoVrsquo) is not null drop view exemplul2GoCreate View exemplul2 As select Model from produse 59Definirea indecşilor icircn SQL2 ExempleUn index este un obiect al schemei bazei de date care facilitează accesarea rapidă şi univocă a datelor Icircn anumite condiţii viteza de execuţie a cererilor După ce indexul a fost creat utilizatorului nu i se mai cere nici o operaţie directă asupra lui el va fi folosit şi icircntreţinut automat de către SGBDSintaxa pentru crearea unui index este următoareaCREATE INDEX nume_index ON nume_tabela (nume_coloana1 [ nume coloana2 hellip])Exemplu crearea unui index după coloana număr factură icircn tabela facturiCREATE INDEX nr_factura_index ON facturi (nrfact)Pentru tabele mici folosirea indecşilor nu aduce icircmbunătăţiri de performanţă Se folosesc atunci cacircnd coloanele după care se creează indecşii conţin o diversitate mare de informaţii sau multe valori NULL Indecşii optimizează interogările atunci cacircnd acestea returnează o cantitate mică de date Indecşii cresc viteza de regăsire a datelor dar icircncetinesc actualizarea datelor datorită faptului că sistemul trebuie să actualizeze şi fişierele index Icircn general este foarte util să se creeze indecşi după cacircmpuri care se folosesc icircn operaţii de joinŞtergerea unui index se face cu comanda DROP INDEXDROP INDEX nume_index [ON nume_tabela] 60Definirea constracircngerilor şi aserţiunilor icircn SQL2 ExemplePt formularea unor restrictii mai generale decit cele corespunzind tabelelor si coloanelor SQL da posibilitatea folosirii unei intructiuni specifice cu sintaxaCreate assertion ltconstraint_namegt check(search_condition)Spre deosebire de restrictiile de tabele si de coloane asertiunile nu sint associate cu nici o definitie de tabela particularaAsertiunile sunt folosite de obicei pt a formula restrictii asupra mai multor tabeleRemarcam ca pt a satisface restrictiaconditia din clauza check trebuie sa furmizeze o valoare fie truefie unknownVederile si Aseriunile se folosesc intransportul schemelor conceputale din modelul EEA si din UML in modelul relationalExemplu de adaugare de constringere

12

Alter Table task Constraint Foreign Key (newtaskind)references newtask(newtaskid)O constringere se poate adauga si la crearea tabeluluiConstringeri de integritateCheile primarevalori implicite pt cimpuriDaca integritatea bazei de date nu este asigurataadica nu sint respectate constringerile de integritatea se spune ca bd este incosistenta

13

Page 11: Baze de Date Examen.[Conspecte.md]

agregat deoarece sunt mai concludente si se execută mai eficientIn cazul primei interogări nu există nici o diferenŃa dacă in loc de operatorul anyse foloseste operatorul all (deoarece interogarea internă are ca rezultat o singurălinie) 54 Definirea utilizatorilor şi accesului la baza de date icircn SQL2 ExempleIn functie de modul de exploatare a bazei de date utilizatorii se pot impărti inadministratorul bazei de date (DBA) ndash persoana responsabilă de proiectarea controlul siadministrarea bazei de dateprogramatorii de aplicatii ndash definesc si creează programele ce accesează baza de dateutilizatorii obisnuiti ndash cei care utilizează efectiv baza de date- utilizatori finali ndash utilizează tranzactii (spre exemplu programe ce realizeazăactivităŃi frecvente si predefinite- utilizatori ocazionali ndash capabili să utilizeze limbaje interactive pentru a accesabaza de date formuland interogări (sau actualizări) de diferite tipuriPentru a putea lucra cu baze de date trebuie sa avem instalat un server de baze de dateTrebuie sa realizam conexiunea sh sa accesam in sfirsit datele 55Definirea permiselor asupra relaţiilor icircn SQL2 ExempleSGBD-urile permit datelor să fie considerate drept resurse comune ale organizatieidisponibile tuturor membrilor autorizatiBaza de date furnizează un model standardizat si precis al acelei părti a lumii reale careprezintă interes pentru organizatie model folosit in aplicaŃiile existente si care cuextensiile necesare poate fi folosit in aplicatii viitoareSGBD-urile oferă posibilitatea unui control centralizat al datelorPartajarea bazelor de date permite reducerea redundantei si inconsistentei datelorIndependenta datelor caracteristica fundamentală a SGBD-urilor favorizeazădezvoltarea de aplicatii mai flexibile si mai usor de modificat 55 Definirea permiselor asupra relaţiilor icircn SQL2 ExempleIdee nam ce o avut in vedere pp )56 Definirea sinonimilor icircn SQL2 ExempleSinonimele pot fi utilizate in interogari sau procedure stocate in loc de numele originale ale obiectelor din 23 sau 4 parti De exemplu este nevoie de executat o interogare catre un obiect de stocat pe alt serverAtunci pt a accesa acest obiect e necesar sa se scrie numele lui implicitNume_serverNume_baza_de_dateNume_schemaNume_ObiectUtilizind un sinonim creat in schema curentaobiectul poate fi accesat doar specificind sinonimul respectivUn sinonim apartine unei scheme ca si alte obiecte ale schemeiNumele unui sinonim trebuie sa fie unicUn sinonim poate fi creat pt urmat obiecte din baza de datetabelele definite de utilizator(inclusive tabelele temporare atit locale cit sh globale)viziuniprocedure stocatefunctiiUn sinonim nu poate fi obiect de baza pt alt sinonimUn sinonim nu poate referi o functie de agregare definite de utilizatorDoar numele unui sinonim executa legatura intre acesta si obiectul de bazaExistenta si tipul de verificarea drepturilor de acces catre obiectul de baza sunt aminate pina la rulareprin urmare acelasi nume ca si obiectul de baza originalDe exemplu se considera un sinonim cumparaturi care face referire la dbovinzari in baza de date calculatoareDaca tabelul dbovinzari este sters si inlocuit cu o viziune numita dbovinzariatunci cumparaturi acum se refera la viziunea dbovinzariUrmatorul exemplu creaza un sinonim notebook pt obiectul d ebazalaptop_ri din vaza de calculatoare apoi interogheaza baza de dateutilizind sinonimul creatUse calculatoareGoCreate Synonym notebook for calculatoaredbolaptop_uriGoSelect from notebookGo 57 Blocarea relaţiilor şi gestiunea tranzacţiilor icircn SQL2Sistemul blocheaza icircn mod automat o linie icircn numele unei tranzactii pentru a icircmpiedica alte tranzactii sa blocheze aceeasi linie Aceasta blocare icircmpiedica manipularea simultana a unei Unii de catre doua tranzactii distincte

11

prevenindu-se astfel interferenta distructiva a instructiunilor DDL si DML contradictorii De exemplu Oracfe icircmpiedica distrugerea unui tabel daca exista tranzactii nefinalizate icircn care este implicat tabelul respectiv Aceste blocari ale datelor sunt anulate automat atunci cacircnd tranzactia este finalizata Blocarea implicita a datelor decurge automat pentru toate instructiunile SQL astfel icircncacirct nu este necesar ca utilizatorii bazei de date sa blocheze liniile icircn mod explicit icircn mod prestabilit Oracle blocheaza resursele la nivelul cel mai scazut posibilTranzactiile sunt grupuri logice de instructiuni SQL Fiecare tranzactie se icircncheie fie cu o finalizare fie cu o derulare icircnapoi Finalizarile duc la salvarea permanenta a modificarilor bazei de date efectuate de catre tranzactie Derularile icircnapoi anuleaza toate modificarile bazei de date efectuate de catre tranzactieGestionarea tranzactiilor asigura concurenta si coerenta datelor pentru toti utilizatorii bazei de date icircn lipsa gestiunii tranzactiilor calitatea si precizia datelor ar fi compromise iar baza de date ar deveni aproape de neutilizat58 Definirea viziunilor icircn SQL2 ExempleO viziune (VIEW) este un table virtual al carui continut este definit de o interogareO V poate fi create din unul sau mai multe tabele ale bdViziunile sunt folosite pentru a concentrasimplifica si personalize fiecare patrundere a utilizatorului in bdEle pot fi folosite si ca mecanisme de securitate permitind utilizatorului sa acceseze date prin intermediului viziunilorfara a acorda utilizatorilor permisiuni sa acceseze tabelele de baza direztViziunile pot fi deasemenea folosite atunci cind sunt copiate date din SQL server si pentru partajarea datelor2 tipuri de creare a viziunilorFolosind instructiunea Create view a limbajului transact_sqlFolosind VEW Designer al componentei SQ server management studioPrincipii de creare a viziunilorO V poate fi create numai in baza de data in uzTotusi tabelele si viziunile ce se refera la o viziune noua pot exista in alte baze de date sau cjiar pe alte serverePot fi construite viziuni asupra altor viziuni sau procedure ce se refera la viziuniAsupra V nu pot fi construiti indecsi sau definiti indecsi full-textO V fie exemplu2 in bd calculatoare poate fi definite folosind limb SQL de exempluUse calculatoareGoIf object_ID(lsquoexemplul2rsquorsquoVrsquo) is not null drop view exemplul2GoCreate View exemplul2 As select Model from produse 59Definirea indecşilor icircn SQL2 ExempleUn index este un obiect al schemei bazei de date care facilitează accesarea rapidă şi univocă a datelor Icircn anumite condiţii viteza de execuţie a cererilor După ce indexul a fost creat utilizatorului nu i se mai cere nici o operaţie directă asupra lui el va fi folosit şi icircntreţinut automat de către SGBDSintaxa pentru crearea unui index este următoareaCREATE INDEX nume_index ON nume_tabela (nume_coloana1 [ nume coloana2 hellip])Exemplu crearea unui index după coloana număr factură icircn tabela facturiCREATE INDEX nr_factura_index ON facturi (nrfact)Pentru tabele mici folosirea indecşilor nu aduce icircmbunătăţiri de performanţă Se folosesc atunci cacircnd coloanele după care se creează indecşii conţin o diversitate mare de informaţii sau multe valori NULL Indecşii optimizează interogările atunci cacircnd acestea returnează o cantitate mică de date Indecşii cresc viteza de regăsire a datelor dar icircncetinesc actualizarea datelor datorită faptului că sistemul trebuie să actualizeze şi fişierele index Icircn general este foarte util să se creeze indecşi după cacircmpuri care se folosesc icircn operaţii de joinŞtergerea unui index se face cu comanda DROP INDEXDROP INDEX nume_index [ON nume_tabela] 60Definirea constracircngerilor şi aserţiunilor icircn SQL2 ExemplePt formularea unor restrictii mai generale decit cele corespunzind tabelelor si coloanelor SQL da posibilitatea folosirii unei intructiuni specifice cu sintaxaCreate assertion ltconstraint_namegt check(search_condition)Spre deosebire de restrictiile de tabele si de coloane asertiunile nu sint associate cu nici o definitie de tabela particularaAsertiunile sunt folosite de obicei pt a formula restrictii asupra mai multor tabeleRemarcam ca pt a satisface restrictiaconditia din clauza check trebuie sa furmizeze o valoare fie truefie unknownVederile si Aseriunile se folosesc intransportul schemelor conceputale din modelul EEA si din UML in modelul relationalExemplu de adaugare de constringere

12

Alter Table task Constraint Foreign Key (newtaskind)references newtask(newtaskid)O constringere se poate adauga si la crearea tabeluluiConstringeri de integritateCheile primarevalori implicite pt cimpuriDaca integritatea bazei de date nu este asigurataadica nu sint respectate constringerile de integritatea se spune ca bd este incosistenta

13

Page 12: Baze de Date Examen.[Conspecte.md]

prevenindu-se astfel interferenta distructiva a instructiunilor DDL si DML contradictorii De exemplu Oracfe icircmpiedica distrugerea unui tabel daca exista tranzactii nefinalizate icircn care este implicat tabelul respectiv Aceste blocari ale datelor sunt anulate automat atunci cacircnd tranzactia este finalizata Blocarea implicita a datelor decurge automat pentru toate instructiunile SQL astfel icircncacirct nu este necesar ca utilizatorii bazei de date sa blocheze liniile icircn mod explicit icircn mod prestabilit Oracle blocheaza resursele la nivelul cel mai scazut posibilTranzactiile sunt grupuri logice de instructiuni SQL Fiecare tranzactie se icircncheie fie cu o finalizare fie cu o derulare icircnapoi Finalizarile duc la salvarea permanenta a modificarilor bazei de date efectuate de catre tranzactie Derularile icircnapoi anuleaza toate modificarile bazei de date efectuate de catre tranzactieGestionarea tranzactiilor asigura concurenta si coerenta datelor pentru toti utilizatorii bazei de date icircn lipsa gestiunii tranzactiilor calitatea si precizia datelor ar fi compromise iar baza de date ar deveni aproape de neutilizat58 Definirea viziunilor icircn SQL2 ExempleO viziune (VIEW) este un table virtual al carui continut este definit de o interogareO V poate fi create din unul sau mai multe tabele ale bdViziunile sunt folosite pentru a concentrasimplifica si personalize fiecare patrundere a utilizatorului in bdEle pot fi folosite si ca mecanisme de securitate permitind utilizatorului sa acceseze date prin intermediului viziunilorfara a acorda utilizatorilor permisiuni sa acceseze tabelele de baza direztViziunile pot fi deasemenea folosite atunci cind sunt copiate date din SQL server si pentru partajarea datelor2 tipuri de creare a viziunilorFolosind instructiunea Create view a limbajului transact_sqlFolosind VEW Designer al componentei SQ server management studioPrincipii de creare a viziunilorO V poate fi create numai in baza de data in uzTotusi tabelele si viziunile ce se refera la o viziune noua pot exista in alte baze de date sau cjiar pe alte serverePot fi construite viziuni asupra altor viziuni sau procedure ce se refera la viziuniAsupra V nu pot fi construiti indecsi sau definiti indecsi full-textO V fie exemplu2 in bd calculatoare poate fi definite folosind limb SQL de exempluUse calculatoareGoIf object_ID(lsquoexemplul2rsquorsquoVrsquo) is not null drop view exemplul2GoCreate View exemplul2 As select Model from produse 59Definirea indecşilor icircn SQL2 ExempleUn index este un obiect al schemei bazei de date care facilitează accesarea rapidă şi univocă a datelor Icircn anumite condiţii viteza de execuţie a cererilor După ce indexul a fost creat utilizatorului nu i se mai cere nici o operaţie directă asupra lui el va fi folosit şi icircntreţinut automat de către SGBDSintaxa pentru crearea unui index este următoareaCREATE INDEX nume_index ON nume_tabela (nume_coloana1 [ nume coloana2 hellip])Exemplu crearea unui index după coloana număr factură icircn tabela facturiCREATE INDEX nr_factura_index ON facturi (nrfact)Pentru tabele mici folosirea indecşilor nu aduce icircmbunătăţiri de performanţă Se folosesc atunci cacircnd coloanele după care se creează indecşii conţin o diversitate mare de informaţii sau multe valori NULL Indecşii optimizează interogările atunci cacircnd acestea returnează o cantitate mică de date Indecşii cresc viteza de regăsire a datelor dar icircncetinesc actualizarea datelor datorită faptului că sistemul trebuie să actualizeze şi fişierele index Icircn general este foarte util să se creeze indecşi după cacircmpuri care se folosesc icircn operaţii de joinŞtergerea unui index se face cu comanda DROP INDEXDROP INDEX nume_index [ON nume_tabela] 60Definirea constracircngerilor şi aserţiunilor icircn SQL2 ExemplePt formularea unor restrictii mai generale decit cele corespunzind tabelelor si coloanelor SQL da posibilitatea folosirii unei intructiuni specifice cu sintaxaCreate assertion ltconstraint_namegt check(search_condition)Spre deosebire de restrictiile de tabele si de coloane asertiunile nu sint associate cu nici o definitie de tabela particularaAsertiunile sunt folosite de obicei pt a formula restrictii asupra mai multor tabeleRemarcam ca pt a satisface restrictiaconditia din clauza check trebuie sa furmizeze o valoare fie truefie unknownVederile si Aseriunile se folosesc intransportul schemelor conceputale din modelul EEA si din UML in modelul relationalExemplu de adaugare de constringere

12

Alter Table task Constraint Foreign Key (newtaskind)references newtask(newtaskid)O constringere se poate adauga si la crearea tabeluluiConstringeri de integritateCheile primarevalori implicite pt cimpuriDaca integritatea bazei de date nu este asigurataadica nu sint respectate constringerile de integritatea se spune ca bd este incosistenta

13

Page 13: Baze de Date Examen.[Conspecte.md]

Alter Table task Constraint Foreign Key (newtaskind)references newtask(newtaskid)O constringere se poate adauga si la crearea tabeluluiConstringeri de integritateCheile primarevalori implicite pt cimpuriDaca integritatea bazei de date nu este asigurataadica nu sint respectate constringerile de integritatea se spune ca bd este incosistenta

13


Recommended