Sunteți pe pagina 1din 23

IBD TEORIE

1. Concepte introductive ( Curs 1)


1.1 Definitii de concepte : baza de date, sistem de gestiune a bazelor de date

Baza de date -o colectie larga , integrata , de date corelate logic si stocate pentru a mentine info si a oferi
suport pentru analiza (consultare/interogare).
Bazele de date permit
Modelarea lumii reale : entitati si relatii
Date - fapte inregistrabile din lumea reala ce poseda semnificatie intrinseca
domeniul BD acoper largi surse de date, cu multe concepte noi(Cutare Web, Data mining, Baze de
Date stiinifice i medicale)
SGBD sistem software - colectie de programe destinat crearii, stocarii si managementului bazelor de date
Ofera un mediu convenabil si eficient de utilizare
Gestioneaza diverse aspecte de proiectare/implementare a sistemelor cu BD
Permite crearea BD , specificarea schemei sale
Ofera suport pentru interogarea si modificarea eficienta a datelor
Mentine securitatea datelor la accidente sau acces neautorizat
Controleaza accesul concurent la date

1.2 Argumentati alegerea unui sistem de baze de date vs. sistem de fisiere in dezvoltarea unei
aplicatii ce presupune volum mare de date

Sistem de fisiere
-LIMITARI
Redundanta datelor si inconsistenta
- Formate multiple de fisiere, duplicarea informatiei in fisiere multiple , stergeri si actualizari dificile
ale datelor
Dificultate in accesul la date
- Pentru orice nou task de acces la date = >un nou program
- Cautarea dificila a datelor
- Pentru orice interogare cod distinct
Nu asigura atomicitatea actualizarilor
- Caderi in sistem determina inconsistente in BD, actualizari partiale, intrerupte
Nu ofera acces concurent mai multor utilizatori
- Nu exista controlul concurentei, datele necesita protectie datorita utlizatorilor multiplii
Probleme de Securitate
- Dificil de oferit acces diferentiat doar la anumite categorii de date / utilizator
- anumite date pot fi pierdute, operatii neterminate complet
Nu exista API/GUI acces evoluat la datele persistate
Nu permite modelari complexe
- S fisiere unidimensional vs SBD - multidimensional

PRO BD
Controlul redundantei datelor
Restrictionarea accesului neautorizat
Structuri de stocare adecvate
Procesare interogari eficienta
Suport pentru Backup & Recovery
Interfete multiutilizator
Reprezentarea de relatii complexe intre date
Specificarea de constrangeri de integritate
Permite interferente si actiuni bazat pe seturi de reguli
Suport pentru standardizare
Reducerea timpului de dezvoltare a aplicatiilor
Disponibilitatea informatiei

CONTRA BD
Investitie initiala ridicata in hardware, software , training
Generalitatea oferita de SGBD pentru definirea si procesarea datelor este peste nivelul cerintelor
Complexitate indusa de securizare, controlul concurentei, recuperare la caderi

Cand SE utilizeaza BD
Este necesara rezolvarea persistentei datelor
Volume mari de date persistate
Date structurate
Acces concurent si/sau distribuit pt mai multi useri
Integritatea datelor
Securizarea accesului
Cand NU SE utilizeaza BD
Investitie mare - costuri
Aplicatia e simpla ,definita si nemodificabila
Nu e necesar acces multiutilizator

1.3 Niveluri de abstractizare a unui sistem cu BD

Nivel fizic (intern) : descrie modul in care sunt stocate datele (fisiere si indecsi)
Nivel logic (conceptual) : descrie datele stocate in BD si relatiile dintre acestea.
Nivelul vederi (extern): descrie modul in care utilizatorii / programele vad datele
- ofera o modalitate prin care pot fi ascunse, detaliile referitoare la tipul datelor, informatiile
specifice de securitate.

1.4 Independenta logica vs independenta fizica .Modelul cu trei straturi

Independenta - abilitatea de a modifica un nivel in arhitectura BD, fara a afecta celelalte niveluri ale
schemei BD
Independenta logica capacitatea de a modifica schema conceptuala fara a afecta vederea externa
(programele de aplicatie, necesare accesului la date)
- Vederile (view n modelul relaional/tabel virtual/schema extern) asigur posibilitatea modificrii
structurii datelor (schema conceptual), acest lucru fiind ascuns aplicaiilor ce acceseaza datele
Independenta fizica abilitatea de a modifica schema interna fara a modifica vederea conceptuala
- Schema conceptual asigur posibilitatea modificrii aranjrii datelor pe suport secundar sau a
indecilor, acest lucru fiind de asemenea ascuns aplicaiilor

Modele de date:
Conceptuale nivel inalt, semantic ofera concepte apropiate de modul in care utilizatorii percep
datele
Fizice nivel jos, intern ofera concepte ce descru detaliile modului in care datele sunt stocate in
sistem
De Implementare reprezentationale ofera concepte interemdiare, folosite der SGBD comerciale (de
ex. Relational)
1.5Funciile unui SGBD

Transformarea datelor
- Datele introduse de utilizator nu au ntotdeauna structura identic cu cea definit n baza de date
(conversii automate de tip de date la tipul suportat de SGBD)
Gestiunea aplicaiilor (crearea de aplicatii de acces la date)
- Limbaj de descriere a datelor ( LDD) structura de date
- Limbaj de manipulare a datelor (LMD) accesul /utilizarea datelor
Importul i exportul datelor
- Conversia datelor pentru prelucrarea cu alt SGBD sau cu aplicaii tere (de ex. Excel, CSV, MS-
SQL to MySQL. Etc.)
Controlul securitii datelor
- Care sunt utilizatorii ce au acces la date
- La ce date are acces fiecare utilizator
- Ce operaii se pot efectua de fiecare utilizator cu datele la care are acces
Asigurarea integritii datelor
- Restricii de integritate, de ex. SGBD-ul poate asigura c vrsta unei 3oncurre la introducerea n BD
este cuprins ntre x si y (tip CHECK)
Controlul accesului 3oncurrent la date
- Fiecare utilizator are impresia c lucreaz de unul singur (serializarea operaiilor de acces la date)
Gestiunea copiilor de siguran i a recuperrii datelor (pentru situatii de cadere in sistem exista
solutii de tip backup/restore de date )

1.6 Componentele unui SGBD si utilitatea lor


DDL- Limbaj de definire a schemei bazei de date- specifica structura de stocare si metodele de acces
utilizate
Compilatorul DDL genereaza un set de tabele stocate in dictionarul de date
Un dictionar de date contine metadate (date despre date)
Schema BD ( si cheile primare)
Constrangeri de integritate ( tip de date, domeniu de valori)
Constrangeri de domeniu
Integritate referentiala (constrangeri aplicabile referintelor intre tabele)
Asertiuni ( declaratii de valori permise) asupra datelor
Autorizari de acces la date

DML- Limbaj pentru a accesa si manipula datele organizate conform unui anumit model de date
(cunoscut sub numele de limbaj query - de interogare a datelor)
o Clase de limbaje DML :
Nivel inalt (nonprocedural - SQL)
Declarativ sunt specificate datele cerute insa fara a specifica modul de acces
Permit Operatii cu BD complexe
Nivel jos (procedural)
Utilizatorul specifica ce date sunt cerute si cum pot fi accesate
Integrat in limbaje de programare de uz general(ex. JDBC Java database acces
connectivity in Java)

Actori in sisteme cu BD
Utilizatori diferentiati prin modul in care interactioneaza cu sistemul:
Programatorii de aplicatii interactiuni cu sistemul prin apeluri DML ( SQL, SQL incapsulat in
JavaJSP,ASP..)
Utilizatori sofisticati formuleaza interogari performante intr-un limbaj specializat SQL
Administrator de baza de date gestioneaza aspecte legate de mentinerea bazei de date (schema,
securizare acces, modificari de nivel fizic indexare)
Utilizatori de sistem invoca programele de aplicatii (Ex : acces la BD din Web , sisteme ATM)
1.7 Responsabilitatile administratorului unei baze de date
Definirea schemei conceptuale si fizice a BD
Specificarea constrangerilor de integritate
Definirea structurii de stocare si a metodelor de acces la date
Modificari in schema si organizarea fizica a datelor
Asigurarea accesului securizat pentru diversi utilizatori ai BD (politici de securitate si autorizare)
Monitorizare performante, responsabilitati in schimbarea diverselor cerinte pe masura ce bazele de date
evolueaza (database tuning)

