ALTE DOCUMENTE
|
||||||
Vederile sunt tabele logice asemanatoare unor ferestre prin care puteti privi unul sau mai multe tabele sau vederi.
O vedere are aspectul unui tabel continând coloane si linii care pot fi actualizate si în care se pot efectua inserari sau eliminari ca si cum ar fi cu adevarat un tabel. O vedere este de fapt un tabel logic care nu stocheaza date. Ea îsi preia datele din tabelele sau vederile pe care se bazeaza. Toate operatiile efectuate asupra unei vederi afecteaza practic tabelele de baza ale vederii.
O vedere este creata folosind o interogare si prin urmare poate fi privita ca fiind un tabel virtual sau o interogare stocata, întrucât vederile arata si se comporta ca niste tabele, ele pot fi util 16216b17q izate în majoritatea situatiilor pe post de tabele.
Vederile sunt dinamice si afiseaza întotdeauna informatiile curente ale tabelelor. Vederile nu sunt diferite de instantaneele Oracle care prezinta o imagine a datelor din trecut. Atunci când tabelele vederii sunt manipulate, aceste modificari sunt reflectate instantaneu în vedere.
Vederile va permit sa afisati datele într-o forma diferita de cea în care sunt stocate în tabele. Vederile va permit sa adaptati prezentarea datelor în conformitate cu cerintele specifice ale diverselor tipuri de utilizatori.
În general, vederile sunt create în urmatoarele scopuri:
Pentru a asigura un nivel mai înalt de securitate al bazei de date prin restrângerea accesului la un numar predeterminat de coloane si linii ale unui tabel. Acest lucru permite utilizatorilor sa vada un subset restrâns al datelor.
Pentru simplificarea prezentarii datelor prin ascunderea structurilor reuniunilor si tabelelor care stau la baza vederii.
Pentru afisarea datelor într-o alta reprezentare decât cea a tabelelor de baza.
Figura 8.1 prezinta o vedere care reuneste doua tabele pentru a crea un tabel virtual care urmeaza sa fie accesat de utilizatori.
Crearea unei vederi pe baza a doua tabele |
|
În plus, vederile pot simplifica efortul de programare prin posibilitatea de a interoga un tabel virtual în locul interogarii fiecaruia dintre tabelele de baza.
O vedere poate fi privita ca fiind o imagine în oglinda a unui tabel existent sau a unei alte vederi. Vederile se comporta foarte asemanator cu tabelele. De exemplu, ca si în cazul tabelelor, puteti avea pâna la 255 de coloane într-o vedere. Vederile pot fi interogate, actualizate si se pot efectua inserari în ele. Toate operatiile efectuate asupra unei vederi afecteaza practic tabelele de baza ale vederii, în plus, vederile sunt supuse restrictiilor de integritate si declansatorilor asociate tabelelor de baza.
Pentru a crea o vedere, folositi comanda SQL create view. Puteti defini o vedere cu orice interogare care face referire la tabele, instantanee sau alte vederi. Definitia unei vederi este stocata în dictionarul de date.
Exemplul urmator creeaza o vedere simpla, numita ang_vedere:
CREATE VIEW ang_vedere AS
SELECT marca_ang, prenume, nume, nr_dept
FROM ang
WHERE nr_dept =12
WITH CHECK OPTION CONSTRAINT ang_cnst;
Vederea ang_vedere va face referire numai la acele linii pentru care nr_dept este 12. with check option creeaza vederea cu restrictia ca instructiunilor insert si update care actioneaza asupra vederii nu le este permis sa creeze sau sa returneze linii pe care vederea sa nu le poata selecta, în exemplul precedent, numai liniile cu nr_dept egal cu 12 pot fi inserate în vedere.
Codul urmator creeaza o vedere mai complexa care reuneste date din mai multe tabele:
CREATE VIEW ang__dept_nume AS
SELECT prenume, nume, marca_ang, dept.nr_dept
FROM ang, dept
WHERE ang.nr_dept = dept.nr_dept;
Comanda create view face obiectul urmatoarelor limitari:
with check option nu este specificata în acest exemplu deoarece într-o vedere definita printr-o interogare care contine o reuniune nu pot fi inserate sau actualizate linii.
Nu pot fi utilizate clauzele order by sau for update.
Atunci când este creata o vedere cu o interogare care utilizeaza caracterul de înlocuire (*), programul Oracle expandeaza interogarea înlocuind caracterul (*) cu numele reale ale coloanelor atunci când stocheaza vederea în dictionarul de date. De exemplu, urmatoarea interogare va crea o vedere ang:
CREATE VIEW ang AS SELECT * FROM comp. ang;-
Oracle stocheaza în dictionarul de date interogarea de definire a vederii în forrna urmatoare:
CREATE VIEW ang AS SELECT "marca_ang", "prenume", "nume", "nr_dept"
FROM comp', ang;
Numele coloanelor au fost încadrate între ghilimele deoarece exista posibilitatea ca numele coloanelor obiectului de baza sa fi fost introduse initial cu ghilimele.
Oracle va permite sa creati o vedere a unor tabele chiar daca tabelele nu exista. Instructiunea create view f orce va obliga programul sa creeze vederea chiar daca tabelele nu exista sau daca utilizatorul nu poseda privilegiile corespunzatoare în legatura cu tabelele respective. Desi programul va crea vederea chiar si în aceste situatii, utilizatorul nu va putea sa o foloseasca. Vederea va deveni valida si accesibila utilizatorilor numai dupa crearea tabelelor de baza, acordarea privilegiilor corespunzatoare si recompilarea vederii. Instructiunea create view nof orce va crea vederea numai daca tabelele de baza exista si utilizatorul poseda privilegiile corespunzatoare în legatura cu aceste tabele.
Pentru a crea o vedere în schema dumneavoastra, trebuie sa posedati privilegiul de sistem create view. Pentru a crea o vedere în schema altui utilizator, este necesar privilegiul de sistem create any view. Aceste privilegii pot fi dobândite în mod explicit sau prin intermediul unui rol.
Proprietarului unei vederi trebuie sa i se acorde în mod explicit privilegiile necesare pentru accesarea tuturor obiectelor la care face referire vederea. Proprietarul nu poate obtine aceste privilegii prin intermediul unui rol. în mod similar, puteti utiliza o vedere numai în conformitate cu privilegiile acordate proprietarului. De exemplu, daca proprietarul vederii beneficiaza numai de privilegiul update pentru tabelul ANG, puteti folosi aceasta vedere numai pentru a actualiza liniile din tabelul ANG.
Pentru a modifica definitia unei vederi, vederea trebuie înlocuita. Vederile pot fi înlocuite în doua moduri:
Vederea poate fi distrusa si apoi re-creata cu noua definitie. Atunci când vederea este distrusa, toate privilegiile sunt retrase. Aceste privilegii trebuie sa fie recreate pentru noua vedere.
Vederea poate fi re-creata prin redefinirea ei cu instructiunea create view cu clauza optionala or replace. Aceasta metoda este folosita pentru înlocuirea definitiei curente a unei vederi cu conservarea tuturor privilegiilor curente.
Exemplul urmator înlocuieste vederea ang_dept_nume cu noua definitie a vederii:
CREATE or replace view ang_dept_nume as
SELECT prenume, nume, marca_ang, dept.nr_dept
FROM ang, dept
WHERE ang.nr_dept = 15;
Înlocuirea vederilor are urmatoarele efecte:
Definitia vederii din dictionarul de date este actualizata. Nici unul dintre obiectele de baza nu este afectat de înlocuirea vederii.
Toate restrictiile care existau în vederea originala însa nu se regasesc în noua vedere, sunt distruse.
Toate vederile si programele PL/SQL dependente de vederea înlocuita devin invalide.
Pentru a înlocui o vedere, trebuie sa posedati privilegiile de sistem necesare pentru distrugerea si crearea unei vederi.
Vederile trebuie sa fie tratate similar tabelelor în instructiunile SQL. De exemplu, instructiunea urmatoare interogheaza vederea ang_dept_nume:
select prenume, nume, marca_ang from ang_dept_nume;
Urmatorul exemplu insereaza o noua înregistrare în tabelul ANG utilizând vederea ang_dept_nume:
insert into ang_dept_nume values ( "Thomas','Baker',281);
Puteti folosi o vederea oriunde ati folosi un tabel în oricare dintre urmatoarele instructiuni SQL:
select
insert
update
comment
lock table
Utilizarea vederilor face obiectul urmatoarelor limitari:
Nu puteti folosi o vedere pentru a efectua operatii insert, update sau delete atunci când interogarea vederii contine o operatie join, operatorii set sau distinct, o clauza group by sau o functie group.
Nu puteti utiliza o vedere definita cu clauza with check option pentru a insera'sau a actualiza tabelele de baza.
Nu pot fi inserate linii în tabelul de baza daca o coloana not nuli a liniei respective este definita fara clauza def ault value.
Nu pot fi inserate linii în tabele utilizând o vedere care a fost creata folosind expresia decode.
Interogarea unei vederi nu poate sa faca referire la pseudo-coloanele nextval sau currval.
Dezavantajul utilizarii unei vederi este ca aceasta adauga unul sau mai multe nivele de procesare atunci când un utilizator interogheaza sau manipuleaza datele prin intermediul vederii. Utilizarea vederilor necesita un timp suplimentar de procesare înainte ca datele sa fie citite, reducând putin viteza de raspuns a serverului Oracle.
Pentru a recompila în mod explicit o vedere, folositi comanda alter view nume_vedere compile. Recompilarea permite detectarea eventualelor erori referitoare la vederea respectiva înaintea executarii vederii în mediul real al companiei. Este recomandabil sa recompilati în mod explicit vederea dupa orice modificare a oricaruia dintre tabelele de baza ale vederii. Instructiunea urmatoare va recompila vederea ang_dept_nume: ALTER VIEW ang_dept_nume COMPILE;
Comanda alter view nu modifica definitia vederii sau orice alt obiect care ar putea sa depinda de ea. Puteti sa recompilati orice vedere din schema dumneavoastra; pentru a recompila o vedere din alta schema, trebuie sa posedati privilegiul de sistem alter any table.
Pentru a distruge o vedere, utilizati comanda drop view. Exemplul urmator distruge vederea ang_dept_nume:
DROP VIEW ang_dept_nume;
Puteti sa distrugeti orice vedere din schema dumneavoastra. Pentru a distruge o vedere din schema altui utilizator, trebuie sa posedati privilegiul de sistem drop any view
O vedere este un tabel logic care va permite sa accesati datele din alte tabele si vederi. Vederile nu contin date. Tabelele pe care se bazeaza vederea sunt cele care contin datele si sunt cunoscute sub numele de tabele de baza.
Vederile permit creatorului aplicatiei sa prezinte utilizatorului informatii într-o forma diferita de cea a tabelelor de baza, dar care satisface cerintele utilizatorului cu privire la date. De asemenea, vederile îmbunatatesc securitatea bazei de date prin mascarea adevaratelor nume si locatii ale tabelelor de baza.
Accesarea si manipularea datelor prin intermediul unei vederi este asemanatoare lucrului cu tabele. Puteti executa instructiuni select, insert, delete si update cu vederi în acelasi fel în care ati fâce-o cu tabele, atâta timp cât vederea face referire la un singur tabel.
|