Sunteți pe pagina 1din 6

ACADEMIA DE STUDII ECONOMICE BUCURETI

FACULTATEA DE CIBERNETIC, STATISTIC I INFORMATIC ECONOMIC

Obiecte ale bazei de date BAZE DE DATE Gestiunea altor obiecte ale bazei de date
Tabele virtuale (VIEWS) Secvene (SEQUENCES) Sinonime (SYNONYMS) Indeci (INDEXES) Clustere (CLUSTERS)
etc.

Tabele virtuale

Tabel virtual view viziune vedere

O tabel virtual desemneaz o comand SELECT stocat n baza de date sub un anumit nume O tabel virtual poate fi referit ca i orice alt tabel de baz Principala utilitate a tabelelor virtuale - asigurarea securitii unei baze de date

BUCURETI 2013-2014

Tabele virtuale

Tabele virtuale
O tabel virtual trebuie s aib nume de coloane valide atenie la utilizarea expresiilor!

Tabele virtuale
CREATE OR REPLACE VIEW clerk AS SELECT id_angajat, nume, id_departament, id_functie FROM angajati WHERE id_functie = 'PU_CLERK' OR id_functie = 'SH_CLERK' OR id_functie = 'ST_CLERK';

Crearea unei tabele virtuale:


CREATE [OR REPLACE] VIEW nume_view AS comand SELECT [WITH READ ONLY] [WITH CHECK OPTION];

n funcie de complexitatea comenzii SELECT, tabelele virtuale pot fi:

simple (cu interogri asupra unei singure tabele, fr grupri sau expresii) complexe (cu interogri asupra mai multor tabele, cu grupri sau folosind expresii)
UPDATE clerk SET id_functie = 'PU_MAN' WHERE id_angajat = 115;

Asupra tabelelor virtuale simple pot fi utilizate comenzi de actualizare, cu condiia s nu se ncalce nicio restricie de integritate din tabela de baz.
4 5

Tabele virtuale
CREATE OR REPLACE VIEW clerk AS SELECT id_angajat, nume, id_departament, id_functie FROM angajati WHERE id_functie = 'PU_CLERK' OR id_functie = 'SH_CLERK' OR id_functie = 'ST_CLERK

Tabele virtuale
CREATE OR REPLACE VIEW clerk AS SELECT id_angajat, nume, id_departament, id_functie FROM angajati WHERE id_functie = 'PU_CLERK' OR id_functie = 'SH_CLERK' OR id_functie = 'ST_CLERK

Tabele virtuale
Tabele virtuale definite inline

O tabel virtual definit inline este reprezentat de o subcerere utilizat n clauza FROM a unei comenzi SELECT.

WITH CHECK OPTION; UPDATE clerk SET id_functie = 'PU_MAN' WHERE id_angajat = 115; ORA-01402: n vizualizarea WITH CHECK OPTION clauza WHERE este ncalcata UPDATE clerk SET id_functie = 'ST_CLERK' WHERE id_angajat = 116;
7

WITH READ ONLY;

UPDATE clerk SET id_functie = 'ST_CLERK' WHERE id_angajat = 116; ORA-42399: nu se poate efectua o operatie DML asupra unei vederi read-only

tergerea tabelelor virtuale


DROP VIEW nume_view;

Secvene

Secvene
Opiunile posibil de specificat la crearea unei secvene:

Secvene
Utilizarea secvenelor presupune referirea a dou pseudocoloane:

O secven desemneaz un obiect al bazei de date, independent de tabele, care este utilizat pentru a genera iruri de numere Principalul scop al utilizrii unei secvene: generarea de valori distincte pentru cmpul cheie primar dintr-o tabel

START WITH numr_ntreg INCREMENT BY numr_ntreg

NEXTVAL

MAXVALUE numr_ntreg NOMAXVALUE


incrementeaz secvena ctre urmtorul numr, n concordan cu directivele indicate la crearea secvenei returneaz noua valoare apelul iniial al lui NEXVAL va returna prima valoare din secven

CREATE SEQUENCE nume_secven opiuni_secven;

MINVALUE numr_ntreg NOMINVALUE CYCLE NOCYCLE


10 11

CURRVAL

afieaz valoarea curent din secven poate fi utilizat numai dac anterior a fost deja referit pseudocoloana NEXTVAL
12

Secvene

Secvene

Secvene

Aspecte privind utilizarea secvenelor:


o comand SQL care folosete pseudo-coloana NEXTVAL va conduce la avansarea n secven chiar i n cazul n care comanda iniial eueaz nu pot fi folosite pseudo-coloanele NEXTVAL i CURRVAL n clauza DEFAULT a comenzilor CREATE TABLE sau ALTER TABLE nu pot fi folosite pseudo-coloanele NEXTVAL i CURRVAL n subcereri incluse n comenzile CREATE VIEW sau SELECT, UPDATE, DELETE nu pot fi folosite pseudo-coloanele NEXTVAL i CURRVAL n clauza WHERE a unei comenzi SELECT nu pot fi folosite pseudo-coloanele NEXTVAL i CURRVAL la definirea restriciilor de integritate de tip CHECK
14

Modificarea secvenelor:

CREATE SEQUENCE seq_dep START WITH 1 INCREMENT BY 1 MAXVALUE 10 NOCYCLE;

CREATE SEQUENCE seq_ang START WITH 1 INCREMENT BY 1 MAXVALUE 90 NOCYCLE;

ALTER SEQUENCE nume_secven opiuni_secven;

tergerea secvenelor:

DROP SEQUENCE nume_secven;

INSERT INTO departamente (id_departament, denumire_departament) VALUES (seq_dep.NEXTVAL, 'IT');

INSERT INTO angajati (id_angajat, nume, id_departament) VALUES (seq_ang.NEXTVAL, 'Gigi', seq_dep.CURRVAL);
13

15

Sinonime

Sinonime

Indeci

Un sinonim reprezint un nume alternativ (alias) pentru un alt obiect al bazei de date. Exist dou tipuri de sinonime:
private

Crearea sinonimelor:
private publice

CREATE OR REPLACE SYNONYM ang1 FOR angajati;

Un index este un obiect asociat unei tabele sau unui grup de tabele (cluster), care se creeaz n mod explicit folosind comanda SQL CREATE INDEX pentru a mri viteza de acces la datele unei tabele. Coloanele care au ataate restricii PRIMARY KEY sau UNIQUE au indeci creai automat. Indecii pot fi unici sau nu. Crearea unui index unic se face cu comanda CREATE UNIQUE INDEX sau prin definirea unei restricii de integritate UNIQUE sau PRIMARY KEY.

CREATE OR REPLACE PUBLIC SYNONYM ang2 FOR angajati;

exist doar la nivelul utilizatorului care le-a creat


publice

tergerea sinonimelor:
private publice

sunt deinute de utilizatorul PUBLIC i sunt n mod automat vizibile tuturor utilizatorilor

DROP SYNONYM ang1;

DROP PUBLIC SYNONYM ang2;


16 17 18

Aspecte privind indexarea n bazele de date

Aspecte privind indexarea n bazele de date

Aspecte privind indexarea n bazele de date

absena sau prezena unui index nu influeneaz n niciun fel structura comenzilor SQL de regsire a datelor din baza de date; pentru creterea vitezei de execuie a operaiilor de jonciune, se recomand indexarea coloanelor care particip la join; dac se distrug indecii, aplicaia cu baze de date continu s funcioneze, dar cu performane mai mici; indecii sunt logic i fizic independeni de datele tabelelor cu care sunt asociai;

numrul indecilor ce pot fi creai pentru o tabel poate fi orict de mare, cu toate acestea numrul lor trebuie corelat cu tipul operaiile majoritare ce se vor executa asupra tabelei; un index se creeaz dup ce datele au fost ncrcate n tabel, altfel acesta va trebui actualizat de fiecare dat cnd se ncarc un rnd n tabel; Oracle ntreine n mod automat indecii creai, astfel nct n acetia se reflect toate actualizrile (adugri, modificri sau tergeri de nregistrri) efectuate asupra datelor tabelelor cu care sunt asociai.

Un index poate fi creat n mod implicit, odat cu activarea constrngerilor de integritate UNIQUE sau PRIMARY KEY sau explicit, prin folosirea comenzii SQL CREATE INDEX. Crearea implicit se face astfel:
CREATE TABLE angajati (marca NUMBER(3) PRIMARY KEY, CNP VARCHAR2(13) UNIQUE nume VARCHAR2(30));

Crearea explicit se face astfel:


CREATE INDEX idx_nume ON angajati(nume);

19

20

21

Aspecte privind indexarea n bazele de date

Tipuri de indeci
Tip index Descriere
Tipul de index creat la executarea unei comenzi standard CREATE INDEX. Un arbore B este un arbore n care pentru gsirea oricrei valori este necesar acelai numr de pai, indiferent de valoarea cutat. Index bazat pe coloanele comune ale unui cluster Tip de index folositor numai n cazul cutrii n arbore a unor valori exacte Se recomand atunci cnd numrul de valori distincte ale coloanei indexate este relativ mic (de exemplu, n cazul unei coloane care conine starea civil a unei persoane, unitatea de msur a unui produs etc.)

Grupri de tabele (clustere)


Clusterele sunt metode opionale de memorare a datelor unor tabele. Clusterele grupeaz mai multe tabele fizic memorate mpreun pentru c au mai multe coloane comune sau cel mai des sunt folosite mpreun. Coloanele de legtur ale tabelelor ntr-un cluster se numesc chei ale clusterului. Tabelele dintr-un cluster sunt stocate mpreun pentru a reduce numrul de operaii de I/O cu discul. Clusterul este o regrupare fizic a dou sau mai multe tabele, relativ la una sau mai multe coloane, cu scopul creterii performanelor.

Actualizarea unui index se face prin comanda SQL ALTER INDEX. Un index poate fi distrus atunci cnd: nu mai este necesar sau nu a adus performanele anticipate; aplicaia nu mai folosete indexul pentru regsirea datelor; indexul a devenit invalid sau spaiul su de memorie este prea fragmentat i trebuie distrus pentru a fi recreat; tergerea unui index se face prin comanda DROP INDEX.

Index de tip arbore B (B-tree index) Index de cluster (index de grup) Index cu cheie invers (reversekey index) Index de tip bitmap

22

23

24

Grupri de tabele (clustere)

Grupri de tabele (clustere)

Grupri de tabele (clustere)


1) Crearea clusterului

Cheia unui cluster este definit ca fiind coloana sau coloanele pe care tabelele grupate le au n comun. Cheia unui cluster nu trebuie confundat cu cheile primare ale tabelelor grupate. Valorile cheii clusterului sunt stocate o singur dat n schem, reducndu-se astfel spaiul de stocare necesar i procesrile suplimentare. Clusterul este un mecanism transparent aplicaiilor care utilizeaz tabelele acestuia. Datele din tabele sunt manipulate ca i cnd acestea ar fi stocate ntr-un tabel normal, ns n momentul interogrii se va observa o cretere semnificativ a performanelor.

Pentru a crea o tabel ntr-un cluster se parcurg n mod obligatoriu urmtorii pai:
1. 2. 3.

Pentru crearea clusterului se folosete comanda SQL CREATE CLUSTER n care trebuie specificate coloana sau grupul de coloane dup care sunt grupate tabelele. Sintaxa simplificat a comenzii de creare: CREATE CLUSTER nume_cluster (nume_coloana tip_data [, nume_coloana tip_data])