2.Modelarea conceptuala a datelor EER/UML ( Curs 3)


2.1 Etapele proiectarii unei aplicatii cu baze de date
1. Analiza cerintelor
Identificarea cerintelor utilizator- ce urmeaza a fi transpuse in BD.
Datele ce vor fi stocate in baza de date
Procese si reguli de business specifice ( tranzactii, proc.stocate), triggere
Ce clase de aplicatii vor utiliza BD, ce tipuri de utilizatori
Frecventa anumitor clase de operatii si cerinte de performanta de ex. limite de timp de
executie/raspuns
2. Proiectare conceptuala
- Model de nivel inalt, inglobeaza concepte, incapsuleaza cerintele specifice datelor.
- Modelele ER (entitate- relatie) /EER, UML
- Ofera modelarea precisa , relativ simpla a datelor si translatare catre modele acceptate de SGBD
-Este un proces top down, se specifica entitatile si apoi se construieste modelul prin definirea de noi
entitati, atribute si asocieri ale acestora
-Exista si o abordare bottom up normalizarea, ce presupune identificarea atributelor , apoi utilizarea
de tehnici bazate pe dependente prin care acestea pot fi grupate pentru a genera relatii.
3. Proiectarea logica
Presupune alegerea unui model specific de date ( al unui SGBD) si a unui SGBD (MS SQL,
MySQL, Oracle, IBM DB2) necesar implementarii
Translatarea proiectarii conceptuale la un model de date suportat de SGBD => modelul
relational (sau nonrelational..exista si alte modele de nivel logic de ex. XML)
Realizeaza modelarea informatiei bazat pe caracteristicile modelului logic ( de ex. specificarea
de chei, domenii de atribute, chei straine si alte constrangeri)
Proiectarea logica presupune si rafinarea ulterioara a schemei BD.
Restructurarea schemei relationale pentru a asigura anumite proprietati, pentru a elimina anomaliile si
redundantele de date , proces ce are la baza teoria normalizarilor unei baze de date.
Este un proces non subiectiv , RIGUROS (comparativ cu analiza cerintelor si proiectarea
conceptuala), exista concepte si algoritmi in acest sens
4. Proiectarea fizica
Definirea structurii fizice a bazei de date.
Crearea setului de tabele bazat pe modelul relational
Crearea de indecsi pentru acces. Se iau in considerare elemente de incarcare - performanta
accesului la date (anumite date sunt mai frecvent accesate)
Implementarea constrangerilor si a restrictiilor de securitate
Utilizatori si grupuri - schema externa de acces alaturi de privilegiile de acces (proiectare-
implementare)
Partitionarea si distributia datelor ( pe mai multe servere)
Dezvoltarea de aplicatii de acces la date
Poate presupune reproiectarea a anumitor parti din schema bazei de date
5. Proiectarea aplicatiei si elemente de securitate
6. Testare si mentenanta
2.2 Explicati semnificatia unei ierarhii tip ISA ( specializare/generalizare) intre entitati ale
modelului ER
Modelul ER extins (EER) include concepte OO si anume:
Superclase si subclase
Specializare si generalizare
Agregare si compozitie.
Aceste constructii permit o modelare mai precisa a sistemelor care sunt prin natura domeniului orientate obiect ,
de ex. sisteme CAD/CAM, sisteme GIS.

Cazuri de aplicabilitate EER


mostenirea atributelor reduce utilizarea de null-uri
Subclasele pot fi utilizate in mod explicit pentru a modela si numi seturi de entitati ce participa in
asocieri

Subclasele si superclasele sunt create utilizand generalizarea/specializarea ( relatia ISA)

Specializarea procesul de creare a unor subclase specializate ale unei anumite superclase
Proces top-down se porneste cu o clasa generala si se subdivide in clase mai specializate
Clasele specializate pot contine propriile atribute, atributele comune tuturor subclaselor raman in
superclasa
Generalizarea procesul de creare a unei superclase mai generala din subclasele existente
Proces bottom up se porneste cu clase specializate si se incearca determinarea unei clase generale
ce contine atributele comune

3.Modelul Relational ( Curs 2)

3.1 Conceptul de cheie in modelul relational. Tipuri de chei ( super, candidat, primara, straina)

In modelul relational, informaia este reprezentat ca relaii ntre valori. Relaia (reprezentat ca o
tabel) este unica unitate de organizare a datelor. Relaiile sunt construite cu ajutorul cheilor.
Super - Cheie a unei relatii - un subset al atributelor relatiei ce satisface proprietatea de identificare
unica pentru fiecare tupla a relatiei prin valorile atributelor ce compun cheia
Cheie candidat - este o super cheie minimala (pentru aceeasi entitate pot exista mai multe atribute cu
rol de cheie).Pentru orice relatie se desemneaza dupa anumite criterii o cheie privilegiata din setul
cheilor candidat ca si cheie primara (distinctia intre aceasta si celelalte este doar operationala)
Cheia primara este cea utilizata din setul de chei candidate pentru identificarea unica a tuplelor
relatiei
Cheie straina - set de atribute dintr-o relatie ce refera o cheie primara din alta relatie

3.2 Tipuri de constrangeri :de domeniu, de integritate a entitatilor, de chei ,de integritate
referentiala.

Constrangeri de domeniu
- specifica faptul ca fiecare atribut A trebuie sa fie atomic si din domeniul dom(A).
Constrangeri de integritate a entitatilor
- Datele incorecte nu pot fi stocate in baza de date
- Valorile cheii primare nu pot fi nule
- Atributele ce nu contin valori NULL pot fi specificate prin intermediul constrangerii NOT NULL
Constrangeri de chei
- Elementele unui set sunt distincte = > tuplele relatiei sunt distincte => doua tuple nu poseda acelasi
set de valori pentru atributele sale
t1[SK] t2[SK]
Constrangeri de integritate referentiala
- Specificate intre doua relatii, utilizate pentru a mentine consistenta intre tuplele relatiilor
- tupla dintr-o relatie ce refera o tupla din alta relatie trebuie sa refere o tupla existent
- Cheia straina asigura integritatea referentiala

3.3 Definiti notiunile : schema unei BD relationale, instanta unei relatii, cardinalitate, gradul
unei relatii

Schema unei BD descrierea unei colectii particulare de date folosind un anumit model de date
Reflecta anumite aspecte: numele , tipul articolelor de date, anumite constrangeri
Este specificata la definirea unei noi baze de date, se modifica relativ rar
Meta-date = date despre date , sau catalogul bazei de date
Diagrama schemei : conventie de reprezentare a schemei
utilizeaz un limbaj de definire a datelor (DDL Data Definition Language).
Schema fizica - specific detalii suplimentare legate de stocarea datelor ( tip, dimensiune , structura de
fisiere, mod de organizare a acestora
Schem logic (conceptuala) , descrie datele stocate n BD n termenii (conceptele si abstractiunile)
specifice modelului de date al SGBD-ului utilizat.

Instanta unei relatii - reprezinta valorile curente ale datelor pentru o relatie (specificate prin
tabela)
o Un element t al relatiei r este o tupla (reprezentat printr-o linie in tabela relatiei)

Cardinalitate unei relatii = numarul de linii din instanta curenta

Gradul unei relatii=numrul de atribute ale schemei acelei relatii (n)

3.4 Enuntati sintaxa si descrieti modul de evaluare pentru diferite tipuri de join
Join este o operaie definit pe dou relaii R1 i R2. Relaia rezultat R3 va fi construit prin concatenarea unor
tupluri din R1 cu tupluri din R2 care satisfac o anumit condiie (condiia de jonciune - ) specificat explicit
n cadrul relaiei. Condiia de jonciune - este o expresie logic (predicat) specificat asupra atributelor
relaiilor R1 i R2.
Sintaxa: THETA - JOIN (R1, R2; - expresie) - rezultatul este o relaie.
EQUI JOIN este un caz particular al lui THETA JOIN , cnd este egalitate.
Sintaxa: EQUI - JOIN (R1, R2; - expresie) - rezultatul este o relaie.
NATURAL JOIN este o jonciune pe egalitate (EQUI JOIN) pentru toate atributele cu acelai
nume din cele dou relaii, urmat de o proiecie pe reuniunea atributelor celor dou relaii.
Sintaxa: NATURAL - JOIN (R1, R2; atribut(e) jonciune*) - rezultatul este o relaie.
SEMI JOIN - este jonciunea dintre dou relaii R1 i R2 , urmat de o proiecie pe atributele relaiei
R1. Semi jonciunea conserv atributele unei relaii participante la jonciune (R1).
Sintaxa: SEMI - JOIN (R1, R2; - expresie) - rezultatul este o relaie.
OUTER JOIN. Jonciunea dintre dou relaii R1 i R2 poate conduce la pierdere de tupluri, dac
relaiile participante la jonciune nu au proiecii identice pe atributul de jonciune, adic nu au aceleai
valori n relaiile care se joncioneaz. Relaia rezultat R3 conine jonciunea natural dintre R1 i R2, la
care se adaug tuplurile din R1 i R2, care nu au participat la jonciune. n aceste tupluri se va atribui
valorea null pentru atributele relaiei corespondente.
Sintaxa: OUTER - JOIN (R1, R2; atribut(e) jonciune) - rezultatul este o relaie.

3.5 Definitia si exemplificarea unei vederi

Vederile sunt relatii virtuale ce pot fi definite peste un model logic existent.
CREATE VIEW CustomerCD AS
Select Customer.customerID, Customer.name, CD.name
FROM Customer, Order, CD
WHERE Customer.customerID=Order.customerID and Order.cdID=CD.cdID

3.6 Definitia si exemplificarea unei proceduri stocate

Proceduri stocate = proceduri care implementeaza o parte din algoritmul de calcul al aplicatiilor si care
sunt memorate in BD, la fel ca si alte obiecte ale BD

DELIMITER //
DROP PROCEDURE IF EXISTS SP_Media
CREATE PROCEDURE SP_Media(out media float, in disciplina varchar(4))
BEGIN
SELECT AVG(nota) INTO media
FROM DISCIPLINE,EXAMENE
WHERE discipline.IdDiscipline=examene.IdDiscipline and Acronim=disciplina;
END //
DELIMITER

Apel: call SP_Media(@media,PBD);

3.7 Definita si exemplificarea unui trigger

Trigger = procedura stocata speciala, care este executata automat atunci cand se efectueaza operatii de
actualizare a relatiilor (INSERT,DELETE,UPDATE).

DELIMITER//
DROP TRIGGER IF EXISTS calcul_nota $$
CREATE TRIGGER calcul_nota BEFORE UPDATE ON examene_2
FOR EACH ROW BEGIN
SET new.nota=new.notaLab+new.notaExam;
END;
// DELIMITER

4. Normalizarea ( Curs 5)
4.1 Axiomele Armstrong ( reflexivitate, augmentare, tranzitivitate) si derivate (descompunere,
reuniune si pseudotranzitivitate)
NORMALIZAREA axiomele Armstrong Pornind de la o mulime de dependente funcionale ataate unei scheme de relaie se pot
deduce alte dependene functionale valide, bazat pe o multitudine de reguli de inferenta. Pentru a se putea realiza o determinare formal
a acestora, trei dintre ele sunt axiomele Armstrong ,iar celelalte se pot deduce pornind de la ele.
A1. Reflexivitate: Fie R o schema de relatie si X R. Daca Y X atunci X YToate dependenele funcionale care
rezult din aceast axiom sunt numite i dependene triviale. Ele nu spun nimic n plus fa de setul de dependene iniial
,dar sunt dependene funcionale valide.
A2. Augmentare: Fie R o schem de relaie i X, Y, Z R.Daca X Y atunci si XZ YZ
Aceast axiom arat ca se poate reuni o aceeai mulime Z n stnga i in dreapta unei dependene funcionale valide obinnd
de asemenea o dependen funcionala valid.
A3. Tranzitivitate: Fie R o schem de relaie si X, Y, Z R. Daca X Y si Y Z atunci si X Z
Pe baza acestor axiome se pot demonstra o serie de reguli de inferen pentru dependene funcionale dintre care cele mai
importante sunt urmtoarele:
R1. Descompunere: Fie R o schem de relaie i X, Y, Z R.Daca X Y si Z Y atunci si X Z
Regula descompunerii ne permite s rescriem un set de dependente funcionale astfel nct sa obinem doar dependene care
au n partea dreapta doar un singur atribut.
R2. Reuniune: Fie R o schem de relaie i X, Y, Z R.Daca X Y si X Z atunci si X YZ
Rezult i faptul c din cele n reguli obinute prin descompunere se poate obine dependena iniiala, deci nlocuirea acesteia
nu duce la pierderea vreunei corelaii existente.
R3. Pseudotranzitivitate: Fie R o schem de relaie i X, Y, Z, W R.Daca X Y si YZ atunci si XZ W

4.2 Conceptul de inchiderea tranzitiva si exemplificare

Inchidere tranzitiva: multimea tuturor dependentelor ce se pot obtine prin aplicarea repetata a
setului de reguli Armstrong asupra unui set initial de dependente functionale este notata F+.
Exprimarea formala a inchiderii tranzitive bazat pe axiomele lui Armstrong
F+= F repeat
for each DF f in F+
aplica reguli de reflexivitate si multiplicare asupra setului F adauga rezultatul
DF la F+
for each pereche f1si f2in F+
if f1si f2 pot fi combinate prin tranzitivitate then adauga
rezultatul DF la F+
until F+ nu mai comporta modificari

Exemplu : R = (A, B, C, G, H, I)
F = { A->B, A ->C , CG ->H , CG ->I, B ->H}
DF din F+ :
A->H (tranzitivitate A->B si B->H)
AG->I ( augmentare AG->CG tranzitivitate CG->I
CG->HI uniuneCG->H si CG->I

Inchiderea setului de atribute.Definitie, algoritm , utilitate


Fie un set de atribute alfa,se defineste inchiderea setului a aferent relatiilor functionale F(notat a +) ,
setul atributelor determinate functional de a din F.
Acoperirea canonica FSETUL MINIMAL de dependente functionale echivalente lui F, fara dependente
redundante sau parti redundante in dependente
R = (A, B, C)
F = {A->BC, B->C, A->B, AB->C} Combina A->BC
siA->B in A->BC (uniune)
Setul devine {A->BC, B->C, AB->C}
Aeste extern in AB->C
verifica daca rezultatul stergerii lui A din AB->C este implicat de alte dependente Da : exista B->C
Setul devine {A->BC, B->C} Ceste extern in
relatia A->BC
Verifica daca A->C e implicata logic de A->B si exista alte dependente. Da: bazat pe tranzitivitateA-
>B and B->C.
Acoperirea canonica: A->B B->C

4.3 FN1 ,2, 3, BoyceCodd. Definitii si exemplificari

Definitii:
Supercheie -a unei scheme de relatii R refera setul de atribute S ca subset al schemei R
,astfel incat exista proprietatea pentru orice doua tuple t1 si t2 , in orice relatie permisa r din R este indeplinita
conditia t1[S]=t2[S]
Cheie candidata orice cheie din relatia R ( exista mai multe posibile chei), una din cheile candidate devine
cheie primara
Cheie compusa din mai multe atribute
Dependente partiale = relatia detine o cheie compusa
atribut prim -membru al unei chei candidate (posibil compusa)
atribut nonprim -nu e membru al unei chei candidate

Formele normale criterii de proiectare corecta a schemelor de relatii ce asigura: evitarea anomaliilor,
reducerea redundantei si cresterea gradului de independenta reciproca a datelor.
Nivelurile de normalizare definite in termenii tipurilor de dependente, impun conditii din ce in ce mai restrictive
asupra relatiilor : astfel o relatie aflata pe un anumit nivel de normalizare satisface TOATE RESTRICTIILE
CERUTE DE NIVELURILE INFERIOARE
Observatie: NORMALIZAREA
a) poate afecta NEGATIV eficienta cu care sunt rezolvate interogarile (bazele de date necesita cuplare)
;
b) este utila pentru operatii frecvente de actualizare, stegere, adaugare si mai putin in sisteme ce
presupun INTEROGARI complexe.

