8/9/2019 Baze de Date_10
1/19
Baze de date Curs 10 1
Curs 10Prof. dr. ing. Dorin Carstoiu
8/9/2019 Baze de Date_10
2/19
Curs 10 2Baze de date
Cuprins1.1. SecventeSecvente
2.2.
IndecsiIndecsi3.3. SinonimeSinonime
4.4. Dependente functionaleDependente functionale
5.5. Normalizarea in baze de dateNormalizarea in baze de date
8/9/2019 Baze de Date_10
3/19
Curs 10 3Baze de date
1. Secvente
In multe aplicatii este nevoie de generarea unor secvente de numere
care sa fie utilizate in comenzi de tip INSERT sau UPDATE.O solutie de calcul al valorii maxime si a incrementarii acesteia nu este
corecta in contextul accesului concurent. De ex:
SELECT MAX(D_nr) +1
FROM Angajat
Nu garanteaza obtinerea unei valori unice. Solutia: definirea desecventa asociata tabelei. Sintaxa:
CREATE SEQUENCE nume_secventa
[INCREMENT BY pas]
[START WITH val_initiala]
[MAXVALUE val_maxima]
[MINVALUE val_minima]
[CYCLE |NOCYCLE]
[CACHE numar_valori | NOCACHE]
8/9/2019 Baze de Date_10
4/19
Curs 10 4Baze de date
Obs:
Majoritatea optiunilor pot lipsi
Pasul poate fi negativ
CYCLE produce ciclarea la atingerea valorii maxime sau minime
CACHE specifica numarul urmatoarelor valori
Ex:
CREATE SEQUENCE dep_secventa
INCREMENT BY 2
START WITH 20
MAXVALUE 100
CACHE 18
Fiecare secventa se foloseste prin intermediul a douapseudocoloane:
Nume_secveta.NEXTVAL urmatoarea valoare
Nume_secventa.CURRVAL ultima valoare utilizata
8/9/2019 Baze de Date_10
5/19
Curs 10 5Baze de date
INSERT INTO Departament VALUES (Certcetare,
dep_secventa.NEXTVAL, .)
O secventa poate fi modificata prin:
ALTER SEQUENCE nume_secventa
[INCREMENT BY pas]
[START WITH val_initiala]
[MAXVALUE val_maxima]
[MINVALUE val_minima]
[CYCLE |NOCYCLE]
[CACHE numar_valori | NOCACHE]
Stergerea unei secvente:
DROP SEQUENCE nume_secventaStergerea unei secvente nu poate fi revocata prin ROLLBACK
8/9/2019 Baze de Date_10
6/19
Curs 10 6Baze de date
2. INDECSI
Un index este o structura de cautare rapida utilizat pentru cresterea
vitezei de evaluare cereri. Oracle creaza automat indecsi de tip unicpentru cheile specificate prin constrangerile PRIMARY KEY siUNIQUE.
Sintaxa:
CREATE INDEX nume_index
ON nume_tabela (expresie1 [, expresie2, ])Ex:
CREATE INDEX ang_index
ON Angajat (D_nr, Data_n DESC)
Stergere: DROP INDEX nume_index
Nu totdeauna indexarea duce la cresterea vitezei. Sunt situatii in carese recomanda utilizarea indexilor, altele in care aceasta nu esterecomandata.
Indecsi sunt cu automentinere acesta fiind refacut dupa modificari aledatelor
8/9/2019 Baze de Date_10
7/19
Curs 10 7Baze de date
Cazuri in care se recomanda indexarea:
Coloanele contin un procent mare de valori nule
Coloanele sunt utilizate in clauza WHERE a unor cereri executate
frecvent
Coloanele contin o mare varietate de valori
Tabelele contin un mare numar de linii si majoritatea cererilor
afecteaza maxim 4% din inregistrari.Nu se recomanda indexarea:
Tabela are un numar mic de linii
Majoritatea cererilor afecteaza un numar mai mare de 4% din
inregistrari
Coloanele nu sunt utilizate in clauza WHERE a unor cereriexecutate frecvent
Tabela este frecvent modificata prin INSERT, UPDATE, DELETE
Conditiile WHERE contin expresii calculate pe baza coloanelor
8/9/2019 Baze de Date_10
8/19
Curs 10 8Baze de date
3. Sinonime
Obiectele bazei de date pot avea asociate nume alternative numite
sinonime cu scopul:
Nume alternative mai sugestive;
Nume alternative mai scurte;
Sintaxa:
CREATE [PUBLIC] SYNONIM nune_sinonimFOR nume_obiect
Ex:
CREATE PUBLIC SYNONIM Ang FOR Angajat
Stergere sinonim:
DROP [PUBLIC] SYNONIM nume_sinonim
8/9/2019 Baze de Date_10
9/19
Curs 10 9Baze de date
4. Dependente functionale
Un concept important in constructia schemelor relatie este
dependenta functionala. Dependenta functionala se exprima ca orestrictie intre doua seturi de atribute intr-o baza de date.
Dependenta functionalaDependenta functionala, notata prin X-->Y intre doua seturi deatribute X si Y, ce sint subseturi ale lui R specifica o restrictie an-uplurilor posibile ce formeaza o relatie instanta r in R. Restrictiastatueaza ca pentru orice doua n-upluri t1 si t2 in r pentru caret1(X)=t2(X) va trebui sa implice ca t1(Y)=t2(Y).
Se poate spune ca exista o dependenta functionala de la X la Y sauca Y este functional dependentfunctional dependentde X. Functional dependenta estenotata prin FD; setul atributelor X este numit si partea stinga a lui FDiar setul atributelor Y partea dreapta a FD.
daca o restrictie in R statueaza ca nu poate fi mai mult de un n-uplucu o valoare data X in orice relatie instanta r(R), adica X este o
cheie candidata in R, atunci X-->Y pentru orice subset al atributelorY din R.
daca X-->Y in R, nu se poate spune numic despre implicatia Y-->Xin R.
8/9/2019 Baze de Date_10
10/19
Curs 10 10Baze de date
Se considera schema relatie ANGAJAT_PROIECTpentru care de lasemantica atributelor, se cunoaste ca urmatoarea dependentafunctionala a atributelor relatiei trebuie respectata.
Ssn ---> A_Nume
P_Nr ---> {P_Nume,P_Loc}
{Ssn,P_Nr} ---> Ore
Ssn P_Nr Ore A_Nume P_Nume P_Loc
Reguli de inferenta:
Se noteazat prin F un set de dependente functionale ce sint specificate
in schema relatiei R. Tipic, proiectantul bazei de date va specificadependentele functionale ce sint evidente din punct de vederesemantic. Sint insa o serie de alte dependente functionale ce vor fitinute in toate relatiile instanta ce satisfac dependentele in F. Setultuturor dependentelor functionale este numit si inchiderea lui F si se
noteaza cu F+.
8/9/2019 Baze de Date_10
11/19
Curs 10 11Baze de date
Ca exemplu, se presupune ca se specifica urmatorul set al
dependentelor functionale F pentru schema relatie:
F = {Ssn --> {A_Nume, Dat_Na, Adr, D_Nr},
D_Nr --> {D_Nume, Dep_Manager}}
Se pot inferentia urmatoarele dependente functionale aditionale din F:
Ssn --> {D_Nume, Dep_Manager},
Ssn --> Ssn,D_Nr --> D_Nume
Atunci cind se discuta de dependenta functionala se va utiliza un set de
notatii in care concatenarea atributelor se va reprezenta simplu
eliminind virgula, asa ca:FD: [X,Y] --> Z va fi scrisa XY --> Z, si
FD: [X,Y,Z] -->[U,V] se va scrie XYZ --> UZ.
8/9/2019 Baze de Date_10
12/19
Curs 10 12Baze de date
Regulile de dependenta functionala pot fi sintetizate in urmatoareaforma:
(Regula de reflexivitate) Daca XY, atunci X --> Y, arata ca un setde atribute permit determinarea unui alt subset care ii apartine;
(Regula de argumentare) [X --> Y] I= [XZ --> YZ], arata caadaugarea aceluiasi set de atribute in membrul sting si in celdrept al dependentei determina o alte dependenta valida;
(Regula de tranzitivitate) [X --> Y, Y --> Z] I=[X --> Z]
(Regula de decompozitie) [X --> YZ] I= [X --> Y], arata ca sepoate renunta la atribute din membrul drept al dependentei.Aplicarea repetata a acestei reguli poate descompune o regula detipul FD X --> {A1,A2,...,An}, intr-un set de dependente {X-->A1,X-->A2,...,X-->An};
(Regula de reuniune) [X --> Y, X --> Z] I= X --> YZ, lucreaza inopozitie cu regula de decompozitie;
(Regula de pseudotranzitivitate) [X --> Y,WY --> Z] I= WX -->Z.
Simbolul I= este interpretat ca asertarea validitatii sau deductia logicafacuta pe baza membrului stang
8/9/2019 Baze de Date_10
13/19
Curs 10 13Baze de date
5. Normalizarea in baze de date
Procesul de normalizare a fost propus de Codd (1972) si urmareste
executia asupra unei scheme relatie o unei serii de teste pentru acerceta apartenenta la forma normala. Codd propune trei formenormale (3NF), cea mai buna definire fiind data mai tirziu de Boycesi Codd, fiind cunoscuta sub numele de forma normala Boyce-Codd.
Normalizarea datelor poate fi privita ca un proces in timpul caruiaschemele relatie nesatisfacatoare sint descompuse prin impartireaatributelor in scheme relatie mai mici ce poseda proprietatile dorite.
Forma normala ofera proiectantului bazei de date: un schlet formal pentru analiza schemelor relatie bazat pe chei si
dependenta functionala intre atribute;
o serie de teste ce pot elimina scheme relatii individuale astfel incitbaza de date relationala poate fi normalizata in orice grad. Cind untest nu este trecut relatia va fi descompusa in relatii ce trec testele
de normalitate.Daca o schema relatie are mai mult de o cheie, fiecare este numita o
cheie candidata. Una din cheile candidate este arbitrar denumita sicheie primaracheie primara a schemei relatie, celelalte fiind numite si cheisecundare. Fiecare schema relatie trebuie sa aiba o cheie
primara.
8/9/2019 Baze de Date_10
14/19
Curs 10 14Baze de date
1. Forma normala primara (1NF)1. Forma normala primara (1NF)
Forma normala primara este considerata ca fiind parte a definitiei
formale a unei relatii. Ea nu permite atribute cu mai multe valori,atribute compuse sau combinatii ale lor. Aceasta stabileste cadomeniul atributelor trebuie sa includa numai valori atomice sivaloarea oricarui atribut intr-un n-uplu este o valoare unica indomeniul atributului respectiv. Cu alte cuvinte 1NF nu permite relatiiin relatii sau relatii ca atribute ale n-uplurilor.
Considerind schema relatiei DEPARTAMENTin care cheia primara
este D_Nr si presupunind atributul Loc_Dep, daca fiecaredepartament poseda un numar de locatii, nu o locatie unica, nu seobtine o forma normala primara.
Pentru a normaliza o relatie 1NF o solutie este de a descompunerelatia in doua relatii, in cazul de fata DEPARTAMENTsi LOC_DEP.Ideea porneste de la eliminarea atributului LOC_DEPdin relatiaDEPARTAMENTsi plasarea sa intr-o relatie separata alaturi de
cheia primara DEP_NRa relatiei DEPARTAMENT. O alta solutiepentru normalizare este cea prin care se pastreaza un n-uplu inrelatia DEPARTAMENTpentru fiecare locatie a departamentului. Inacest caz obtinem o mare redondanta. Prima solutie este mult maiavantajoasa deoarece elimina redondantele.
8/9/2019 Baze de Date_10
15/19
Curs 10 15Baze de date
2. Forma normala secundara (2NF)2. Forma normala secundara (2NF)
Forma normala secundara se bazeaza pe conceptul dependentei
functionale complete. Odependeta functionaladependeta functionala X-->Y este completacompletadaca eliminarea oricarui atribut A din X distruge dependetafunctionala (oricare ar fi atributul A apartinind lui X, (X-(A))-/->Y). Odependenta functionaladependenta functionala X --> Y estepartialapartiala daca pot fi eliminateatribute din X fara ca dependenta functionala sa fie afectata (existacel putin un atribut A apartinind lui X, (X-(A))-->Y). Ca exemplu,
pentru relatia ANGAJAT-PROIECT specificata anterior {Ssn,P_Nr} --> Ore este o dependenta functionala completa intrucitSsn-/->Ore si nici P_Nr-/->Ore. In schimb dependenta{Ssn,P_Nr} --> A_Nume este partiala intrucit Ssn --> A_Nume.
Daca o relatie nu contine numai dependente functionale complete ease normalizeaza prin descompunere in mai multe relatii ce ofera
functional dependenta completa, asa cum de ilustreaza in urmatorulexemplu.
8/9/2019 Baze de Date_10
16/19
Curs 10 16Baze de date
Ex:Ssn P_Nr Ore A_Nume P_Nume P_Loc
Ssn P_Nr Ore Ssn A_Nume
P_Nr P_Nume P_loc
S-a ilustrat descompunerea relatiei angajat_proiect in trei relatii ce
respecta forma normala de ordin trei (2NF)
8/9/2019 Baze de Date_10
17/19
Curs 10 17Baze de date
3. Forma normala de ordin trei (3NF)3. Forma normala de ordin trei (3NF)
Forma normala de ordin trei este bazata pe conceptul dependentei
tranzitive. O dependenta functionala X-->Y in relatia R estetranzitivatranzitiva daca exista un set de atribute Z ce nu sint un subset aloricarei chei din R, pentru care exista ambele dependinte: X-->Zsi Z-->Y. De exemplu, dependenta Ssn-->Dep_Manager este odependenta tranzitiva in relatia ANGAJAT_DEPARTAMENT.
Structura relatiei:
Angajat_departament(A_nume, Ssn, Dat_na, Adresa, Dep_nr,Dep_nume, Dep_manager)
Se poate spune ca dependenta atributului Dep_Manager de atributulcheie Ssn este tranzitiva prin Dep_Nr din cauza ca ambeledependente Ssn-->Dep_Nr si Dep_Nr-->Dep_Manager sint validesi Dep_Nr nu este un subset al cheii relatieiANGAJAT_DEPARTAMENT. Intuitiv se observa ca dependenta
atributului Dep_Manager de Dep_Nr este nedorita intrucitDep_Nr nu este o cheie in relatie.
8/9/2019 Baze de Date_10
18/19
Curs 10 18Baze de date
Ex:
A_Nume Ssn Dat_Na Adresa Dep_Nr Dep_Nume Dep_Manager
A_Nume Ssn Dat_Na Adresa Dep_Nr
Dep_Nr Dep_Nume Dep_Manager
S-a descompus relatia pentru asigurarea formei normale de ordin 3.
8/9/2019 Baze de Date_10
19/19
Curs 10 19Baze de date
Definitii generale 2NF si 3NF, Boyce-Cood (BCNF)
O schema relatie R este 2NF daca fiecare atribut A nonprim in R nu
este partial dependent de orice cheie din R.
O schema relatie R este 3NF daca in orice dependenta functionala
X-->A din R, este indeplinita una din conditiile: fie X este o
supercheie a lui R, fie A este un prim atribut in R.
Forma normala Boyce-Codd este o forma stricta 3NF, intelegind prin
aceasta ca fiecare relatie BCNF este in acelasi timp o relatie 3NF,cu toate ca o relatie 3NF nu este in mod necesar si o relatie BCNF.
Dupa Boyce-Codd o schema relatie R este o forma normala daca
pentru orice dependenta functionala X-->A in R, X este o supercheie
in R. Diferenta intre BCNF si 3NF este marcata prin faptul ca 3NF
permite ca A sa fie nonprim daca X nu este o supercheie. Afirmatiade mai sus justifica de ce o relatie BCNF este in acelasi timp si 3NF.