Download - Baze de Date Curs 2-3 Fabbv

Transcript
  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    1/32

    CURSURILE 2-3

    NORMALIZAREA BAZELOR DE DATE

    1

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    2/32

    Normalizarea BAZELOR DE DATE

    Obiectivul central al normalizrii l reprezint concepereabazelor de date. O baz de date normalizat trebuie s conintabele (relaii) n care s nu existe anomalii sau pierderi deinformaii si s respecte att restriciile modelului relaional cti cerinele definite de ctre utilizator.

    DE CE NORMAL IZARE? PENTRU A EVITA EXISTENA UNEI SINGURE RELAIISUPRADIMENSIONATE

    PENTRU C DESCOMPUNEREA N RELAIIDIMENSIONATE OPTIM ASIGUR OMOGENITATEASEMANTIC

    LIMITEAZ DUPLICAREA INFORMAIILOR N TABELE IELIMIN POTENTIALELE ANOMALII DE ACTUALIZARE

    !!! Descompunerea eronat conduce la PIERDERI DEINFORMAII I RECOMPUNERI ERONATE.

    2

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    3/32

    3

    EXEMPLU DE

    DESCOMPUNERE

    ERONAT

    COMPUNERE natural

    dac pe campul Model

    Maini Numr Culoare Model Marca

    12 B113 alb r4 Renault

    13 B666 verde 2cv Citroen

    11B999 negru r4 Renault

    13B777 alb ds CitroenMasina Numar Model

    12 B113 r4

    13 B666 2cv

    11B999 r4

    13B777 ds

    Constructor Model Marca Culoare

    r4 Renault alb

    2cv Citroen verde

    r4 Renault negru

    ds Citroen alb

    Masini numar Culoare Model marca

    12 B113 alb r4 Renault

    12 B113 negru r4 Renault

    13B666 verde 2cv Citroen

    11B999 alb r4 Renault

    11B999 negru r4 Renault

    13B777 alb ds Citroen

    Nu rezult aceeai relaie!!!!

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    4/32

    4

    Maini Numr Culoare Model Marca

    12 B113 alb r4 Renault

    13 B666 verde 2cv Citroen

    11B999 negru r4 Renault

    13B777 alb ds Citroen

    VEHICUL Numr Culoare Model

    12 B113 alb r4

    13 B666 verde 2cv

    11B999 negru r4

    13B777 alb ds

    Constructor Model Marca

    r4 Renault

    2cv Citroen

    ds Citroen

    COMPUNERE natural dacpe campul Model sunt valori

    egale

    Descompunere corect

    Maini Numr Culoare Model Marca

    12 B113 alb r4 Renault

    13 B666 verde 2cv Citroen

    11B999 negru r4 Renault

    13B777 alb ds Citroen

    Prin recompunere rezultaceeai relaie!!!

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    5/32

    Serie factur Numar

    factura

    Data factur Cod furnizor Denumire furnizor Adresfurnizor

    A01 1 01/01/2008 111 S.C. Alfa S.A. Bucureti

    A02 2 12/05/2008 112 S.C. Beta S.A. Braov

    A03 3 15/05/2008 112 S.C. Beta S.A. Braov

    5

    Tabela Furnizori-Facturi

    Tabela Furnizori-Facturi prezint urmtoarele anomalii:

    Redundanpentru facturile emise de acelai furnizor;Anomalii la adugare: se refer la faptul c anumite date ce urmeaz a fi adugate,fac parte din tupluri incomplete (ex: nu pot fi adugai furnizori care nu au emisfacturi)

    Anomalii la modificare:se refer la faptulc e dificil s se modifice o realizare,dac ea se repet n mai multe tupluri. Dac un furnizor i schimb denumirea,atunci, ea trebuie modificat n toate nregistrrile aferente facturilor emise de acelfurnizor;

    Anomalii la tergere: constau n faptul c anumite informaii ce se doresc a fi terse,fac parte dintr-un tuplu ce conine i alte date care sunt utile n continuare. Deexemplu, tergerea unei facturi din tabela Furnizori-Facturi, conduce la eliminareadin baza de date a furnizorului emitent.

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    6/32

    Eliminarea acestor anomalii se poate realiza prin descompunerearelaiei n mai multe tabele, legate ntre ele prin restriciaintegritii refereniale.

    2.2. Conceptul de dependene

    Dependenelesunt legturi logice, ce se stabilesc ntre

    atributele modelului relaional.Dependene funcionale

    ntre dou atribute A i B exist o dependenfuncionaldac fiecrei valori a lui A i corespunde o

    singur valoare a lui B (simbolizat AB).

    6

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    7/32

    CodFurnizor DenumireFurnizor

    CodMaterial DenumireMaterial

    Unei realizri a cmpului CodFurnizor i corespunde o singur realizare acmpului DenumireFurnizor. De asemenea, unei realizri a cmpuluiCodMaterial, i corespunde o singur realizare a cmpului

    DenumireMaterial

    Se numete dependen funcional complet,odependen funcional de forma A B n care B estedependent funcional de A, fr s fie dependent

    functional de nici una din componentele lui A.

    7

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    8/32

    De exemplu, ntre grupul de cmpuri (NrFactura,

    CodProdus) i Cantitate exist o dependenfuncional complet, deoarece cmpul Cantitatedepinde funcional deambele atribute ale grupului(NrFactur, CodProdus) fr s depind funcionalnumai de NrFactur sau de CodProdus.

    (NrFactur, CodProdus) Cantitate NRFactur Cantitate CodProdus Cantitate

    8

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    9/32

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    10/32

    De exemplu, n relaia R1{CodSectie,NumarInventarMijlocFix,

    MarcaAngajat}exist dependenemultivaloare (ntr-o secie lucreaz maimuli muncitori, la mai multe mijloace fixe).

    Dac fiecare muncitor lucreaz la toatemijlocele fixe, atunci exist urmtoareledependene multivaloare:

    CodSectieNumarInventarMijlocFix CodSectieMarcaAngajat

    10

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    11/32

    O dependenta tranzitiva poate fi stabilita pe baza dependentelor

    functionale dintre 3 atribute :A,B,C.

    11

    B C.

    A B A----- > C

    Dependena multipl: exist o dependen multipl de laAlaB(A

    B) atunci cnd o realizare a luiAdetermin mai multe realizri

    ale luiB;

    Exemple: NrFactur CodProdus; DataFactur NrFacturTrebuie observat faptul, c dac ntre dou atribute A i B exist o

    dependen multivaloare (A B), atunci ntre A i B exist i odependen multipl (AB). Dac ntre A i B exist odependen multipl, asta nu nseamn c ntre cele dou atributeexist i o dependen multivaloare, deoarece n cazul

    dependenelor multivaloare sunt necesare trei atribute.

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    12/32

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    13/32

    Cod Denumire Domiciliu

    01 Ionescu Bucuresti, str. Stefan cel Mare,nr.2

    02 Popescu Ploiesti, str. Viitorului, nr.4

    Numarcomanda Data Material1 Material2

    11 01/01/2008 Ciment Var

    12 02/01/2008 Ciment

    13 02/01/2008 Var Nisip

    13

    Relatiile Persoana, respectiv Comanda nu respecta FORMA

    NORMALA 1.

    Relatia PERSOANA

    Relatia Comanda

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    14/32

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    15/32

    Forma normal 2 (FN2)

    O relaie se afl in FN2 dac respect FN1 i dac oriceatribut noncheie se afl n dependen funcional

    complet fa de cheia primar a relaiei.FN2 interzice existena dependenelor funcionale parialentre atributele cu rol de cheie primar i celelalte atribute.

    EX:Relaia PieseComandate{NumrComand, CodPies,

    Cantitate, PreUnitar, DenumirePies}nu se afl n FN2pentru c ntre (NumrComand, CodPies)iDenumirePiesexist o dependen parial:

    (NumrComand, CodPies) DenumirePies

    CodPies DenumirePiesOBS:Atribut noncheie este un atribut care nu intr n componenachei i pr imare

    15

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    16/32

    NumrComand CodPies Cantitate PretUnitar DenumirePies

    1 01 100 20 Saiba

    1 02 150 25 Rotor

    2 01 200 20 Saiba

    16

    RelaiaMaterialeComandateprezint urmtoarele anomalii:Redundanpentru cmpurile care depind parial de cheiaprimar. Realizrile cmpuluiDenumirePies, se repet inutil.Anomalii la adugare: nu se pot aduga piese dac nu s-au fcutcomenzi pentru acestea;

    Anomalii la modificare: dac se modific denumirea unei piese,atunci trebuie modificate toate nregistrrile care conindenumirea piesei respective;

    Anomalii la tergere: tergerea unei comenzi poate conduce latergerea definitiv a unor piese.

    RelaiaMaterialeComandate

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    17/32

    Pentru aducerea relaiilor din FN1 n FN2, se parcurgurmtoarele etape:

    Se identific eventualele dependene funcionale

    pariale; Fiecare dependen funcional parial va genera

    cte o relaie nou. O relaie nou format va avea castructur atributele participante n dependenafuncional parial;

    Atributele determinante devin chei externe n relaiileiniiale i chei primare n relaiile nou formate.

    17

    18

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    18/32

    Parcurgnd aceste etape, relaiaPieseComandate{NumrComand, CodPies, Cantitate,PreUnitar, DenumirePies}se va descompune n urmtoarelerelaii:

    PieseComandate{NumrComand, CodPies, Cantitate,PreUnitar} i

    Piese{CodPies, DenumirePies}

    Forma normal 3 (FN3)

    O relaie verific FN3 dac se afl n FN2 idac toate atributele noncheie sunt dependentefuncional netranzitiv de cheia primar a relaiei

    ( toate atributele care nu aparin cheii primares nu depind funcional de un alt atribut sauansamblu de atribute noncheie).

    18

    19

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    19/32

    De exemplu, relaia Comand{NumrComand, Data,CodClient, DenumireClient}nu respect FN3, pentru c ntreNumrComandi DenumireClientexist o dependen

    funcional tranzitiv:

    19

    NumrComand CodClientDenumireClientNumrComand-------DenumireClient

    Pentru aducerea unei relaii din FN2 n FN3, se parcurgurmtoarele etape:

    Se identific eventualele dependene funcionale tranzitive;

    Determinantul noncheie mpreun cu atributul sau atributele

    determinate funcional de ctre acesta, vor forma o nou relaie;

    Determinantul noncheie devine cheie primar n relaia nou formati cheie extern n relaia iniial.

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    20/32

    21

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    21/32

    Forma normal Boyce-Codd (BCNF)

    Relaiile din baza de date trebuie proiectate astfel nct s nuaib nici dependene pariale, nici dependene tranzitive,deoarece acestea duc la apariia anomaliilor de actualizare.Formele FN2i FN3 elimin dependenele pariale i tranzitivepe cheia primar.

    Forma normal Boyce-Codd se bazeaz pe dependenelefuncionale care iau n consideraie toate cheile candidat

    dintr-o relaie. Pentru o relaie cu o singur cheie candidat, formele FN3i

    BCNF sunt echivalente.

    Forma normal Boyce-Codd: o relaie se afl n BCNF dac inumai dac fiecare determinant este o cheie candidat.

    Pentru a testa dac o relaie este n BCNF, se identific toideterminanii i se verific dac sunt chei candidat. Amintim cun determinant este un atribut sau un grup de atribute, decare alte atribute sunt total dependente funcional.

    21

    22

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    22/32

    Proiectarea modelului relaional prin normalizare

    Proiectarea BD prin procedeul de normalizare presupuneobinerea modelului relaionalal BD prin aplicarea formelornormale asupra unui set de atribute ce formeaz iniial un singurtabel. Aceast metod se poate aplica numai n cazul unor baze

    de date de dimensiuni mici.Conceperea bazelor de date prin normalizare se poate realizaprin:

    a. descompunerea relaiei universale iniiale n mai multe

    tabele;b.compunerea unei mulimi de atribute n tabele utiliznd matricea

    dependenelor

    c.Compunerea unei multimi de atribute in tabele utiliznd graful

    dependenelor.

    22

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    23/32

    2 Specif icarea regu l i lor de gestiune: diversele 24

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    24/32

    2. Specif icarea regu l i lor de gestiune: diverselerestricii/condiii impuse datelor sunt atent studiate deoarece vorconstitui logica dependenelor dintre atribute i a regulilor devalidare.

    Exemplu:- o factur este emis de un singur furnizor;- codul materialului este unic;

    - o factur conine mai multe materiale ;

    - furnizorii pot fi numai persoane juridice etc.Algoritmii de calcul sunt asimilai regulilor de gestiune.Exemplu:

    RG5:Valoare_factura=Cantitate*Pret Unitar

    24

    25

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    25/32

    3. Intocmirea dictionarului de date

    Atributele inventariate se trec in dictionarul de date o singura data

    cu respectarea urmatoarelor reguli:

    -nu se trec atributele derivate/calculate-nu se trec atributele sinonime (Cod material, Simbol material)

    -nu se trec grupurile de atribute repetitive.

    25

    Nr.atribut

    Identificator Explicatie

    1. CodFurnizor Cod Furnizor

    2. DenumireFurnizor Denumirea furnizorului

    3. AdresaFurnizor Adresa Furnizorului

    4. NrFactura Numar Factura

    5. DataFacturii Data Factura

    26

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    26/32

    4.Stabilirea dependentelor functionale

    A.Graful dependentelor functionale

    26

    CodFurnizor

    Denumirefurnizor

    AdresaFurnizor

    Nrfactura Data facturii

    27

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    27/32

    B.Matricea dependentelor functionale

    Cod furnizor Denumire

    furnizor

    Adresa

    furnizor

    Numar

    factura

    Data facturii

    Cod

    furnizor1 1

    Denumire

    furnizor1 1

    Adresa

    furnizor1 1

    Numarfactura

    1 1T 1T 1

    Data facturii

    27

    4 Pentru atributele rmase izolate se vor cuta grupuri de cmpuri ce pot28

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    28/32

    4. Pentru atributele rmase izolate se vor cuta grupuri de cmpuri ce potconstitui determinani ai acestora. Toate atributele (grupuri de atribute)determinante devin chei candidate. Cheile candidate ce vor aparine aceluiaitabel sunt caracterizate prin dependene funcionale reciproce.

    (CodFurnizorDenumireFunizor, CodFurnizorAdresa)

    5. Se stabilesc c heile prim are dintre atributele candidate.Exemplu:CodFurnizor,NumrFactur

    6. Cu fiecare cheie primar i atributele determinate direct (netranzitiv) de

    aceasta se va forma o relaie (un tabel).Exemplu:Furnizor(CodFurnizor, DenumireFurnizor, AdresaFurnizor)

    Factur(NumrFactur, Data, CodFurnizor)

    7. Se stabilesc cheile externe (cmpuri ce sunt chei primare n alte tabele)

    Exemplu:

    Furnizor(CodFurnizor, DenumireFurnizor, AdresaFurnizor)

    Factur(NumrFactur, Data, CodFurnizor)

    28

    29

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    29/32

    Exemplu de proiectare a BD prin

    descompunerea relaiei universale Relaia universal este o relaie alctuit din toate atributele identificate,

    necesare aplicaiei. Normalizarea presupune descompunerea relaieiuniversale iniiale n alte relaii, prin trecerea gradual a acesteia prin fiecareform normal.

    Exemplu: n vederea obinerii unei baze de date necesare evidenei crediteloracordate clienilor, se au n vedere urmtoarele reguli de gestiune:

    un client poate ncheia mai multe contracte. Un contract e ncheiat de un

    singur client.

    rambursarea contractelor de credit, se poate realiza prin dispoziii de plat. O

    dispoziie de plat se refer la un singur contract de credit, iar pentru uncontract, se pot ntocmi mai multe dispoziii de plat.

    Se consider iniial, relaia universal R{CodClient, Denumire, Domiciliu,NrContract, DataContract, ProcentDobanda,ProcentComision, ValoareCredit,

    NumrDP, DataDP, SumaDP}

    29

    30

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    30/32

    FN1. Relaia nu respect FN1, deoarece nu toateatributele sunt elementare. Atributul Domiciliu se descompune n

    atributele Adresa i Localitate (intereseaz pentru aplicaie o

    grupare/selectare a informaiilor dup localiti). Astfel, relaiauniversal devine:

    R{CodClient, Denumire, Localitate, Adres, NrContract,DataCon tract, ProcentDobanda,ProcentCom ision,

    ValoareCredit, NumrDP, DataDP, SumaDP}

    Se observ ca n relaia R, exist anomalii la actualizare.

    Acestea vor fi eliminate n urmtoarele forme normale.

    FN2: Relaia R respect FN2

    30

    31

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    31/32

    FN3: Relaia Rnu respect FN3. Exist urmtoareledependene funcionale tranzitive:

    (1)NumarDP CodClient Denumire

    (2)NumarDP CodClient Localitate

    (3)NumarDP CodClient Adresa

    (4)NumarDP NrContract DataContract

    (5)NumarDP NrContract ProcentComision (6)NumarDP NrContract ProcentDobanda

    (7)NumarDP NrContract ValoareCredit

    (8)NumarDP NrContract CodClient

    Vor rezulta urmtoarele relaii: Clieni(Codclient, Denumire, localitate, Adresa)

    Contract(NrContract,DataContract,ProcentComision,Proc

    entDobanda,ValoareCredit, Codclient)

    31

  • 8/14/2019 Baze de Date Curs 2-3 Fabbv

    32/32