Documente Academic
Documente Profesional
Documente Cultură
Obiectele unei BD
Obiective / Continut
Obiecte ale bazei de date.
Gestiunea tabelelor.
Constringeri. Vizualizari: Secvente: creare si folosire. Indexi: creare si folosire. Sinonime publice si private.
Obiectele unei BD
Obiect
Tabel
Descriere
Unitate de baza pentru stocare; alcatuit din
rinduri si coloane View Imaginea logica a datelor din una sau mai multe tabele Secventa Genereaza valori pentru chei primare
Index
Sinonim
Obiectele unei BD
Conventii de notare Un nume de obiect al bazei de date: trebuie sa inceapa cu o litera poate sa aiba o lungime de 1-30 caractere poate sa contina caracterele: A-Z, a-z, 0-9, _, $, # nu poate fi acelasi cu un alt nume de obiect detinut de acelasi utilizator nu poate fi un cuvint cheie Oracle
Obiectele unei BD
Trebuie specificat:
numele tabelei numele, tipul si latimea coloanei
Obiectele unei BD
Tabele utilizator Predefinit, o tabela este creata in schema utilizatorului curent. Tabelele apartinind altui utilizator nu sunt in schema utilizatorului curent. Pentru a referi tabela altui utilizator aceasta trebuie prefixata cu numele utilizatorului de care apartine.
Obiectele unei BD
Optiunea DEFAULT
data_ang DATE DEFAULT SYSDATE,
Permite specificarea unor valori initiale in cazul inserarii liniilor noi. Valorile valide sunt constantele, expresiile si functiile SQL. Valori, invalide sunt nume de alte coloane sau aliasuri de coloana. Tipul de date al valorii predefinite trebuie sa corespunda cu tipul de date al coloanei.
Obiectele unei BD
Tipuri de date
Tip de date VARCHAR2(size) CHAR(size) Descriere Sir de caractere de lungime variabila Sir de caractere de lungime fixa
NUMBER(p,s)
DATE LONG
Tip numeric
Data calendaristica Sir de caractere de lungime variabila pina la 2 gigabytes
CLOB
RAW and LONG RAW BLOB
BFILE
Obiectele unei BD
Crearea tabelei si inserarea de linii folosind o subinterogare din alt tabel. Numarul si tipul coloanelor trebuie sa se potriveasca cu numarul si tipul coloanelor din subinterogare.
Obiectele unei BD
Exemplu subinterogari
SQL> CREATE TABLE depart30 2 AS 3 SELECT marca, nume, sal*12 VENIT, data_ang 4 FROM angajat 5 WHERE nrdept = 30; Table created. SQL> DESCRIBE depart30 Name Null? ---------------------------- -------MARCA NOT NULL NUME VENIT DATA_ANG Type ----NUMBER(4) VARCHAR2(10) NUMBER DATE
Obiectele unei BD
ALTER TABLE
ALTER TABLE table ADD (column datatype [DEFAULT expr] [, column datatype]...);
ALTER TABLE table MODIFY (column datatype [DEFAULT expr] [, column datatype]...);
MARCA NUME VENIT DATA_ANG FUNCTIE --------- ---------- --------- --------- ------7698 BLAKE 34200 01-MAY-81 7654 MARTIN 15000 28-SEP-81 7499 ALLEN 19200 20-FEB-81 7844 TURNER 18000 08-SEP-81 ... 6 rows selected.
Obiectele unei BD
Se poate modifica tipul de date, latimea si valoarea predefinita a unei coloane. O schimbare a valorii predefinite a unei coloane are efect pentru inserarile ulterioare de linii.
Obiectele unei BD
Stergerea tabelelor
SQL> DROP TABLE depart30; Table dropped.
Toate datele si structurile din tabel sunt sterse. Toate tranzactiile aflate in desfasurare sunt comise. Toate indexii sunt stersi. Nu se poate restaura starea datelor anterioara comenzii.
Obiectele unei BD
Instructiunea RENAME redenumeste o tabela, vizualizare, secventa, un index sau sinonim. Utilizatorul trebuie fie proprietarul acelui obiect.
Obiectele unei BD
Obiectele unei BD
Comentarii la tabel
SQL> COMMENT ON TABLE angajat 2 IS Informatii angajati'; Comment created.
Se pot adauga comentarii unei tabele. Se pot vizualiza comentariile interogind Dictionarul de Date:
ALL_COL_COMMENTS USER_COL_COMMENTS ALL_TAB_COMMENTS USER_TAB_COMMENTS
Obiectele unei BD
Constringeri Permit mentinerea coerentei si integritatii datelor intr-o baza de date relationala. Forteaza reguli la nivel de tabela sau coloana. Interzic introducerea sau stergerea datelor care incalca relatiile dintre tabele. Constringeri Oracle:
NOT NULL UNIQUE KEY PRIMARY KEY FOREIGN KEY CHECK Obiectele unei BD
Sfaturi pentru crearea constringerilor O constringere poate avea un nume utilizator sau un nume date de server (SYS_Cn) Crearea unei constringeri:
atunci cind este creat tabelul dupa ce este creat tabelul
O constringere se poate defini la nivel de coloana sau la nivel de tabel. Se pot vizualiza constringerile in dictionarul de date.
Obiectele unei BD
Definirea constringerilor
CREATE TABLE [schema.]tabel (coloana tipdate [DEFAULT expr] [constringere_coloana], [constringere_tabel]);
CREATE TABLE angajat( marca NUMBER(4), nume VARCHAR2(10), nrdept NUMBER(7,2) NOT NULL, CONSTRAINT ang_marca_pk PRIMARY KEY (MARCA));
Obiectele unei BD
Obiectele unei BD
constringere NOT NULL (nici o linie nu contine o valoare null pentru aceasta coloana)
absenta constringerii NOT NULL (orice linie poate contine null pentru aceasta coloana)
Obiectele unei BD
Constringere UNIQUE
Constringere UNIQUE
DEPART
NRDEPT -----10 20 30 40 DENUMIRE ---------ACCOUNTING RESEARCH SALES OPERATIONS LOCALIT -------NEW YORK DALLAS CHICAGO BOSTON
Obiectele unei BD
Obiectele unei BD
Obiectele unei BD
ANGAJAT
MARCA NUME 7839 KING 7698 BLAKE ... ... COM 10 30 NRDEPT FOREIGN KEY
Insert into
7571 FORD 7571 FORD MANAGER MANAGER ... ... 200 200 9
Obiectele unei BD
Exemplu constringere FOREIGN KEY Poate fi definita la nivel de coloana sau la nivel de tabel.
SQL> CREATE TABLE ANGAJAT( 2 marca NUMBER(4), 3 nume VARCHAR2(10) NOT NULL, 4 functie VARCHAR2(9), 5 sef NUMBER(4), 6 data_ang DATE, 7 sal NUMBER(7,2), 8 com NUMBER(7,2), 9 nrdept NUMBER(7,2) NOT NULL, 10 CONSTRAINT ang_nrdept_fk FOREIGN KEY (nrdept) 11 REFERENCES depart (nrdept));
Obiectele unei BD
REFERENCES
identifica tabela si coloana de legatura din tabelul parinte
ON DELETE CASCADE
permite stergerea liniilor din tabelul copil atunci cind se sterg liniile corespondente din tabelul parinte
Obiectele unei BD
Constringere tip CHECK Defineste o conditie pe care fiecare linie trebuie sa o satisfaca. Expresii permise:
comparatii cu alte valori referiri la pseudocoloane: CURRVAL, NEXTVAL, ROWNUM apeluri de functii sistem: SYSDATE, UID, USER
..., nrdept NUMBER(2), CONSTRAINT ang_nrdept_ck CHECK (NRDEPT BETWEEN 10 AND 99),...
Obiectele unei BD
Instructiunea permite adaugarea sau stergerea unei constringeri (nu si modificarea ei). Se pot activa sau dezactiva. Se poate introduce o constringere NOT NULL prin optiunea MODIFY.
Obiectele unei BD
Adaugarea unei constringeri Se adauga o constringere de tip FOREIGN KEY pentru tabelul ANGAJAT indicind faptul ca se poate adauga un manager numai daca el este un angajat deja existent in tabelul ANGAJAT.
SQL> ALTER TABLE angajat 2 ADD CONSTRAINT ang_sef_fk 3 FOREIGN KEY(sef) REFERENCES angajat(marca); Table altered.
Obiectele unei BD
Stergerea unei constringeri Stergerea constringerii tip FOREIGN KEY pentru manageri din tabelul ANGAJAT.
SQL> ALTER TABLE 2 DROP CONSTRAINT Table altered. angajat angajat_sef_fk;
Stergerea constringerii tip PRIMARY KEY din tabela DEPART si stergerea constringerii asociate de tip FOREIGN KEY din tabela ANGAJAT.
SQL> ALTER TABLE depart 2 DROP PRIMARY KEY CASCADE; Table altered.
Obiectele unei BD
Dezactivarea unei constringeri Se foloseste clauza DISABLE in instructiunea ALTER TABLE pentru a dezactiva o constringere. Se poate folosi optiunea CASCADE pentru a dezactiva toate constringerile dependente.
SQL> ALTER TABLE 2 DISABLE CONSTRAINT Table altered. ANGAJAT ang_marca_pk CASCADE;
Obiectele unei BD
Se foloseste clauza ENABLE in instructiunea ALTER TABLE pentru a activa o constringere. Cind se activeaza o constringere de tip PRIMARY KEY sau UNIQUE se creeaza automat un index PRIMARY KEY sau UNIQUE.
SQL> ALTER TABLE 2 ENABLE CONSTRAINT Table altered. angajat ang_marca_pk;
Obiectele unei BD
Obiectele unei BD
Vizualizari O vizualizare (view) reprezinta o imagine virtuala a datelor stocate in unul sau mai multe tabele. Avantajele view-urilor:
Restrictioneaza accesul la date. Prezinta interogarile complexe intr-o forma accesibila pentru utilizatori. Permite independenta datelor. Prezinta diferite imagini ale aceluiasi set de date.
Obiectele unei BD
Trasaturi
Numar de tabele Contine functii
View Simplu
Unu Nu
View Complex
Unu / mai multe Da
Nu
Da
Da
Nu tot timpul
Obiectele unei BD
Un view se creaza folosind instructiunea CREATE VIEW cu o subinterogare inclusa. Subinterogarea poate fi oricit de complexa. Subinterogarea nu poate contine clauza ORDER BY. Se pot defini aliasuri de coloana pentru subinterogare. Aceste aliasuri devin coloanele vizualizarii.
Obiectele unei BD
Modificarea unui view Modificarea unui view se face prin comanda CREATE OR REPLACE VIEW. Coloanele vizualizarii se pot specifica intre paranteze dupa numele view-ului si trebuie sa fie in aceeasi ordine ca si coloanele subinterogarii. Se poate defini o vizualizare complexa ce contine functii de grup si afiseaza date din mai multe tabele.
Obiectele unei BD
Reguli pentru operatii DML Se pot face operatii DML (INSERT, UPDATE, DELETE) pe vizualizari simple. Nu se poate sterge o linie dintr-o vizualizare daca aceasta contine:
Functii de grup Clauza GROUP BY Cuvintul cheie DISTINCT
Obiectele unei BD
Reguli pentru operatii DML Nu se poate actualiza o vizualizare daca aceasta contine:
una dintre conditiile anterioare coloane definite de expresii pseudocoloana ROWNUM
Obiectele unei BD
Obiectele unei BD
Tabel
View
Obiectele unei BD
Secventa
Genereaza automat numere unice. Poate fi un obiect partajat. De obicei este folosit pentru genera valori de chei primare. Inlocuieste cod de aplicatie Imbunatateste accesul la valorile generate daca acestea sunt stocate in memorie.
Obiectele unei BD
Crearea secventei
CREATE SEQUENCE sequence [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}];
Obiectele unei BD
Exemplu secventa
S-a definit o secventa DEPT_NRDEPT care poate fi folosita la generarea valorilor pentru cheia primara a tabelului DEPT.
SQL> CREATE SEQUENCE dept_nrdept 2 INCREMENT BY 1 3 START WITH 91 4 MAXVALUE 100 5 NOCACHE 6 NOCYCLE; Sequence created.
Obiectele unei BD
Dictionar de date
SQL> SELECT 2 3 FROM sequence_name, min_value, max_value, increment_by, last_number user_sequences;
O secventa poate fi vizualizata in view-ul de dictionar USER_SEQUENCES. Coloana LAST_NUMBER afiseaza urmatoarea valoare disponibila a secventei.
Obiectele unei BD
NEXTVAL si CURRVAL Pseudocoloana NEXTVAL intoarce urmatoarea valoare disponibila a secventei. Valoarea returnata este unica chiar si in cazul in care secventa este folosita de mai multi utilizatori. Pseudocoloana CURRVAL returneaza valoarea curenta a secventei. Trebuie interogata pseudocoloana NEXTVAL inainte ca pseudocoloana CURRVAL sa aiba o valoare.
Obiectele unei BD
Exemplu secventa
SQL> INSERT INTO 2 VALUES 3 1 row created. depart(nrdept, denumire, localit) (dept_nrdept.NEXTVAL, 'MARKETING', 'SAN DIEGO');
Obiectele unei BD
Folosirea secventelor Optiunea CACHE de la definirea secventei permite imbunatatirea accesului la valorile generate de secventa. Se pot obtine goluri intre valorile generate de secventa daca:
apare un ROLLBACK sistemul pica secventa este folosite si in alte tabele
Urmatoarea valoare a secventei poate fi vizualizata din USER_SEQUENCES daca aceasta a fost definita cu optiunea NOCACHE.
Obiectele unei BD
Se pot modifica valorile de mimim, maxim si increment, precum si optiunile CACHE si CYCLE.
Obiectele unei BD
Reguli de modificare a secventelor Utilizatorul poate modifica o secventa care ii apartine sau pentru care are privilegiul de ALTER. Numai valorile ulterioare ale secventei sunt afectate. Pentru a starta o secventa de la un numar diferit, aceasta trebuie stearsa si recreata. Sunt executate validari suplimentare.
Obiectele unei BD
Stergerea secventei
SQL> DROP SEQUENCE dept_nrdept; Sequence dropped.
O secventa este stearsa prin comanda DROP SEQUENCE. O data stearsa, secventa numai poate fi referita.
Obiectele unei BD
Index Un obiect al schemei unui utilizator. Este folosit de serverul Oracle pentru a mari viteza de acces la datele stocate. Reduce lucurul cu discul prin metode specifice de cautare a datelor. Este independent de tabela pe care o indexeaza. Este folosit si gestionat automat de serverul Oracle.
Obiectele unei BD
Crearea unui index In mod automat: un index unic este creat automat cind se defineste o constringere de tip PRIMARY KEY sau UNIQUE KEY pentru o tabela.
Manual: utilizatorii pot creea indexi neunici pe coloane pentru a imbunatati viteza de acces la date.
Obiectele unei BD
Sfaturi pentru crearea indexilor Coloana din index este des utilizata intr-o clauza WHERE sau intr-o conditie de join Coloana contine o paleta larga de valori. Coloana contine multe valori NULL. Doua sau mai multe coloane sunt folosite impreuna intr-o clauza WHERE sau intr-o conditie de join. Tabelul este mare iar interogarile nu extrag mai multe de 2-4% din linii.
Obiectele unei BD
Nu creati un index daca: tabelul nu contine multe linii coloanele nu sunt folosite des in conditii ale interogarilor majoritatea interogarilor nu extrag mai mult de 2-4% din liniile tabelului tabelul este actualizat frecvent
Obiectele unei BD
View-uri de dictionar Se pot verifica indexii creati in view-urile de dictionar. USER_INDEXES contine numele indexilor USER_IND_COLUMNS numele indexului, tabelei si coloanei.
SQL> 2 3 4 5 SELECT FROM WHERE AND ic.index_name, ic.column_name, ic.column_position col_pos,ix.uniqueness user_indexes ix, user_ind_columns ic ic.index_name = ix.index_name ic.table_name = ANGAJAT';
Obiectele unei BD
Pentru a sterge un index utilizatorul trebuie sa fie proprietarul acestuia sau aiba privilegiul DROP ANY INDEX.
Obiectele unei BD
Sinonime
Nume alternative pentru obiecte. Simplifica accesul la diferite obiecte ale bazei de date. Poate referi printr-un nume simplu un obiect detinut de alt utilizator. Scurteaza numele lungi ale obiectelor.
Obiectele unei BD
Crearea sinonimelor
CREATE [PUBLIC] SYNONYM synonym FOR object;
Se defineste prin comanda CREATE SYNONYM. Daca se introduce clauza PUBLIC sinonimul este accesibil de orice utilizator prin numele sau.
Obiectele unei BD
Dictionar de Date Elementul principal care deosebeste un sisteme relational de baze de date. Consta intr-un set de tabele si vizualizari care furnizeaza un ghid de referinta accesibil in citire despre baza de date. Contine:
numele utilizatorilor drepturile utilizatorilor obiectele bazei de date (tabele,view-uri, indexi, sinonime etc) constringeri informatii statistice Obiectele unei BD
Acces la Dictionarul de Date Utilizatorii prin intermediul interogarilor (SELECT) - citire Sistemul de gestiune al bazei de date: actualizeaza continutul in functie de structurile obiectelor bazei de date, drepturi si alte date. Continutul unui Dictionar de Date:
Tabele - sunt definite la crearea bazei de date si nu sunt direct accesibile utilizatorilor. Vizualizari - contin informatii inteligibile utilizatorilor
Obiectele unei BD
Vizualizari sistem
USER_xxxxx - contin informatii despre obiectele utilizatorului ALL_xxxxx - informatii despre toate obiectele bazei de date DBA_xxxxx - informatii necesare administratorilor bazei de date DICTIONARY - lista obiectelor bazei de date
Obiectele unei BD
Constringeri:
NOT NULL, UNIQUE, CHECK PRIMARY KEY, FOREIGN KEY
Obiectele unei BD
Concluzii Vizualizari:
imagine virtuala a datelor crearea si stergerea unui view operatii DML cu un view
Secvente:
generator de valori numerice folosite pentru coloane chei primare accesarea unei secvente modificarea si stergerea unei secvente
Obiectele unei BD
Concluzii Indexi:
obiecte ce imbunatatesc accesul la date impliciti sau expliciti trebuie respectate anumite reguli pentru a imbunatati performanta interogarilor
Sinonime:
nume alternative pentru obiecte ale bazei de date pot fi accesate in mod simplu de alti utilizatori
Dictionar de Date:
element fundamental al serverului relational de date vizualizari de sistem
Obiectele unei BD