Se creeaz clusterul Se adaug tabelele la cluster Se creeaz indexul de cluster

Adaugarea tabelelor la cluster se poate face i dup ce indexul de cluster a fost creat.

Sintaxa complet a comenzii de creare:


CREATE CLUSTER nume_cluster (nume_coloana tip_data [, nume_coloana tip_data] ) [PCTFREE intreg] [PCTUSED intreg] [SIZE intreg] [TABLESPACE spatiu_tabel] [STORAGE parametrii_de_stocare]

25

26

27

Grupri de tabele (clustere)


2) Adaugarea tabelelor la cluster Dup crearea clusterului, adugarea tabelelor la cluster se face folosind comanda CREATE TABLE cu clauza CLUSTER: CREATE TABLE nume_cluster (nume_coloana tip_data [, nume_coloana tip_data]) CLUSTER nume_cluster

Grupri de tabele (clustere)


3) Crearea indexului de cluster Pentru coloanele cheie ale clusterului trebuie creat n mod explicit un index de cluster (index de grup). Indexul este utilizat pentru localizarea univoc a liniilor. Indexul de cluster trebuie creat naintea efecturii oricrei operaii de interogare sau actualizare asupra clusterului. Pentru crearea unui index de cluster se folosete comanda SQL CREATE INDEX cu opiunea ON CLUSTER: CREATE INDEX nume_index ON CLUSTER nume_cluster;

Exemplificare SQL-Oracle
Crearea clusterului sal_dept, cu indicarea gruprii dup coloanele cod_dept i cod_tara

CREATE CLUSTER sal_dept (cod_dept NUMBER(10), cod_tara NUMBER(10));


Adugarea tabelelor la clusterul sal_dept

Datorit faptului c tabelele clusterului folosesc alocarea de spaiu a acestuia, la folosirea comenzii CREATE TABLE cu opiunea CLUSTER nu trebuie specificai ali parametri de stocare. Nu se poate asocia un cluster unei tabele care exist deja. Dac se dorete totui acest lucru, se creeaz o nou tabel care va fi inclus n cluster i care va conine nregistrrile tabelei existente (folosind optiunea AS SELECT).
28

CREATE TABLE departament (cod_dept NUMBER(10), cod_tara NUMBER(10), nume_dept VARCHAR2(10), PRIMARY KEY(cod_dept, cod_tara) ) CLUSTER sal_dept(cod_dept, cod_tara);

CREATE TABLE salariat (cod_salariat NUMBER(10) PRIMARY KEY, nume VARCHAR2(10) NOT NULL, prenume VARCHAR2(10), data_nastere DATE, salariu NUMBER(10), cod_dept NUMBER(10), cod_tara NUMBER(10), FOREIGN KEY(cod_dept, cod_tara) REFERENCES departament(cod_dept,cod_tara)) CLUSTER sal_dept(cod_dept,cod_tara);

Crearea indexului pentru clusterul sal_dept


29

CREATE INDEX sal_dept_ind ON CLUSTER sal_dept;

30

Grupri de tabele (clustere)

CURSUL 12...

Comanda ALTER CLUSTER poate fi folosit pentru a modifica parametrii de stocare ai clusterului. Pentru distrugerea unui cluster se folosete comanda SQL DROP CLUSTER. Totui, folosind comanda de mai sus clusterul nu poate fi distrus dac exist tabele n el. Pentru a permite acest lucru se folosete clauza opional INCLUDING TABLES: DROP CLUSTER sal_dept INCLUDING TABLES; In plus, dac exist tabele din afara clusterului care conin restricii de integritate care se refer la chei din tabelele clusterului, acestea trebuie de asemenea eliminate. Pentru acest lucru se folosete clauza opional CASCADE CONSTRAINTS; DROP CLUSTER sal_dept INCLUDING TABLES CASCADE CONSTRAINTS;
31

Optimizarea cererilor de regsire a datelor n bazele de date

S-ar putea să vă placă și