Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Vederi Oracle - Ce este o vedere?

Oracle


Vederi Oracle

Vederile sunt tabele logice asemanatoare unor ferestre prin care puteti privi unul sau mai multe tabele sau vederi.

Ce este o vedere?

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.

De ce se utilizeaza vederile?

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.

Cum se utilizeaza vederile

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.

Crearea vederilor

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.

Privilegii referitoare la vederi

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.

Īnlocuirea vederilor

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.

Utilizarea vederilor

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.

Recompilarea vederilor

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.

Distrugerea vederilor

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

Rezumat

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.


Document Info


Accesari: 4765
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )