curs 2-3 Fabbv

32
CURSURILE 2-3 NORMALIZAREA BAZELOR DE DATE 1

description

curs 2-3 Baze de date FABBV

Transcript of curs 2-3 Fabbv

  • CURSURILE 2-3

    NORMALIZAREA BAZELOR DE DATE

    *

  • Normalizarea BAZELOR DE DATE Obiectivul central al normalizrii l reprezint conceperea bazelor de date. O baz de date normalizat trebuie s conin tabele (relaii) n care s nu existe anomalii sau pierderi de informaii si s respecte att restriciile modelului relaional ct i cerinele definite de ctre utilizator. DE CE NORMALIZARE?PENTRU A EVITA EXISTENA UNEI SINGURE RELAII SUPRADIMENSIONATEPENTRU C DESCOMPUNEREA N RELAII DIMENSIONATE OPTIM ASIGUR OMOGENITATEA SEMANTIC LIMITEAZ DUPLICAREA INFORMAIILOR N TABELE I ELIMIN POTENTIALELE ANOMALII DE ACTUALIZARE!!! Descompunerea eronat conduce la PIERDERI DE INFORMAII I RECOMPUNERI ERONATE.*

  • *EXEMPLU DE DESCOMPUNEREERONAT

    COMPUNERE natural dac pe campul Model sunt valori egale Nu rezult aceeai relaie!!!!

    MainiNumrCuloareModelMarca12 B113albr4Renault13 B666verde2cvCitroen11B999negrur4Renault13B777albdsCitroen

    MasinaNumarModel12 B113r413 B6662cv11B999r413B777ds

    ConstructorModelMarcaCuloarer4Renaultalb2cvCitroenverder4RenaultnegrudsCitroenalb

    MasininumarCuloareModelmarca12 B113albr4Renault12 B113negrur4Renault13B666verde2cvCitroen11B999albr4Renault11B999negrur4Renault13B777albdsCitroen

  • *COMPUNERE natural dac pe campul Model sunt valori egaleDescompunere corectPrin recompunere rezult aceeai relaie!!!

    MainiNumrCuloareModelMarca12 B113albr4Renault13 B666verde2cvCitroen11B999negrur4Renault13B777albdsCitroen

    VEHICULNumrCuloareModel12 B113albr413 B666verde2cv11B999negrur413B777albds

    ConstructorModelMarcar4Renault2cvCitroendsCitroen

    MainiNumrCuloareModelMarca12 B113albr4Renault13 B666verde2cvCitroen11B999negrur4Renault13B777albdsCitroen

  • *Tabela Furnizori-Facturi

    Tabela Furnizori-Facturi prezint urmtoarele anomalii:Redundan pentru 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 emis facturi)Anomalii la modificare: se refer la faptul c 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 acel furnizor;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. De exemplu, tergerea unei facturi din tabela Furnizori-Facturi, conduce la eliminarea din baza de date a furnizorului emitent.

    Serie facturNumar facturaData facturCod furnizorDenumire furnizorAdres furnizorA01101/01/2008111S.C. Alfa S.A.BucuretiA02212/05/2008112S.C. Beta S.A.BraovA03315/05/2008112S.C. Beta S.A.Braov

  • Eliminarea acestor anomalii se poate realiza prin descompunerea relaiei n mai multe tabele, legate ntre ele prin restricia integritii refereniale.

    2.2. Conceptul de dependene

    Dependenele sunt legturi logice, ce se stabilesc ntre atributele modelului relaional. Dependene funcionalentre dou atribute A i B exist o dependen funcional dac fiecrei valori a lui A i corespunde o singur valoare a lui B (simbolizat AB). *

  • CodFurnizor DenumireFurnizorCodMaterial DenumireMaterial

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

    Se numete dependen funcional complet, o dependen funcional de forma A B n care B este dependent funcional de A, fr s fie dependent functional de nici una din componentele lui A. *

  • De exemplu, ntre grupul de cmpuri (NrFactura, CodProdus) i Cantitate exist o dependen funcional complet, deoarece cmpul Cantitate depinde funcional de ambele atribute ale grupului (NrFactur, CodProdus) fr s depind funcional numai de NrFactur sau de CodProdus. (NrFactur, CodProdus) CantitateNRFactur Cantitate CodProdus Cantitate *

  • Dependene multivaloare

    Exist o dependen multivaloare ntre X i Y (XY) dac i numai dac pentru fiecare valoare a lui X pot fi asociate una sau mai multe valori a lui Y;Dependentele multivaloare presupun intotdeauna existenta a trei atribute.*

  • De exemplu, n relaia R1{CodSectie, NumarInventarMijlocFix, MarcaAngajat}exist dependene multivaloare (ntr-o secie lucreaz mai muli muncitori, la mai multe mijloace fixe). Dac fiecare muncitor lucreaz la toate mijlocele fixe, atunci exist urmtoarele dependene multivaloare:CodSectieNumarInventarMijlocFixCodSectieMarcaAngajat*

  • O dependenta tranzitiva poate fi stabilita pe baza dependentelor functionale dintre 3 atribute :A,B,C.

    *B C.A BA----- > CDependena multipl: exist o dependen multipl de la A la B (A B) atunci cnd o realizare a lui A determin mai multe realizri ale lui B;Exemple: NrFactur CodProdus; DataFactur NrFactur Trebuie observat faptul, c dac ntre dou atribute A i B exist o dependen multivaloare (A B), atunci ntre A i B exist i o dependen multipl (A B). Dac ntre A i B exist o dependen multipl, asta nu nseamn c ntre cele dou atribute exist i o dependen multivaloare, deoarece n cazul dependenelor multivaloare sunt necesare trei atribute.

  • Formele normale Formele normale sunt reguli, restricii care trebuie respectate pentru eliminarea anomaliilor ce pot aprea n cadrul relaiilor unui modelul relaional.

    O relaie este n forma normal 1 (FN1), dac i numai dac toate atributele ei conin numai valori atomice (elementare sau indivizibile)

    *FN1 exclude apariia atributelor sau grupurilor de atribute repetitive n cadrul unei relaii.

    De exemplu, relaia Comenzi{Numr, Data, Material1, Material2} nu respect FN1, deoarece conine atribute repetitive.

  • *Relatiile Persoana, respectiv Comanda nu respecta FORMA NORMALA 1.Relatia PERSOANARelatia Comanda

    CodDenumireDomiciliu01IonescuBucuresti, str. Stefan cel Mare,nr.202Popescu Ploiesti, str. Viitorului, nr.4

    NumarcomandaDataMaterial1Material21101/01/2008CimentVar1202/01/2008Ciment1302/01/2008VarNisip

  • Pentru aducerea relaiilor n FN1, se parcurg urmtoarele etape:Atributele compuse sunt nlocuite cu atribute elementare;Pentru grupul de atribute repetitive, se formeaz o alt relaie;Cheia primar a noii relaii va fi compus din cheia primar a primei relaii i alte atribute adiionale din noua relaie. Cheia primar din prima relaie, va fi n noua relaie, cheie extern.innd cont de aceste reguli, relaiile prezentate mai sus vor fi aduse n FN1 astfel:n relaia Persoan, atributul Domiciliu se descompune n atributele Localitate i Adres: Persoan{Cod, Denumire, Localitate, Adres}relaia Comenzi se descompune n relaiile Comand i MaterialeComandate : Comand{Numrcomanda, Dat} i MaterialeComandate{Numrcomanda, denumireMaterial}*

  • Forma normal 2 (FN2)O relaie se afl in FN2 dac respect FN1 i dac orice atribut noncheie se afl n dependen funcional complet fa de cheia primar a relaiei. FN2 interzice existena dependenelor funcionale pariale ntre atributele cu rol de cheie primar i celelalte atribute.EX:Relaia PieseComandate{NumrComand, CodPies, Cantitate, PreUnitar, DenumirePies} nu se afl n FN2 pentru c ntre (NumrComand, CodPies) i DenumirePies exist o dependen parial: (NumrComand, CodPies) DenumirePies CodPies DenumirePiesOBS:Atribut noncheie este un atribut care nu intr n componena cheii primare*

  • *Relaia MaterialeComandate prezint urmtoarele anomalii:Redundan pentru cmpurile care depind parial de cheia primar. Realizrile cmpului DenumirePies, se repet inutil.Anomalii la adugare: nu se pot aduga piese dac nu s-au fcut comenzi pentru acestea;Anomalii la modificare: dac se modific denumirea unei piese, atunci trebuie modificate toate nregistrrile care conin denumirea piesei respective;Anomalii la tergere: tergerea unei comenzi poate conduce la tergerea definitiv a unor piese.

    Relaia MaterialeComandate

    NumrComandCodPiesCantitatePretUnitarDenumirePies10110020Saiba10215025Rotor20120020Saiba

  • Pentru aducerea relaiilor din FN1 n FN2, se parcurg urmtoarele etape:Se identific eventualele dependene funcionale pariale;Fiecare dependen funcional parial va genera cte o relaie nou. O relaie nou format va avea ca structur atributele participante n dependena funcional parial;Atributele determinante devin chei externe n relaiile iniiale i chei primare n relaiile nou formate.*

  • Parcurgnd aceste etape, relaia PieseComandate{NumrComand, CodPies, Cantitate, PreUnitar, DenumirePies} se va descompune n urmtoarele relaii:PieseComandate{NumrComand, CodPies, Cantitate, PreUnitar} i Piese{CodPies, DenumirePies}Forma normal 3 (FN3)O relaie verific FN3 dac se afl n FN2 i dac toate atributele noncheie sunt dependente funcional netranzitiv de cheia primar a relaiei ( toate atributele care nu aparin cheii primare s nu depind funcional de un alt atribut sau ansamblu de atribute noncheie).*

  • De exemplu, relaia Comand{NumrComand, Data, CodClient, DenumireClient} nu respect FN3, pentru c ntre NumrComand i DenumireClient exist o dependen funcional tranzitiv:*

    NumrComand CodClient DenumireClientNumrComand -------DenumireClientPentru aducerea unei relaii din FN2 n FN3, se parcurg urmtoarele 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 format i cheie extern n relaia iniial.

  • Parcurgnd aceste etape, relaia iniial Comand{NumrComand, Data, CodClient, DenumireClient}, se va descompune n urmtoarele relaii: Comand{NumrComand, Data, CodClient} i Client{CodClient, DenumireClient}

    *

  • Forma normal Boyce-Codd (BCNF)Relaiile din baza de date trebuie proiectate astfel nct s nu aib nici dependene pariale, nici dependene tranzitive, deoarece acestea duc la apariia anomaliilor de actualizare. Formele FN2 i FN3 elimin dependenele pariale i tranzitive pe cheia primar.Forma normal Boyce-Codd se bazeaz pe dependenele funcionale care iau n consideraie toate cheile candidat dintr-o relaie.Pentru o relaie cu o singur cheie candidat, formele FN3 i BCNF sunt echivalente.Forma normal Boyce-Codd: o relaie se afl n BCNF dac i numai dac fiecare determinant este o cheie candidat.Pentru a testa dac o relaie este n BCNF, se identific toi determinanii i se verific dac sunt chei candidat. Amintim c un determinant este un atribut sau un grup de atribute, de care alte atribute sunt total dependente funcional.*

  • Proiectarea modelului relaional prin normalizare

    Proiectarea BD prin procedeul de normalizare presupune obinerea modelului relaionalal BD prin aplicarea formelor normale asupra unui set de atribute ce formeaz iniial un singur tabel. Aceast metod se poate aplica numai n cazul unor baze de date de dimensiuni mici. Conceperea bazelor de date prin normalizare se poate realiza prin:a.descompunerea relaiei universale iniiale n mai multe tabele;compunerea unei mulimi de atribute n tabele utiliznd matricea dependenelorCompunerea unei multimi de atribute n tabele utiliznd graful dependenelor.

    *

  • Metoda matricii dependenelor funcionale i a grafului DFEtape:1. Inventarierea atributelor: Proiectantul va selecta atributele din diverse documente utilizate n circuitul informaional: nomenclatoare (nomenclatorul materialelor, lista furnizorilor etc.), documente primare i centralizatoare (facturi, chitane, situaia aprovizionrilor, balana stocurilor etc.).Exemplu:Numr facturData facturCod furnizorDenumire furnizorAdresa

    *

  • 2. Specificarea regulilor de gestiune: diversele restricii/condiii impuse datelor sunt atent studiate deoarece vor constitui logica dependenelor dintre atribute i a regulilor de validare.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

    *

  • 3. Intocmirea dictionarului de dateAtributele 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.

    *

    Nr. atributIdentificatorExplicatie1.CodFurnizorCod Furnizor2.DenumireFurnizorDenumirea furnizorului3. AdresaFurnizorAdresa Furnizorului4. NrFacturaNumar Factura5. DataFacturiiData Factura

  • Graful dependentelor functionale*CodFurnizorDenumirefurnizorAdresaFurnizorNrfacturaData facturii

  • Matricea dependentelor functionale*

    Cod furnizorDenumire furnizorAdresa furnizorNumar facturaData facturiiCod furnizor11Denumire furnizor11Adresa furnizor11Numar factura11T1T1Data facturii

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

    (CodFurnizorDenumireFunizor, CodFurnizorAdresa)

    5. Se stabilesc cheile primare 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)*

  • Exemplu de proiectare a BD prin descompunerea relaiei universaleRelaia universal este o relaie alctuit din toate atributele identificate, necesare aplicaiei. Normalizarea presupune descompunerea relaiei universale iniiale n alte relaii, prin trecerea gradual a acesteia prin fiecare form normal.

    Exemplu: n vederea obinerii unei baze de date necesare evidenei creditelor acordate 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 un contract, 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}

    *

  • FN1. Relaia nu respect FN1, deoarece nu toate atributele sunt elementare. Atributul Domiciliu se descompune n atributele Adresa i Localitate (intereseaz pentru aplicaie o grupare/selectare a informaiilor dup localiti). Astfel, relaia universal devine:

    R{CodClient, Denumire, Localitate, Adres, NrContract, DataContract, ProcentDobanda,ProcentComision, 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

    *

  • FN3: Relaia R nu respect FN3. Exist urmtoarele dependene 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 CodClientVor rezulta urmtoarele relaii:Clieni(Codclient, Denumire, localitate, Adresa)Contract(NrContract,DataContract,ProcentComision,ProcentDobanda,ValoareCredit, Codclient)*

  • i ce a mai rmas din relaia R:DispoziieDePlata{NumarDP, DataDP, SumaDP, CodClient, NumarContract}Datorit dependenei (8), cheia extern CodClient va fi eliminat (este o cheie extern derivat/tranzitiv), iar relaia va deveni:DispoziieDePlata{NumarDP,DataDP,SumaDP, NumarContract}FNBC: relaiile obinute n FN3, verific FNBC. Toi determinanii dependenelor sunt chei candidate.

    *

    *