Prima forma normala


Un domeniu de atribute este ATOMIC , daca elementele sale sunt unitati indivizibile (ex nonatomice
atribute set, compozite).
DEF: O schema de BD relationala se afla in prima forma normala FN1, daca si numai daca , toate atributele
sale iau numai valori atomice.
Valorile nonatomice : complica stocarea datelor, incurajeaza redundanta datelor, interpretari greoaie a
valorilor nonatomice in programele de aplicatie.
Atomicitatea nu este o proprietate INTRINSECA a elementelor domeniului refera modul in care elementele
domeniului sunt utilizate.

A doua forma normala FN2 -rezolva probleme determinate de DF intre atribute prime si neprime pentru
relatii cu chei compuse
Trecerea unei relatii din FN1 -> FN2 impune eliminarea dependentelor functionale partiale,ale atributelor
neprime fata de oricare cheie a relatiei
DEF: O relatie R este in a doua forma normalaFN2 , daca este in FN1 si orice atribut neprim este total
dependent fata de oricare cheie a relatiei
Orice atribut ce nu e cheie primara( neprim)este dependent total de cheia primara Nota : Pentru orice relatie in
FN1 se poate gasi o descompunere in relatii aflate in FN2
echivalentacu relatia initiala , astfel incat :
1. din relatiile descompunerii se poate reconsitituiprin cuplare intreg continutul informational al relatiei
initiale,
2. din dependentele functionale ale componentelor se pot reconstituidependentele eliminate prin
descompunere
=> Descompunerea este un proces reversibil.

ExempluFN2: Profesori_note ( nume_prof, functie, salar, nume_stud,nota) DF : nume_prof -


>functie, functie ->salar, nume_prof ->salar,
(nume_prof ,nume_stud)-> nota
cheia compusa unicaa relatiei : (nume_prof , nume_stud) DF partiala
atributelor :
nume_prof-> functie si resepectivsalar , respectiv fata de cheia
(nume_prof,nume_stud)
determina anomalii :
de adaugarenu se poate adauga cadru didactic cat timp nu acorda o nota de stergere-daca se
sterge tupla unei singure note acordate se pierd info
profesor
de actualizare-functia-salariul = redondante Se pot elimina
prin crearea schemelor :
Profesori (nume_prof, functie, salar) Note (nume_prof,
nume_stud, nota)
Respecta : conservarea continutului de info si conservarea dependentelor functionale Principiu : orice
relatie urmareste un singur tip de entitate
A treia forma normala
DEF : o relatie este in a treia forma normala FN3 , daca este in FN2 si nici un atribut neprim nu este
dependent functional de un alt atribut neprim
Observatii:
a) un atribut neprim poate depinde functional doar de cheile din relatie (deoarece acesta nu poate fi
dependent de un atribut prim daca nu este cheie sau nu contine o cheie)
b) identifica dependentele tranzitive ( de tipul: A->B, B->C => A->C
Pentru orice relatie aflata in FN2 , exista o descompunere echivalenta in FN3, astfel transformarea
echivalenta determina eliminarea anomaliilor cauzate de dependentele tranzitive intre atribute neprime.

ExempluFN3
Separarea continutului de informatie anterioara cf FN2 nu a fost COMPLETA! Profesori_note (
nume_prof, functie, salar, nume_stud,nota)
DF : functie->salar determina o serie de anomalii
Anomalia de adaugare :nu se poate inregistra salariul unei functii daca nu
exista un cadru didactic cu functia ( stergerea ..este inversa!)
Anomalia de actualizare : redondanta salariu pentru fiecare cadru didactic la functia
respectiva -parcurgere inutila de relatii
Anomaliile pot fi eliminate prin descompunerea relatiei Profesori in subrelatii astfel : NF ( nume_prof,
functie)
FS( functie, salar)
+Note (nume_prof, nume_stud, nota)
Elimina toate anomaliile datorate dependentelor functionale dintre atribute neprime Permite
reconstituirea continutului de info si a setului de dependente functionale.

Forma normala BCNF


FN2, FN3 izoleaza dependentele functionale pentru atributele neprime insa nu si pentru cele prime
( membre ale unei chei)
DEF: o relatie este in forma BCNF , daca pentru orice dependenta functionala X->A din relatia R, cu
A atribut ce nu face parte din X, atributul X (posibil compus) este cheie in relatia R , sau include o cheie din
relatia.
Definitie formala : o relatie R este in FN-BC raportat la un set de dependente functionale daca pentru
toate DF din F+ de forma a->b, unde a din R si b din R se respecta relatiile: a->b este trivial(i.e., b din a), sau
a este supercheie pentru relatia R .

Concluzii:
1. In FN-BC singurele dependente functionale permisesunt cele in care o cheie determina un alt atribut.
2. Nici un atribut neprim nu poate fi dependent functional de un alt atribut daca nu este cheie. O relatie in BC
este si in FN3 si in FN2.. FN1
Pentru o relatie data , nu exista intotdeaunao descompunere in forma BC Observatie :
desi exista intotdeauna o descompunere in relatii BC ce poseda proprietatea de cuplare fara pierdere de
informatie =>nu exista intotdeauna o descompunere care sa conserve dependentele functionale ale relatiei R.
Concluzii
a) decompunerea unei relatii in forma BC se poate realiza in anumite situatii doar cu pierderea
anumitor dependente functionale
b) uneori forma BC este prea restrictivapentru a fi aplicata in procesul de normalizare => se poate folosi FN3
cu conservarea dependentelor functionalesi eliminarea suficient de buna a anomaliilor
Daca diagrama E-R e conceputa atent, cu identificarea corecta a entitatilor, tabelele generate (schemele) nu
necesita normalizare.

Obiectivele normalizarii :
-eliminarea redundantelor /anomaliilor de actualizare prin descompunerea relatiilor initiale mentinerea
posibilitatii de refacere a dependentelor initiale si a consistentei datelor FN3 -mentine dependentele
insa si redundanta partiala in date.
-FN-BC -asigura eliminarea redundantelor insa nu garanteaza mentinerea dependentelor.
EXEMPLU:
Relatia initiala:
Client_inchiriere (Client_nr, Proprietate_nr,Cnume, Padresa, Datainc, Datasf, Inchiriere,
Proprietar_nr, Proprietar_nume)
FN2
Client(Client_nr, Cnume)
Inchiriere_proprietate(Client_nr,proprietate_nr, Padresa, Datainc, Datasf, Inchiriere, Proprietar_nr,
Proprietar_nume)
Client (client_nr, Cnume)
Inchiriere_proprietate (client_nr,proprietate_nr, Pdresa, Datainc, Datasf, inchiriere, proprietar_nr,
Proprietar_nume)
Df1:(client_nr, proprietate_nr) ->Datainc, Datasf cheie primara Df2: client_nr -
>Cnume dependenta partiala
Df3: proprietate_nr -> Pdresa,inchiriere, proprietar_nr, Proprietar_nume ; dep. partiala Df4:
proprietar_nr -> Proprietar_nume; dependenta tranzitiva
Df5: (client_nr,Datainc) -> proprietate_nr, Pdresa, Datasf, inchiriere, proprietar_nr, Proprietar_nume;
cheie candidata
Df6:( proprietar_nr,Datainc) ->client_nr, Cnume, Datasf; cheie candidata

Def : O relatie este in FN2, daca este in FN1 si orice atribut ce nu este cheie primara este total dependent
functional de cheia primara
Client (client_nr, Cnume)
Inchiriere (client_nr,proprietate_nr, Datainc, Datasf)
Proprietar (proprietate_nr, Pdresa, inchiriere, proprietar_nr,Proprietar_nume)

