Documente Academic
Documente Profesional
Documente Cultură
CURSURILE 2-3
NORMALIZAREA BAZELOR DE DATE
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 SUPRADIMENSIONATE PENTRU 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.
Maini
Model r4 2cv r4 ds
11B999
13B777 Constructor Model r4 2cv r4 ds Marca Renault Citroen Renault Citroen
r4
ds Culoare alb verde negru alb 11B999 13B666
11B999
13B777
negru
alb
r4
ds
Renault
Citroen
Maini
Numr 12 B113
Model r4 2cv r4 ds
VEHICUL
Model r4 2cv r4 ds
Marca
Renault Citroen Citroen
Descompunere corect
Constructor
Model
r4 2cv ds
5
Serie factur Numar factura 1
2 3
Data factur
Cod furnizor
Denumire furnizor
Adres furnizor
A01
A02 A03
01/01/2008
12/05/2008 15/05/2008 Tabela Furnizori-Facturi
111
112 112
Bucureti
Braov Braov
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.
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 funcionale ntre 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).
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.
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) Cantitate NRFactur Cantitate CodProdus Cantitate
Dependene 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.
10
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: CodSectieNumarInventarMijlocFix CodSectieMarcaAngajat
11 O dependenta tranzitiva poate fi stabilita pe baza dependentelor functionale dintre 3 atribute :A,B,C.
AB B C.
A----- > C
Dependena 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.
12
Formele normale
Formele normale sunt reguli, restricii care trebuie respectate pentru eliminarea
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.
13
Relatia PERSOANA
Cod Denumire Domiciliu
01
02
Ionescu
Popescu
Relatia Comanda
Numarcomanda 11 12 Data 01/01/2008 02/01/2008 Material1 Ciment Ciment Var Material2
13
02/01/2008
Var
Nisip
14
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}
15 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 DenumirePies
16
NumrComand 1 1 2 CodPies 01 02 01 Cantitate 100 150 200 PretUnitar 20 25 20 DenumirePies Saiba Rotor Saiba
Relaia MaterialeComandate 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.
17
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.
18
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)
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).
19
CodClient, DenumireClient} nu respect FN3, pentru c ntre NumrComand i DenumireClient exist o dependen funcional tranzitiv: NumrComand CodClient DenumireClient NumrComand -------DenumireClient
Pentru 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.
20
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.
21
22
23
24
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
25
Nr. atribut 1. 2. 3. 4. 5.
Explicatie Cod Furnizor Denumirea furnizorului Adresa Furnizorului Numar Factura Data Factura
26
Nrfactura
Data facturii
27
Denumire furnizor
Adresa furnizor
Numar factura
Data facturii
1 1
1 1
Adresa furnizor
Numar factura
1
1
1
1T 1T 1
Data facturii
4. Pentru atributele rmase izolate se vor cuta grupuri de cmpuri ce 28 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. (CodFurnizor<->DenumireFunizor, CodFurnizor<->Adresa) 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)
29
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,
30
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
31
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 CodClient Vor rezulta urmtoarele relaii: Clieni(Codclient, Denumire, localitate, Adresa) Contract(NrContract,DataContract,ProcentComision,Proc entDobanda,ValoareCredit, Codclient)
32
Contract{NrContract,DataContract,ProcentDobanda, ProcentComision, ValoareContract, 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.