Documente Academic
Documente Profesional
Documente Cultură
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
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.
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 )
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)
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.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)
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.
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
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
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
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
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.
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.
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.
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
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:
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.
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 */
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.
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
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.
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.
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.
-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.
- 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)
- 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.
- 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.
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.
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
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