Documente Academic
Documente Profesional
Documente Cultură
Tematic curs
Proiectarea bazelor de date relaionale
Normalizare i denormalizare Modelul entitate-asociere, diagrame UML Constrngeri i declanatoare View-uri Indeci
Procesarea interogrilor Managementul tranzaciilor OLAP, Baze de date distribuite, NoSQL, Data Mining
Obiective
Implementarea constrngerilor
Constrngeri de integritate Declanatoare
View-uri
Rol i definire Tratarea comenzilor de modificare
Tipuri
Non-null Chei Integritate referenial Bazate pe atribut i bazate pe uplu Aseriuni generale
4
Realizare
Verificare dup fiecare modificare Verificare la final de tranzacie
Aplicaie
sID uNume specializare decizia
Universitate
uNume ora nscrieri
Aciuni speciale:
la teregere din S: ON DELETE RESTRICT (implicit) | SET NULL | CASCADE la actualizri pe S.B: ON UPDATE RESTRICT (implicit) | SET NULL | CASCADE
Aseriuni
create assertion Key check ((select count(distinct A) from T) = (select count(*) from T))); create assertion ReferentialIntegrity check (not exists (select * from Aplica where sID not in (select sID from Student))); create assertion AvgAccept check (3.0 < (select avg(medie) from Student where sID in (select SID from Aplica where decizie = DA')));
11
12
DEMO
(fiierul constrngeri.sql)
13
Declanatoare (dinamice)
Monitorizeaz schimbrile n baza de date, verific anumite condiii i iniiaz aciuni Reguli eveniment-condiie-aciune
Introduc elemente din logica aplicaiei n SGBD Foreaz constrngeri care nu pot fi exprimate altfel Sunt expresive Pot ntreprinde aciuni de reparare implementarea variaz n funcie de SGBD, exemplele de aici urmresc standardul SQL
14
Declanatoare Implementare
Create Trigger nume Before|After|Instead Of evenimente [ variabile-refereniate ] [ For Each Row ] -- actiune se execut pt fiecare linie modificat (tip row vs. statement) [ When ( conditie ) ] -- ca o condiie WHERE din SQL actiune -- n standardul SQL e o comand SQL, n SGBD-uri poate fi bloc procedural
evenimente:
INSERT ON tabel DELETE ON tabel UPDATE [OF a1,a2,] ON tabel
variabile-refereniate (dup declarare pot fi utilizate n condiie i aciune): OLD ROW AS var pentru ev. DELETE, UPDATE doar pentru triggere de NEW ROW AS var pentru ev. INSERT, UPDATE tip row OLD TABLE AS var NEW TABLE AS var
15
16
nu e posibil definirea unui declanator echivalent de tip statement are un comportament nedeterminist
17
Declanatoare Capcane
mai multe declanatoare activate n acelai timp: care se execut primul? aciunea declanatorului activeaz alte declanatoare: nlnuire sau auto-declanare ce poate duce la ciclare
18
SQLite
doar tip row (fr old/new table) se execut imediat, dup modificarea fiecrei linii (abatere comportamental de la standard)
MySQL
doar tip row (fr old/new table) se execut imediat, dup modificarea fiecrei linii (abatere comportamental de la standard) permite definirea unui singur declanator / eveniment asociat unui tabel
Oracle
implementeaz standardul: row+statement cu modificri uoare de sintax tipul instead-of e permis numai pt. view-uri permite inserarea de blocuri procedurale introduce restricii pentru a evita ciclarea aprofundate la laborator
19
DEMO
(fiierul declansatoare.sql)
20
View-uri
View_1 View_2 View_3 View_n
Conceptual level
Internal level
physical storage
21
Motivaie
ascunderea unor date fa de unii utilizatori uurarea formulrii unor interogri acces modular la baza de date aplicaiile reale tind s utilizeze foarte multe view-uri
22
Definire i utilizare
Un view este n esen o interogare stocat formulat peste tabele sau alte view-uri Schema view-ului este cea a rezultatului interogrii Conceptual, un view este interogat la fel ca orice tabel n realitate, interogarea unui view este rescris prin inserarea interogrii ce definete view-ul urmat de un proces de optimizare specific fiecrui SGBD Sintaxa Create View numeView [a1,a2,] As <fraz_select>
23
Modificarea view-urilor
View-urile sunt n general utilizate doar n interogri ns pentru utilizatorii externi ele sunt tabele: trebuie s poat suporta comenzi de manipulare/modificare a datelor Soluia: modificri asupra view-ului trebuie s fie rescrise n comenzi de modificare a datelor n tabelele de baz
de obicei este posibil uneori exist mai multe variante
Exemplu
R(A,B),V(A)=A(R), Insert into V values(3) R(N),V(A)=avg(N), update V set A=7
24
standardul SQL prevede existena de view-uri inerent actualizabile (updatable views) dac:
view-ul e creat cu comand select fr clauza DISTINCT pe o singur tabel T atributele din T care nu fac parte din definiia view-ului pot fi NULL sau iau valoare default subinterogrile nu fac referire la T nu exist clauza GROUP BY sau alt form de agregare
25
View-uri materializate
Create Materialized View V [a1,a2,] As <fraz_select> are loc crearea unui nou tabel V cu schema dat de rezultatul interogrii uplele rezultat al interogrii sunt inserate n V interogrile asupra lui V se execut ca pe orice alt tabel Avantaje:
specifice view-urilor virtuale + crete viteza interogrilor
Dezavantaje:
V poate avea dimeniuni foarte mari orice modificare asupra tabelelor de baz necesit refacerea lui V problema modificrii tabelelor de baz la modificarea view-ului rmne
26
27
DEMO
(fiierul views.sql)
28
Bibliografie
Hector Garcia-Molina, Jeff Ullman, Jennifer Widom: Database Systems:The Complete Book (2nd edition), Prentice Hall; (June 15, 2008) Oracle:
http://docs.oracle.com/cd/B28359_01/server.111/b28310/general0 05.htm#i1006732 http://www.oracle-base.com/articles/9i/MutatingTableExceptions.php
29