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




CREAREA VIZUALIZARILOR - baze de date SQL

Informatica


CREAREA VIZUALIZARILOR



Obiective:

Dupa parcurgerea acestei lectii, ar trebui sa puteti face urmatoarele :

* Sa descrieti o vizualizare (imagine)

* Sa creati o vizualizare

* Sa extrageti date dintr-o vizualizare

* Sa schimbati structura unei vizualizari

* Sa inserati, sa actualizati si sa stergeti date dintr-o vizualizare

* Sa stergeti o imagine

Scopul lectiei

In aceasta lectie, veti invata sa creati si sa utilizati o imagine. Deasemenea veti invata sa interogati un relevant dictionar de date pentru a obtine informatii despre vizualizari.

Obiecte baza de date

Obiect

Descriere

Tabel

Unitate de memorare; compus din linii si coloane

Vizualizare

Reprezentari logice ale datelor din unul sau mai multe tabele

Secventa

Genereaza valorile cheii primare

Index

Imbunatateste performantele unor interogari

Synonym

Un alt nume pentru interogari

Ce este o imagine?

Tabelul EMP

EMPNO

ENAME

JOB

SAL

COMM

KING

PRESIDENT

CLARK

MANAGER

MILLER

CLERK

JAMES

CLERK

WARD

SALESMAN

Se pot face reprezentari logice sau combinatii de date prin crearea vizualizarilor din tabele. O imagine este un tabel logic bazat pe un alt tabel sau pe o alta imagine. O imagine nu contine date proprii dar este ca o fereastra prin intermediul careia datele din tabele pot fi vizualizate sau schimbate. tabelele pe baza carora sunt create vizualizarile se numesc 'tabele de baza'. O imagine este stocata doar ca o secventa SELECT in dictionarul de date.

De ce utilizam vizu 14414s188o alizari ?

* Pentru a limita accesul la baza de date

* Pentru a face interogarile complexe mai usoare

* Pentru a permite independenta datei

* Pentru a prezenta diferite imagini ale aceleeasi date

Avantajul utilizarii vizualizarilor

* ingradirea accesului la baza de date deoarece selectand dintr-o imagine putem afisa o parte restransa din baza de date.

* Permite utilizatorilor sa faca interogari simple pentru a extrage informatii din interogari compexe. De exemplu vizualizarile permit utilizatorilor sa ceara informatii din mai multe tabele fara a cunoaste instructiunea 'Join'(a uni).

* Furnizeaza independenta datelor pentru utilizatori ad-hoc si aplicatii program. O singura imagine poate fi utilizata pentru a obtine date din mai multe tabele.

* Furnizeaza grupurilor de utilizatori accesul la date in conformitate cu anumite criterii.

Imagini simple si imagini complexe

Caracteristici

Vizualizari simple

Vizualizari complexe

Numarul de tabele

Unu

Unu sau mai multe

Contine functii

Nu

Da

Contine grupuri de date

Nu

Da

Operatii DML

Da

Nu sunt permise

Imaginile se clasifica in doua grupe : simple si complexe. Diferenta de baza intre cele doua grupe este data de operatiile DML (inserare, actualizare si stergere).

O imagine simpla este o imagine care :

- Furnizeaza date dintr-o singura tabela

- Nu contine functii sau grupuri de date

- Permite operatii DML

O imagine complexa este o imagine care :

- Furnizeaza date din mai multe tabele

- Contine functii sau grupuri de date

- Nu permite intotdeauna operatii DML

Comanda CREATE VIEW

CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW

nume-view [(alias[, aliast...)]

AS subinterogare

[WITH CHECK OPTION [CONSTRAINT nume- constr]]

[WITH READ ONLY]

*Subinterogarea poate contine o secventa SELECT complexa

*Subinterogarea nu poate contine clauza ORDER BY

Se poate crea o vizualizare prin introducerea unei comenzi CREATE VIEW.

in sintaxa :

OR REPLACE - recreeaza imaginea daca aceasta exista deja

FORCE - creaza imaginea indiferent daca exista sau nu tabelul de baza

NOFORCE - creaza imaginea numai daca exista tabelul de baza. Optiunea exista   implicit

nume-view - este numele imaginii

alias - specifica numele date coloanelor din imagine si trebuie sa corespunda

elementelor din lista selectata

subinterogare -este o secventa SELECT. Alias-urile pot fi utilizate in secventa SELECT

WITH CHECK OPTION - specifica faptul ca doar liniile accesibile imaginii

pot fi inserate sau actualizate

nume-constr - este numele dat constringerii

WITH READ ONLY - asigura ca nici o operatie DML nu se poate executa pe vizualizare.

* Pentru a crea o vizualizare numita EMPVU10 care contine detalii ale angajatilor din departamentul 10, se introduce:

CREATE VIEW empvu10

AS SELECT empno, ename, job

FROM  emp

WHERE  deptnoa10;

* Pentru a afisa structura unei vizualizari poate fi folosita comanda SQL *Plus DESCRIBE.

DESCRIBE empvu10

Exemplul anterior creat contine numarul angajatului, numele si functia sa pentru toti angajatii din departamentul 10.

Descrierea structurii imaginii este urmatoarea :

Name Null? Type

EMPNO  NOT NULL NUMBER (4)

ENAME  VARCHAR2 (10)

JOB  VARCHAR2 ( 9)

Indrumari pentru crearea unei vizualizari

*Subinterogarea care defineste o vizualizare poate contine o secventa SELECT complexa , inclusiv reuniuni (joins), grupuri si subinterogari.

*Subinterogarea care defineste o vizualizare nu poate contine clauza ORDER BY. Aceasta clauza este specificata atunci cand extragi date din vizualizare.

*Daca nu se specifica un nume pentru constrangere cand se utilizeaza clauza CHECK OPTION, sistemul va da un nume implicit in format SYS_Cn.

*Poate fi utilizata optiunea OR REPLACE pentru a altera vizualizarea fara a o sterge si recreea sau redand privilegiile obiectului, date anterior.

Crearea vizualizarii utilizand alias-uri pentru coloane in subinterogare

CREATE VIEW salvu30

AS SELECT empno EMPLOYEE_NUMBER, ename NAME, sal SALARY

FROM emp

WHERE  deptnoa30;

Exemplul anterior creaza o vizualizare care contine numarul angajatului cu alias-ul EMPLOYEE_NUMBER, numele sau cu alias-ul NAME si salariul cu alias-ul SALARY pentru salariatii din departamentul 30.

Alternativ, pot fi controlate numele coloanelor prin includerea alias-urilor in clauza CREATE VIEW.

Extragerea datelor din vizualizare

SELECT *

FROM salvu30;

EMPLOYEE_NUMBER

NAME

SALARY

BLAKE

MARTIN

ALLEN

TURNER

JAMES

WARD

Datele pot fi extrase din vizualizari la fel ca si din tabele. Deasemenea poate fi afisat intregul continut al vizualizarii sau numai liniile si coloanele specificate.

Interogarea unei vizualizari

SQL *Plus

SELECT * ----------> USER_VIEWS

From empvu; EMPVU10

SELECT empno,ename,job

FROM emp

WHERE deptnoa10;

7839 KING PRESIDENT

7782 CLARK MANAGER <---------EMP

7934 MILLER CLERK

Vizualizari in Dictionarul de date

Odata creata vizualizarea, se poate interoga un dictionar de tabele numit USER_VIEWS pentru a vedea numele si structura vizualizarii. Textul secventei SELECT care constituie vizualizarea este memorat intr-o coloana LONG.

Accesul la datele vizualizarii

Cand accesati date utilizand o imagine, Serverul Oracle face urmatoarele operatii:

1. Recupereaza definitia vizualizarii din dictionarul de tabele   USER_VIEWS.

2. Cauta privilegiile de acces pentru tabelul de baza.

3. Converteste interogarea vizualizarii intr-o operatie echivalenta asupra tabelului (tabelelor) asociate. Cu alte cuvinte, datele sunt recuperate din, sau actualizate in tabelul (tabelele) de baza.

Modificarea unei vizualizari

*Modificati vizualizarea EMPVU10 utilizand clauza CREATE OR REPLACE VIEW. Adaugati un alias pentru fiecare coloana.

CREATE OR REPLACE VIEW empvu10

(employee_number, employee_name, job_title)

AS SELECT empno, ename, job

FROM  emp

WHERE  deptnoa10;

* Alias-urile coloanelor in clauza CREATE VIEW sunt listate in aceeasi ordine ca si coloanele din subinterogare.

Optiunea OR REPLACE permite crearea unei vizualizari chiar daca mai exista una cu acelasi nume, astfel ilocuindu-se vechea versiune cu cea noua. Asta inseamna ca imaginea poate fi alterata (schimbata) fara stergerea, recrearea si redarea privilegiilor obiectului.

Observatie: Cand dati nume alternative coloanelor (alias-uri) in clauza CREATE VIEW, amintitiva ca alias-urile sunt listate in aceeasi ordine ca si coloanele din subinterogare.

Crearea unei imagini complexe

Creati o vizualizare complexa care sa contina un grup de functii pentru a afisa valorile din doua tabele.

CREATE VIEW dept_sum_vu

(name, minsal, maxsal, avgsal)

AS SELECT d.dname, MIN(e.sal), MAX(e.sal), AVG(e.sal)

FROM emp e, dept d

WHERE  e.deptnoad.deptno

GROUP BY d.dname;

Exemplul anterior creaza o imagine complexa care contine numele departamentului, salarul minim, salarul maxim si salarul mediu pentru fiecare departament. De retinut ca alias-urile au fost specificate pentru vizualizare. Acest lucru este o necesitate daca vreo coloana a imaginii este derivata dintr-o functie sau expresie.

Structura vizualizarii poate fi vazuta cu ajutorul comenzii SQL* Plus DESCRIBE. Continutul imaginii poate fi afisat cu o secventa SELECT.

SELECT *

FROM dept_sum_vu;

NAME

MINSAL

MAXSAL

AVGSAL

ACCOUNTING

RESEARCH

SALES

Reguli pentru indeplinirea operatiilor DML intr-o imagine

*Se pot face operatii DML pe o vizualizare simpla

*Nu se poate sterge o linie daca imaginea contine :

- Grup de functii

- Clauza GROUP BY

- Cuvantul cheie DISTINCT

Operatiile DML trebuie sa urmeze niste reguli sigure.

*Nu se pot modifica date intr-o vizualizare daca aceasta contine:

- Orice conditie mentionata anterior

- Coloane definite prin expresii - de exemplu, SALARY*12

- Pseudocoloane ROWNUM

*Nu pot fi adaugate date daca :

- Vizualizarea contine oricare din conditiile mentionate mai sus

- Exista coloane NOT NULL in tabelul de baza care n-au fost selectate in imagine. Toate valorile cerute trebuie sa fie prezente in vizualizare. Amintiti-va ca adaugati valori direct in tabel.

Utilizarea clauzei WITH CHECK OPTION

* Se poate asigura faptul ca operatiile DML se fac numai pe vizualizare utilizand clauza WITH CHECK OPTION

CREATE OR REPLACE VIEW empvu20

AS SELECT *

FROM  emp

WHERE  deptnoa20

WITH CHECK OPTION CONSTRAINT empvu20_ck;

*Orice incercare de a schimba numarul departamentului pentru orice linie din vizualizare va esua deoarece nu respecta constrangerea WITH CHECK OPTION.

Exista posibilitatea de a executa verificari de integritate referentiale asupra datelor din imagini. Deasemenea se pot forta constrangerile la nivelul bazei de date. Vizualizarea poate fi utilizata pentru a proteja integritatea datei, dar utilizarea este foarte limitata.

Clauza WITH CHECK OPTION specifica faptul ca INSERT si UPDATES executate prin intermediul imaginii nu permit crearea de linii noi pe care imaginea nu le poate selecta, si de aceea permite constrangerile de integritate si verificarile validarilor de date sa fie fortate asupra datelor ce vor fi inserate sau actualizate.

Daca exista vreo incercare de executare a operatiilor DML pe linii care nu au fost selectate, va aparea o eroare, cu numele constrangerii daca acesta a fost specificat.

UPDATE  empvu20

SET  deptnoa10

WHERE empnoa7788;

Dupa lansarea acestei secvente pe ecran va apare :

update empvu20

*

ERROR at line 1:

ORA-01402: view WITH CCHECK OPTION where-clause violation

Observatie: Nici o linie nu este actualizata pentru ca daca numarul departamentului ar deveni '10', imaginea nu ar mai putea contine acel angajat. De aceea, avand clauza WITH CHECK OPTION, vizualizarea poate contine doar angajatii din departamentul 20 si nu permite ca numarul departamentului pentru acei angajati sa fie schimbat in vizualizare.

Interzicerea operatiilor DML

*Trebuie sa va asigurati ca operatiile DML nu vor altera datele adaugand clauza WITH READ ONLY.

CREATE OR REPLACE VIEW empvu10

(employee_number, employee_name, job_title)

AS SELECT empno, ename, job

FROM  emp

WHERE deptnoa10

WITH READ ONLY;

*Orice incercare de a executa operatii DML pe oricare din linii in imagine va da in Oracle o eroare ORA-01752.

Exemplul descris modifica imaginea EMPVU10 pentru a impiedica orice operatie DML.

Orice incercare de stergere a unei linii va da o eroare.

DELETE FROM empvu10

WHERE  employee_numbera7782;

Pe ecran va apare:

DELETE FROM empvu10

*

ERROR at line 1:

ORA_01752: Cannot delete from view without exactly one key-preserved table

Stergerea unei vizualizari

O vizualizare poate fi stearsa fara a pierde datele deoarece imaginea are la baza un tabel asociat.

DROP VIEW view;

In sintaxa view semnifica numele vizualizarii.

Ex : DROP VIEW empvu10;

Utilizati comanda DROP VIEW pentru a sterge o imagine. Aceasta comanda elimina definitia imaginii din baza de date. Datele nu sunt afectate deoarece sunt stocate in tabelele de unde a derivat fiecare imagine. Imaginile sau alte aplicatii bazate pe o imagine stearsa devin invalide. Doar creatorul imaginii sau un user cu privilegiul DROP ANY VIEW poate sterge o vizualizare.

Restrictii privind operatiile DML pentru vederi:

  1. Daca o vedere este definita printr-o interogare care contine SET sau DISTINCT clauza GROUP BY, sau o functie de grup , atunci nu pot fi inserate linii, updatate, sau sterse din tabelele de baza folosind vederea.
  1. Daca o vedere este definita cu optiunea WITH CHECK OPTION, atunci o linie nu poate fi inserata sau actualizata in tabela de baza (folosind vederea), daca vederea nu poate selecta linia din tabela de baza.
  1. Daca o coloana NOT NULL care nu are o clauza DEFAULT este omisa dintr-o vedere, atunci o linie nu poate fi inserata in tabela de baza folosind vederea.
  1. Daca vederea a fost creata folosind o expresie ca DECODE(deptno, 10, "SALES", ...), atunci liniile nu pot fi inserate sau actualizate in tabela de baza folosind vederea.

Exercitii practice

*Crearea unei imagini simple

*Crearea unei imagini complexe

*Crearea unei imagini cu verificarea constangerii

*Incercarea de modificare a datei intr-o vizualizare

*Afisarea definitiilor de vizualizari

*{tergerea imaginilor

In acest capitol de exercitii veti crea imagini simple si complexe si veti incerca sa executati operatii DML pe vizualizari.

1. Creati o vizualizare EMP_VU care sa contina numarul angajatului, numele sau si numarul departamentului avand asociat tabelul EMP. Schimbati denumirea pentru numele angajatului cu EMPLOYEE.

2. Afisati continutul vizualizarii EMP_VU.

3. Selectati view_name si text (numele vizualizarii si textul) din dictionarul USER_VIEWS.

4. Folosind imaginea EMP_VU introduceti o secventa pentru a afisa numele angajatilor si numerele departamentelor.

5. Creati o vizualizare DEPT20 care sa contina numarul angajatului, numele sau si numarul departamentului pentru toti angajatii din departamentul 20. Etichetati coloanele imaginii astfel : EMPLOYEE_ID,EMPLOYEE si DEPARTMENT_ID. Nu permiteti ca unui angajat sa i se poata schimba numarul departamentului in vizualizare.

6. Afisati structura si continutul imaginii DEPT20.

7. incercati sa schimbati numarul departamentului pentru Smith.

8. Creati o imagine numita SALARY_VU care sa contina numele angajatului, numele departamentului, salariul si gradul salariului pentru toti angajatii. Etichetati coloanele astfel : Employee, Department, Salary respectiv Grade.


Document Info


Accesari: 4099
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 )