FN3
Client (client_nr, Cnume) este in FN3
Inchiriere (client_nr,proprietate_nr , Datainc, Datasf) este in FN3
Proprietar (proprietate_nr, Pdresa, inchiriere, proprietar_nr, Proprietar_nume) Dependentele
functionale pentru relatii
Relatia client
Df2 : client_nr ->Cnume Relatia Inchiriere
Df1 :(client_nr, proprietate_nr) ->Datainc, Datasf
Df5: (client_nr, Datainc)-> proprietate_nr, Datasf Df6:(proprietar_nr,
Datainc)->client_nr, Datasf
Relatia Proprietar
Df3: proprietate_nr-> Pdresa,inchiriere, proprietar_nr, Proprietar_nume Df4: proprietar_nr->
Proprietar_nume; dependenta tranzitiva
DEF FN3 : O relatie aflata in FN2 si FN1 , pentru care nu exista dependente tranzitiveintre
atributele ce nu sunt cheie primara si respectiv cheia primara.
Solutie : eliminarea dependentelor tranzitive
Crearea unei noi relatii ( separarea DF tranzitive) astfel :
Proprietar (proprietate_nr, Pdresa, inchiriere,proprietar_nr,Proprietar_nume)
devine:
Proprietate (Proprietate_nr, Pdresa, inchiriere, proprietar_nr ) Proprietar
(Proprietar_nr, Proprietar_nume)
Schemele BD in FN3 sunt:
Client (client_nr,Cnume)
Inchiriere (client_nr,proprietate_nr,Datainc, Datasf) Proprietate (proprietate_nr,
Pdresa, inchiriere, proprietar_nr) Proprietar (Proprietar_nr, Proprietar_nume)
mecanismul cheie primara cheie straina
4.4 Descompunere prin operatii de proiectie, fara pierdere de info, refacere prin join natural

FNBC
Def . FN-BC orice determinant este o cheie candidata Relatia Inchiriere contine
3 determinanti :
(client_nr, proprietate_nr), (client_nr, Datainc), (proprietar_nr, Datainc) identificati de
dependentele functionale DF:
DF1 :client_nr,proprietate_nr->Datainc, Datasf DF5 : client_nr,Datainc-> proprietate_nr,
Datasf
DF6: proprietar_nr,Datainc->client_nr, Datasf Determinantii sunt chei candidate, deci
relatiile sunt in FNBC Violarea constrangerilor BC pot surveni in relatiile in care:
-exista mai multe chei candidate compozite chei cepartajeaza cel putin un atribut

4.5 Descompuneri cu join fara pierderi de date

Condiia pentru a nu se pierde date prin descompunere este ca relaia iniial s poat fi reconstruit exact prin joinul natural
al relaiilor rezultate, fr tupluri n minus sau n plus.
Definiie: Fie R o schem de relaie, F mulimea de dependene funcionale asociat i o
descompunere = (R1, R2, . . . , Rn) a lui R. Se spune ca este o descompunere cu join fara pierderi in raport cu F
(prescurtat j.f.p.) daca si numai daca pentru orice instanta r a lui R care satisface dependenele F avem ca:

r1 |><| r2 |><|. . . |><| rn = r unde ri = Ri (r)


In exemplul anterior, doar descompunerea 2 = ( (IdP, NumeP, Qty, IdF); (IdF, NumeF,
AdresaF)) are aceasta proprietate, in cazul celorlalte, din cauza inexistentei coloanelor comune, joinul natural nu se poate efectua.
Faptul c o descompunere are sau nu aceast proprietate se poate testa pornind doar de la lista atributelor relatiei iniiale, lista
atributelor relaiilor din descompunere i a mulimii de dependene funcionale asociat folosind urmtorul algoritm:
Algoritm de testare a proprietii de j.f.p. pentru o descompunere
Intrare: Schema de relaie R = A1 A2 . . . Am , mulimea de dependene funcionale F i o
descompunere = (R1, R2, ..., Rn) Iesire: proprietatea j.f.p.
Metoda:Se construiete o tabela avand n linii si m coloane. Liniile sunt etichetate cu elementele descompunerii iar coloanele
cu atributele relaiei R. Elementul (i,j) al tabelei va fi egal
cu aj daca Aj R sau bij altfel.
Se parcurg dependenele X Y din F. Dac dou (sau mai multe) linii din tabel au aceiai simboli pe coloanele X aceste linii
se egaleaz i pe coloanele din Y astfel:
Daa pe o coloan din Y apare un aj atunci toate elementele de pe acea coloana din liniile respective devin aj
Dac pe o coloan din Y nu apare nici un aj atunci se alege unul dintre elementele de tip bij si toate
elementele de pe acea coloan din liniile respective devin egale
cu acel bij Procesul se opreste:
Fie cnd s-a obinut o linie n tabel care conine doar a-uri, caz n care descompunerea
are proprietatea j.f.p.

Fie cnd la o parcurgere a dependenelor nu mai apar schimbri n tabela i nu s-a obtinut
o linie doar cu a-uri. In acest caz descompunerea nu are proprietatea j.f.p.

4.6 Descompuneri care pstreaza dependenele functionale


