Baze de Date_10

download Baze de Date_10

of 19

Transcript of Baze de Date_10

  • 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.