O a doua problem n cazul descompunerii unei scheme de relaie R avnd dependentele
F n mai multe relatii R1, R2, . , Rn este aceea a pstrrii corelaiilor ntre date, corelaii date de dependenele funcionale din F.
Fiecare relaie Ri va moteni o mulime de dependene dat de proiecia mulimii de dependene funcionale F pe Ri : Fi =
Ri(F)
Exemplul 6.
Fie relaia Produse = (IdP, NumeP, Cant, IdF, NumeF, AdresaF 0
Avnd dependenele funcionale:

F = { IdPNumeP, IdPCant, IdP IdF, IdFNumeF, IdFAdresaF }


In cazul descompunerii 2 = (Rl, R2)unde: R1 = (IdP, NumeP, Cant, IdF) i R2 =(IdF,NumeF, AdresaF)
cele dou relaii motenesc urmtoarele dependene:
FR1 = R1(F) = { IdPNumeP, IdPCant, IdP IdF} FR2 = R2 (F) = {
IdFNumeF, IdFAdresaF }
Dup cum se observ toate dependenele relaiei iniiale sunt pstrate fie n FR1 fie n FR2. Exista ns i cazuri n care unele
dependene din F nu mai pot fi regsite n mulimile de dependene asociate schemelor din descompunere i nu se pot deduce
din acestea. In primul caz se spune c descompunerea pstreaz dependenele , iar in al doilea ca descompunerea nu pstreaz
dependenele.Definitie: Fie R o schem de relatie, F mulimea de dependene funcionale asociat, o descompunere = (R1,
R2, .. . , Rn) a lui R i Fi = Ri(F) mulimile de dependene funcionale ale elementelor descompunerii. Se spune ca
pstreaz dependenele din F , dac i numai dac orice dependen din F poate fi dedus din i=1..n (Fi ).
Rezult c o descompunere pstreaz dependenele dac i numai dac: F ( i=1..n (Fi ) )+ns att proiectia unei multimi de
dependene ct i incluziunea de mai sus implic un calcul de inchidere a unei multimi de dependente (F si respectiv reuniunea
multimilor Fi). Exista i in acest caz un algoritm pentru a testa daca o dependen este sau nu pastrat dup descompunere
fr a fi necesar efectiv calculul mulimilor Fi.

Algoritm de testare a pstrrii dependenelor


Intrare: o schema de relaie R, multimea de dependente funcionale asociat F i o descompunere p = (R1,
R2, . , Rn)
Iesire: verdictul daca p pastreaza sau nu dependentele
Metoda: Pentru fiecare dependen X Y din F se procedeaz astfel:
Se pornete cu o mulime de atribute Z = X
Se parcurg repetat elementele descompunerii . Pentru fiecare Ri se calculeaza o noua valoare a lui Z astfel:
Z = Z ((Z Ri)+ Ri )
Procesul se opreste in momentul cnd Z rmne neschimbat la o parcurgere a
elementelor Ri. Daca Y Z atunci dependena X Y este pstrat, altfel nu e pstrat. Dac toate dependenele
din F sunt pstrate, nseamn c pstreaz dependenele din F.

4.7 Algoritm de descompunere in FN3 cu pstrarea dependenelor


Fie R o schema de relaie si F mulimea de dependene funcionale asociat, cu
F = { X i Y i, X 2 Y 2, . . . X n Y n }
Atunci descompunerea = (X1Y1, X2Y2, . . . XnYn) este o descompunere in FN3 cu pstrarea
dependenelor.
Se observ din definiia de mai sus a descompunerii ca:
Toate dependenele sunt pstrate: dependena X Yi este in proiectia lui F pe Xi Yi
Pentru a minimiza numrul de elemente din descompunere se aplic regula reuniunii: dac avem mai multe
dependene care au aceeai parte stng le reunim intr-una singur.
Dac n descompunere exista dou elemente XiYi si XjYj astfel incat XiYi XjYj atunci
XiYi se elimin.
Se poate demonstra faptul ca fiecare schem din descompunere este in FN3.

4.8 Algoritm de descompunere in FN3 cu pstrarea dependenelor i join fr pierderi


Dac la descompunerea obtinuta prin algoritmul anterior adaugm o cheie a relaiei (ca element al descompunerii) vom obine o
descompunere care are att proprietatea de join fr pierderi ct si pe cea a pstrrii dependenelor. Formal putem scrie
algoritmul astfel:
Algoritm. Fie R o schema de relatie si F mulimea de dependene funcionale asociat, cuF = { X i Y i, X 2 Y 2, . . . X n
Y n }si X o cheie pentru R
Atunci descompunerea = (X, X1Y1, X2Y2, . . . XnYn) este o descompunere in FN3 cu pstrarea dependenelor i join fara
pierderi.
Pstrarea dependenelor este evident, ca mai sus. Dac vreunul dintre elementele de forma XiYj conin deja o cheie a lui R
atunci nu este necesar adugarea unui element suplimentar n descompunere.
Algoritm de descompunere n FNBC cu join fr pierderi
Fie R o schem de relaie i F mulimea de dependene funcionale asociat, F n forma
canonic: F = { X1 A1, X2 A2, . Xn An } . Putem calcula descompunerea n FNBC cu join fr pierderi iterativ:
Iniial = (R)
La fiecare pas se alege o schem T care conine o dependen de forma X A care violeaz
condiiile de FNBC. Schema respectiv este nlocuit n prin T1 s i T2 unde T = XA si T2
= T - {A}
Procesul se opreste cnd n p nu mai exist elemente care nu sunt n FNBC

5.TRANZACTII
5.1 Definitie
Tranzactie =o secventa de operatii ce se executa ca o singura operatie logica asupra unei BD partajate de mai
multi utilizatori; = executia unui program ce include operatii de acces asupra articolelor BD.

5.2 Starile unei tranzactii:

1.begin: marcheaz nceputul execuiei unei tranzacii


2.read sau write: sunt operaii de citire sau scriere a articolelor de date n baza de date, executate n cadrul unei tranzacii.
3.end: marcheaz terminarea operaiilor de scriere sau citire din baza de date
4.commit: semnaleaz terminarea CU SUCCES a tranzaciei, validarea tuturor modificrilor efectuate n baza de date i
vizibilitatea modificrilor efectuate pentru alte tranzacii;
-din acest moment, modificrile efectuate nu mai pot fi anulate, nici pierdute printr-o defectare ulterioar a sistemului
5. rollback (sau abort): semnaleaz faptul c tranzacia a fost abandonat i c orice efect pe care tranzacia l-a avut
asupra bazei de date trebuie s fie ANULAT (printr-o rulare napoi a operaiilor refacerea strii sistemului de
dinaintea tranzactiei)
undo: este similar operaiei rollback, dar se aplic unei singure operaii, nu unei ntregi tranzacii
redo: specific faptul c unele operaii ale unei tranzacii trebuie s fie executate din nou pentru a se putea
valida ntreaga tranzacie

5.3 Proprietatile ACID

Atomicitate (all or nothing) = este proprietatea unei tranzactii de a reprezenta o unitate de executie indivizibila, adica de
a executa "totul sau nimic".O tranzactie este ATOMICA daca isi executa toate actiunile sale , sau nu executa nici una
dintre aceste actiuni.
Consistenta = inseamna proprietatea acesteia de a efectua modificari corecte ale bazei de date.
Tranzactia trebuie sa mentina consistenta BD dupa executia sa (nu sunt violate constrangerile de integritate)
Izolare = este proprietatea unei tranzactii de a face vizibile modificarile efectuate numai dupa ce a fost validata (comis ,
engl. committed).Daca in acelasi timp sunt executate diverse tranzactii concurente, acestea nu "vad" modificarile partiale
efectuate de tranzactia respectiva pana in momentul validarii tranzactiei.Daca mai multe tranzactii sunt executate
concurent , rezultatul trebuie sa fie similar unei executii in mod serial (intr-o anumita ordine ) a acelor tranzactii.
Tranzactia este protejata de efectele planificarii concurente a altor tranzactii.
Durabilitatea = este proprietatea prin care, dupa validarea unei tranzactii, modificarile efectuate de aceasta in baza de
date nu vor mai fi pierdute datorita unor defectari ulterioare a sistemului.Efectul unei tranzactii comise trebuie sa persiste
chiar si in situatia unei caderi in SGBD.
5.4.Specificarea unei tranzactii- SQL
USE sample;
BEGIN TRANSACTION /* The beginning of the transaction */
UPDATE employee
SET emp_no = 39831
WHERE emp_no = 10102
IF (@@error <> 0)
ROLLBACK /* Rollback of the transaction */
UPDATE works_on
SET emp_no = 39831
WHERE emp_no = 10102
IF (@@error <> 0)
ROLLBACK
COMMIT /*The end of the transaction */

5.5 Niveluri de izolare. Concept si clase

Nivelul de izolare a tranzaciilor reprezint gradul pn la care o tranzacie trebuie s fie izolat de celelalte
tranzacii.
Cel mai puternic nivel de izolare: SERIALIZABLEAsigura izolare completa(default)
Alte niveluri de izolare mai slabe:REPETABLE READ, READ COMMITED, READ UNCOMMITED
Cresc performanta prin eliminarea incarcarii datorate serializarii si permit niveluri de concurenta mai ridicate
SERIALIZABILITATEA tranzactiilor: SGBD executa tranzactiile bazat pe planificarea lor seriala , in mod intretesut.

5.6 Planificarea tranzactiilor si serializabilitate

Definitie:Un plan (schedule) de executie , este o ordonare secventiala a instructiunilor (Read / Write / Abort / Commit)
pentru n tranzactii astfel incat ordinea instructiunilor fiecarei tranzactii este mentinuta, altfel spus secventa de executie
globala mentine ordinea operatiilor tranzactiilor individuale
Tipuri de planificari:
planificare seriala:planificare ce NU intretese actiuni din diverse tranzactii concurente
planificare non-seriala: planificarea in care operatiile diverselor tranzactii concurente sunt intretesute.
planificare echivalenta: pentru orice stare a unei BD, efectul (asupra unui set de obiecte din BD ) executiei lor este identi
Serializarea tranzactiilor = daca doua sau mai multe tranzacttii sunt executate CONCURENT, efectul lor trebuie sa fie
similar modului de executie SERIALA.
- intr-o planificare serializabila , tranzactiile sunt executate CONSECUTIV
- fiecare tranzactie mentine consistenta =>planificarea seriala mentine consistenta GLOBALA = >astfel,
planificarea globala serializabila MENTINE CONSISTENTA TOTALA a bazei de date.
5.7 Descrieti inconsistenta de tip lost update

5.8 Descrieti inconsistenta de tip dirty read

5.9 Descrieti inconsistent de tip unrepeatable read

5.10 Protocolul de blocare in doua faze(2PL)

Protocol de blocare este un set de reguli de urmat de catre fiecare tranzactie pentru a asigura faptul ca si in conditiile in
care anumite actiuni al unui set de tranzactii sunt intretesute, efectul executiei este astfel incat tranzactiile sunt intr-o
anumita ORDINE SERIALA.
Protocolul 2PHASE LOCK:o tranzactie respecta protocolul 2PL, daca toate operatiile de blocare, preced prima operatie
de deblocare din tranzactie.
etapa1 solicitarea lacatelor etapa2 eliberarea lacatelor
acest protocol ne garanteaza serializabilitatea: daca toate tranzactiile respecta cerintele protocolului se
poatedemonstra ca orice planificare a lor e SERIALIZABILA.
daca o tranzactie nu respecta protocolul pot exista executii neserializabile ale acelei tranzactii inconjunctie
cu alte tranzactii.
5.11 Controlul concurentei tranzactiilor cu lacate. Tipuri de lacate si reguli de utilizare
LACATELE asigura acces exclusiv pentru o tranzactie.
Atunci cand o tranzactie efectueaza un acces la BD, un lacat va interzice accesul altor tranzactii , pentru a preveni
rezultate incorecte.
Tipuri de lacate:
Shared Lock (read lock): daca tranzactia poseda un lacat de tip shared asupra unui obiect de date , ea va putea citi
obiectul insa nu il va putea actualiza.
Exclusive Lock (write lock): daca o tranzactie poseda un lacat de tip exclusive asupra unui obiect de date , ea va putea
atat citi cat si scrie acel obiect
Reguli:
lacatele permit procesarea concurenta a tranzactiilor
tranzactiile isi indica intentiile de operare prin solicitarea de lacate de la planificatorul de tranzactii (managerul de
lacate)
orice tranzactie ce necesita acces la un obiect de date pentru citire/scriere , inaintea accesului efectiv va bloca acel
obiect
tranzactie mentine un lacat pana la eliberarea sa explicita
tranzactie trebuie sa obtina un lacat inaintea executiei operatiei dorite
tranzactie ce a obtinut un lacat nu va mai putea obtine altele.

5.12 Controlul concurentei cu stampa de timp


Fiecarei tranzactii i se asigneaza o stampa de timp (marcaj al momentului de executie) globala, unica
1. fiecarui obiect de date i se asigneaza:
o stampa de scriere wts (cea mai mare valoare in timp a oricarei scrieri)
o stampa de citire rts (cea mai mare valoare in timp a oricarei citiri)
2. un protocol ( set de reguli- algoritm) ordoneaza tranzactiile astfel incat in cazul unui conflict , cele VECHI au
prioritate de executie (ordonarea stampelor de timp)

5.13 Log File


orice actiune de actualizare a unei tranzactii va fi inregistrata ca o intrare in log
in log nu sunt generate/adaugate inregistrari daca este citita BD
de ce este necesar logul ? Este consultat de sistem pentru a asigura atomicitate si durabilitate pentruBD.
log-ul este stocat pe suport DIFERITdecat BD pentru a asigura protectie la caderi in BD( de dorit!!)
Actiuni inregistrate in log:
Ti scrie un obiect de date
Ti comite/este abortata

Inregistrarile din Log sunt inlantuite bazat pe id-ul de tranzactie =>simplu de reluat (redo) /anulat (undo)
o anumita tranzactie.
Log este duplicat si arhivat pe suportul de stocare.

Operatiile de control al concurentei tranzactiilor (protocoale pentru evitare interblocari,


acaparare/eliberare lacate, inregistrarile acestora in log) sunt efectuate in mod TRANSPARENTde catre
SGBD

5. 14. Etape principale ale unui Algoritm de recuperare la caderi. Actualizare amanata vs
actualizare anticipate
Trei etape in orice algoritm de recuperare:
Analiza: Scanare log , de la cel mai recent punct de control -checkpoint) pentru a identifica toate tranzactiile ce au fost
active si paginile din buferul de M nescrise pe disc (dirty) , la momentul caderii.
Redo: Reface (redo) toate actualizarile aferente paginilor dirty din buffer , astfel incat toate actualizarile din log sunt
scrise pe disc incheiate => persistenta.
Undo: pentru operatiile de scriere ale tranzactiilor active la momentul caderii , este refacuta valoarea de dinaintea
actualizarii , valoare preluata din log prin analiza inapoi (backwards) a acestuia
!!!!atentie pot surveni caderi in timpul procesului de refacere!!!
Actualizare amanata vs actualizare anticipate:
1. Se va amana actualizarea in baza de date pana cand TRANZACTIA atinge punctul sau de comitere(commit)
pe durata executiei tranzactiei, actualizarile sunt inregistrate in fisierul .log si in buferele cache
(in RAM)
la atingerea punctului COMMIT inaintea executiei sale, toate actualizarile sunt scrise in log file
pe disc si apoi TRANZACTIA comite .
ULTERIOR actualizarile corespunzatoare,sunt scrise din bufere in BAZA de DATE
2.Inregistrarea de actualizare a obiectului de date se va adauga in log, INAINTEA actualizarii datei in BD = > logul este
numit write-ahead log.
Protocolul Write-Ahead Logging :
1. va forta inregistrarea in log pentru o actualizare in BD , inainte ca pagina de date corespunzatoare din M sa ajunga pe
disc (salvata).
2. trebuie sa scrie toate inregistrarile in log pentru o tranzactie inaintea comiterii ei.

7.Elemente de Securitate ( curs 10)


7.1 Definirea termenilor integritate a datelor, disponibilitate,secretizare, confidentialitate a
datelor, autentificare, autorizare acces
Integritate a datelor= numai utilizatorii autorizati pot modifica date.
Disponibilitate = utilizatorii autorizati trebuie sa poata accesa datele in orice moment.
Secretizare = informatia nu trebuie sa devina accesibila utilizatorilor neautorizati.
Confidentialitate a datelor = este asigurata prin proceduri de:
- identificare a utilizatorilor prin nume sau cod;
- autentificarea prin parole;
- autorizarea accesului diferentiat prin drepturi de creare, consultare modificare sau stergere pentru anumite
segmente de date.
Autentificarea este conceptul de securitate ce specifica procesul de validare a credentialilor utilizatorului cu
scopul de a preveni accesul neautorizat la sistem. Autentificarea poate fi verificata solicitand utilizatorului un
nume utilizator si o parola, informative evaluate de sistem pentru identifica utilizatorul, proces ce poate fi
completat folosind criptarea.
Autorizarea este procesul aplicat dupa verificarea identitatii utilizatorului, process in care se determina ce
resurse poate utiliza acel utilizator particular, altfel spus informatia structural si de catalogul de sistem legata de
o anumita entitate-obiect din baza de date este disponibila doar unui principal - acelor subiecti ce au
permisiunea sa acceseze acea entitate.

7.2 Control discretionar al accesului, conceptul de privilegiu, sintaxa SQL de acordare

Control discretionar al accesului= se bazeaza pe asignarea (grant) si revocarea (revoke) privilegiilor


privilegiu permite unui utilizator sa creeze sau sa acceseze (citire,scriere, modificare) un anumit obiect al bazei de date
(relatie, vedere, index...) , astfel incat sa poata executa anumite operatii (specifice SGBD de ex SELECT, INSERT,
UPDATE,DELETE).

7.3 Control mandatar al accesului

Control mandatar al accesului


-Asigura un grad inalt de protectie, previn orice flux ilegal de informatie
-Este bazat pe politici la nivel de sistem ce NU pot fi modificate de utilizatorii individuali
- Sunt uneori prea complexe si rigide, aplicabile in medii restranse
-In multe situatii practice sunt preferate politicile de control discretionar deoarece asigura trade-off suficient de bun
securitate - aplicabilitate
-Fiecare obiect de date are asignata o clasa de securitate si fiecare user are asignat un anumit nivel de acces la informatii
pentru o clasa de Securitate

7.4 Definirea autorizarii bazate pe roluri.Exemple

-Reflecta REAL , modul in care lucreaza/este structurata organizatia ce utilizeaza aplicatia de baze de date!!!!
-Ilustreaza modul in care standardele existente lucreaza corelat cu standardele de facto generand facilitati utile in
implementarea unui sistem de securitate.

8.Stocarea datelor si indexarea bazelor de date (Curs 11)


8.1 Structuri RAID

- Scopul principal n folosirea arhitecturii RAID este mrirea siguranei datelor, important pentru protejarea
informaiilor critice pentru afaceri, de exemplu o baz de date a comenzilor date de clieni; sau a mriri vitezei,
de exemplu un sistem care transmite la cerere diverse emisiuni TV ctre diveri telespectatori online ("TV on
demand").
-Exista trei concepte principale in sistemele RAID
- Date identice sunt scrise pe mai mult de un singur disc (mirroring)
- Datele sunt divizate pe mai multe discuri (striping)
- Date redundante legate de verificarea de paritate ( alg si coduri corectoare de erori) a continutului de date ,
sunt stocate pe mai multe discuri separate si utilizate pentru a detecta si a permite corectarea problemelor de
continut (error corection)

8.2 Managementul spatiului de disc-managerul de bufere si politici de inlocuire a buferelor

- Daca blocul solicitat este deja in buffer, atunci managerul de buffer returneaza adresa acestuia
- Daca blocul nu este in buffer, managerul executa urmatorii pasi:
- Aloca spatiu buffer
Daca nu este spatiu disponibil, inlatura ( remove) un bloc existent din buffer ( bazat pe o politica de
inlocuire buffer) si il scrie pe disc daca a fost modificat de la ultima extragere /scriere pe disc
- Citeste blocul de pe disc, il adauga in buffer si returneaza adresa corespunzatoare de memorie
- Cele mai multe sisteme de operare folosesc strategia Least recently used ( LRU) , in care blocul ce a fost
recent utilizat este mutat din M pe disc : Foloseste patternuri de acces anterioare pentru a previziona viitoarele
accesele la bloc
- SGBD este capabil sa previzioneze patternurile de acces cu o acuratete mai buna decat SO algoritmi
evoluati.

8.3 Index definitie si structuri de organizare

- Un Index este utilizat pentru a accesa in mod eficient anumite date specifice (similar index intr-o carte)
- Indecsii pot fi utilizati pentru a imbunatati cautarile acestor inregistrari
- Cele mai multe SGBD creeaza automat un index pe cheia primara.

8.4 Index clusterat vs nonclusterat

Un index primar (clusterat) este un index a carui cheie de cautare defineste ordinea secventiala din
fisier. Cheia primara este utilizata ca si cheie de cautare pentru index ( cheia de cautare este unica). Fisierele cu
index clusterat pe cheia de cautare sunt numite fisiere index-secventiale, creat pentru acces secventia eficient
Un index secundar (nonclusterat) este un index a carui cheie de cautare are o ordine diferita de ordinea
secventiala din fisier a inregistrarilor.

8.5 Index dens/rar

INDEX DENS
contine cate o intrare pentru fiecare cheie de cautare din fisier
O inregistrare index a unui index dens primar ,pointeaza la prima inregistrare din fisier cu respectiva
cheie de cautare
-O inregistrare index a unui index dens secundar, stocheaza o lista de pointeri catre inregistrarile cu
aceeasi valoare a cheii de cautare
INDEX RAR
contine doar parte din valorile cheii de cautare : poate fi utilizat doar pentru indecsi primari
consuma mai putin spatiu si produce mai putina incarcare de procesare necesara mentinerii bazei de date
pentru operatiile de stergere/inserare in BD

8.6 Index tip arbore B+tree vs tip hash

Hashing e mai bun la regasirea inregistrarilor cu o anumita valoare


Indecsii ordonati sunt preferati pentru interogari in care atributele sunt in domeniu de valori
Practic multe SGBD suporta indecsi B+tree ,insa nu toate suporta indecsi de tip hash

8.7 Criterii de alegere a indecsilor

Crearea unui index presupune cunoasterea planului de interogare dar si a operatiilor de actualizare
Indecsii determina cresterea vitezei la interogarea datelor insa pot incetinii actualizarile , deasemenea
necesita spatiu suplimentar de disc
Crearea unui index presupune cunoasterea planului de interogare dar si a operatiilor de actualizare
Indecsii determina cresterea vitezei la interogarea datelor insa pot incetinii actualizarile , deasemenea
necesita spatiu suplimentar de disc
Ordinea atributelor alese ca si chei de cautare este importanta in interogarile in care intervin inegalitati
Se aleg indecsi care sa poata oferi beneficii = performanta la cat mai multe interogari
deoarece un singur index poate fi de tip clusterat per relatie, se va alege astfel incat cele mai importante
interogari sa beneficieze din plin de acesta

9.Optimizarea interogarilor (Curs 12)


9.1 Tehnici de optimizare interogari
Exista doua clase mari de tehnici de optimizare
1) bazat pe reordonarea euristica a operatiilor de algebra relationala
2) estimarea sistematica a costurilor diferitelor planuri de executie cu alegerea celui cel mai redus cost
Optimizarea bazata pe cost combina ambele tehnici incapand cu cea euristica, avand la baza organizarea
fisierelor.

Strategii pentru minimizarea numarului de accese la disc pentru interogari complexe


In cazul bazelor de date centralizate , un aspect foarte important in contextual optimizarii cererilor este
minimizarea numarului de accese la disc.
In general, exista o serie de principii (strategii) care duc la micsorarea numaruluide accese la disc. Ele sunt
urmatoarele:
1.Realizarea selectiilor cit mai devreme posibil.
2. Combinarea anumitor selectii cu produse carteziene adiacente pentru a forma un join.
3. Combinarea secventelor de operatii unare (selectii si proiectii)intr-una singura (o selectie sau/si o
proiectie)
4. Cautarea subexpresiilor comune, pentru a fi evaluate o singura data.
5. Folosirea indecsilor sau sortarea relatiilor, daca se obtine o crestere aperformantelor.
Setul echivalentelor algebrice necesare transformarilor de optimizare
Comutativitate/Asociativitate produs cartezian si join
Comutativitatea: E1 x E2 = E2 x E1
E1 E2 = E2 E1
E1 F E2 = E2 F E1 Asociativitatea:
E1 (E2 E3) = (E1 E2) E3
E1 F1 (E2 F2 E3) = (E1 F1 E2) F2 E3
Cascada de proiectii
A1An(B1Bn(E))= A1,,,An(E). Se presupune bineinteles ca {Ai} {Bj}
Comutativitate selectii cu proiectii
Daca F contine doar atribute din A1..An atunci:
A1...An(F(E))= f(A1An(E))
Sau, in cazul general, F contine si alte atribute, B1...Bn, atunci:
A1An(F(E))=A1...An(F(A1An(E))
Comutativitate selectie/proiectie cu produs cartezian
Daca toate atributele din F fac parte din E1:
F(E1 x E2) = F(E1) x E2
Daca F=F1F2 cu F1 continand doar atributele din E1 si F2 doar din E2: F(E1 x E2) =
F1(E1) x F2(E2)
Daca F=F1F2 cu F1 continand doar atributele din E1, dar F2 e o expresie generala: F(E1 x E2) =
F2(F2(E1) x E2)

9.2 Algoritmul de optimizare a interogarilor in 6 pasi


Pasul1. Fiecare selectie este transformata folosind regula 4 intr-o cascada de selectii:
F1F2...Fn(E)= F1(F2(...(Fn(E))...))
Pasul2. Fiecare selectie este deplasata in jos folosind regulile 4-8 cat mai aproape de
frunze.
Pasul3. Folosind regulile 3,5,9 si 10, fiecare proiectie este deplasata cat mai jos posibil in arborele sintactic.
Regula 3 face ca unele proiectii sa dispara, regula 5 sparge o proiectie in doua a.i. una poate migra spre frunze.
Daca o proiectie ajunge sa fie dupa toate atributele ea dispare.
Pasul4. Cascadele de selectii si proiectii sunt combinate folosind regulile 3-5 intr-o singura selectie, o singura
proiectie sau o selectie urmata de o proiectie. Aceasta abordare tine de eficienta: e mai putin costisitor sa se
faca o singura selectie si apoi o singura proiectie decat daca s-ar alterna de mai multe ori selectii cu proiectii.
Pasul5. nodurile interioare ale arborelui rezultat sunt impartite in grupuri. Fiecare nod intern care corespunde
unei operatiuni binare devine un grup impreuna cu predecesorii sai imediati cu care sunt asociate operatiuni
unare. Din bloc fac parte de asemenea orice lant de noduri succeoare asociate cu operatiuni unare si terminate
cu o frunza cu exceptia cazului cand operatia binara este un produs cartezian neurmat de o selectie cu care sa
formeze un echijoin.
Pasul6. Se evalueaza fiecare grup a.i. niciunul nu este evaluat inaintea descendentilor sai. Rezulta astfel un
program de evaluare a expresiei relationale initiale.

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