Sunteți pe pagina 1din 20

Proiectarea modelului relaţional

1. prin normalizare utilizând formele normale


2. prin normalizare utilizând matricea dependenţelor funcţionale
1. Proiectarea modelului relaţional prin
normalizare utilizând formele normale
• 1. Inventarierea atributelor şi constituirea tabelului relaţional iniţial (relaţiei
universale). Se vor prelua toate atributele care fac obiectul problemei de rezolvat,
din documentele primare şi situaţiile de ieşire.
• 2. Se determină cheia primară a relaţiei şi se reprezintă toate dependenţele
funcţionale ce decurg de aici.
• 3. Se elimină atributele calculabile şi cele repetitive astfel încât tabelul iniţial să
respecte FN1.
• 4. Se elimină dependenţele funcţionale parţiale prin descompunerea tabelului
iniţial în tabele cu structuri mai simple, care să respecte FN2.
• 5. Se elimină dependenţele funcţionale tranzitive prin descompunerea tabelelor
din etapa anterioară astfel încât acestea să respecte FN3.
Exemplu
• Se doreste realizarea unei baze de date pentru evidenta cartilor. Autorii vor fi
înregistrati o singura data în cadrul bazei de date. Pentru identificarea fiecarui
autor,acesta va primi un cod unic utilizand CNP de 13 caractere numerice. În baza
de date se vor memora numele si prenumele, adresa, data nasterii pt autorii cu varsta
mai mare de 18 ani. Autorii pot publica una sau mai multe carti identificate prin cod
ISBN, denumire carte, data aparitie, stoc tiparit, pret de baza, nume coordonator.
O carte poate fi vanduta prin facturare. O factura se identifica prin numar factura si
data factura, precum si data scadenta. Trebuie retinut în baza de date clientul care
cumpara carti pe baza facturilor. Acesti client se identifica prin cod fiscal, denumire
client, adresa, localitate si telefon.
• Reguli de gestiune:
• • Autorii pot scrie mai multe carti.
• • Cartile pot fi vandute prin facturi clientilor.
• Cerinte:
• 1. Sa se realizeze dictionarul datelor;
• 2. Sa se construiasca tabelele asociate datelor si sa se aduca în forma normala 3.
1. Inventarierea atributelor şi constituirea tabelului
relaţional iniţial (relaţiei universale).
2. Se determină cheile primare

• CNP, CodISBN, Cod Fiscal Client, Numar Factura


3. Se elimină atributele calculabile şi cele
repetitive
• Adresa (din Client si din Autori este la fel)
• Pretul din tabela Carti este diferit de pretul din tabela Continut Factura

• Sunt indeplinite conditiile pentru FN1


4. Se elimină dependenţele funcţionale
parţiale

• Cod Fiscal - cheie externă în tabela Facturi

• Sunt indeplinite conditiile pentru FN2


5. Se elimină dependenţele funcţionale tranzitive –
se constituie tabelele
Autori-Carti și Continut Factura

Sunt indeplinite conditiile pentru FN3


2. Proiectarea modelului relaţional prin
normalizare utilizând matricea dependenţelor
funcţionale
• 1. Inventarierea atributelor. Într-un dicţionar al datelor se vor prelua toate atributele care fac obiectul problemei de
rezolvat, din documentele primare şi situaţiile de ieşire.
• 2. Specificarea regulilor de gestiune – diverse restricţii/condiţii impuse datelor. La nivelul acestei etape, algoritmii de
calcul sunt asociaţi şi ei regulilor de gestiune.
• 3. Întocmirea dicţionarului de date de către proiectantul bazei de date care va urmări respectarea următoarelor reguli:
• atributele sunt înscrise o singură dată;
• sunt eliminate atributele sinonime;
• sunt eliminate atributele calculate.
• 4. Stabilirea cheilor primare.
• 5. Stabilirea dependenţelor funcţionale – ce pot fi descrise printr-un graf al dependenţelor sau în cadrul unei matrice a
dependenţelor funcţionale.
• 6. Pentru atributele izolate se vor căuta grupuri de atribute ce pot constitui determinanţi ai acestora.
• 7. Formarea tabelelor - cu fiecare cheie primară şi atributele determinate direct şi netranzitiv se va forma un tabel.
• 8. Identificarea atributelor cu rol de cheie externă.
• 9. Definitivarea modelului relaţional.
EXEMPLU:
• O societate comercială doreşte să-şi informatizeze activitatea de aprovizionare cu
mărfuri de la furnizori. Furnizorii societăţii, se identifică printr-un cod unic, nume,
localitate, telefon şi cont bancar.
• Aprovizionarea cu mărfuri se realizează în baza facturilor primite de la furnizori,
fiecare Factură identificându-se printr-un număr unic, dată factură, data scadenţei,
codul, denumirea, contul bancar al furnizorului, codul, denumirea şi contul
clientului, codul, denumirea, unitatea de măsură, cantitatea şi preţul mărfurilor
facturate, valoarea acestora, valoare TVA şi valoarea totală a facturii. Pentru fiecare
zi de întârziere (faţă de data scadenţei) a plăţii facturii, furnizorii percep o
penalizare de 1% din valoarea totală a facturii.
• Nomenclatorul mărfurilor include referinţe la codul de marfă, denumire marfă,
unitatea de măsură şi calitate. Nomenclatorul va conţine maxim 100 de mărfuri
distincte ale căror unităţi de măsură sunt exprimate în kg, buc, litri.
• Plata facturii se realizează printr-o Chitanţă, conform facturii emise, în care se
precizează numărul chitanţei, data chitanţei, suma plătită, denumirea şi contul
emitentului, denumirea şi contul beneficiarului (furnizorului). Societatea plăteşte
cu un astfel de document o singură factură.
• Se cere să se proiecteze baza de date relaţională prin normalizare utilizând
matricea dependenţelor funcţionale.
1. Inventarierea atributelor
• Pe baza informaţiilor referitoare la
activitatea de aprovizionare cu
mărfuri de la furnizori, se poate
întocmi dicţionarul de atribute:
2. Specificarea regulilor de gestiune:

• O factură este emisă de un singur furnizor.


• O factură poate conţine mai multe mărfuri, iar o marfă se poate regăsi pe
mai multe facturi.
• O factură poate fi plătită eşalonat.
• O chitanţă este conformă cu o factură emisă de furnizor.
Algoritmi de calcul

• Valoare_Marfă= Σ CantitateFact*PretFact
• TVA=CotaTVA*Valore_Marfa
• ValoareFactura=Valoare_Marfa+TVA
• Nr_zile_întarz=DataChit - DataScad
• Penalizare =Nr_zile_intarziere*ValoareFactura*1/100
• Totalsumepl=Σ sumapl
3. Întocmirea dicţionarului de date, se va realiza pe
baza următoarelor reguli:

• fiecare atribut este înscris o singură dată;


• sunt eliminate atributele sinonime (în exemplul prezentat, CodFz şi CodBenef sunt
sinonime, deci se va reţine doar unul dintre acestea – CodFz);
• nu sunt preluate atributele calculate (Valoare_Marfa, TVA, ValoareFactura,
Nr_zile_întarz, Penalizare, Totalsumepl).

• Dicţionarul de date (DD): CodFz, NumeFz, Localitatea, ContBancar, Telefon,


NrFact, DataFact, DataScad, CantitateFact, PretFact, CotaTVA, CodMarfa,
DenMarfa, UM, Calitate, NrChit, DataChit, SumaPl.
4. Stabilirea cheilor primare

• CodFz, NrFact, CodMarfa, NrChit


5. Stabilirea dependenţelor funcţionale.
6. Atributele izolate

• CantitateFact, PretFact şi CotaTVA vor fi determinate de un grup de atribute


aşa cum sunt reprezentate
• Ne punem întrebarea „De ce Nrfact nu determină funcţional, spre exemplu,
Cantitatefact?”.
• În mod practic, o factură poate conţine mai multe mărfuri achiziţionate şi, prin
urmare, Nrfact nu va determina o singură valoare pentru CantitateFact. Pentru o
factură (NrFact) se poate asocia o valoare totală facturată, dar nu se pot însuma
cantitaţile, preţurile, CotaTva a mărfurilor facturate.
• Atributul compus (Nrfact, CodMarfa) reprezintă o cheie primară care se va adăuga
cheilor identificate în etapa precedentă.
• Dependenţele funcţionale identificate anterior se vor reprezenta într-o Matrice a
dependenţelor funcţionale (reprezentată într-o formă simplificată, fără a include
dependenţele funcţionale multiple şi dependenţele funcţionale multiple tranzitive).
Liniile şi coloanele acestei matrici sunt reprezentate de atributele din dicţionarul de
date şi atributele compuse care au fost identificate ca fiind chei primare. Cheile
primare sunt marcate prin caracterul #. Pentru fiecare cheie primară, pe acea linie,
sunt reprezentate tipurile de dependenţe funcţionale identificate astfel:
• 1- dependenţele funcţionale simple

• 1T - dependenţele funcţionale simple tranzitive


Matricea
dependenţelor
funcţionale
7. Formarea tabelelor. Fiecare cheie primară şi atributele determinate direct şi
netranzitiv vor forma un tabel.
8. Identificarea cheilor externe (atributele subliniate prin linie discontinuă la nivelul
modelului relaţional).
9. Definitivarea modelului relaţional.
• FURNIZORI (CodFz, NumeFz, Localitate, Telefon, ContBancar)
• FACTURI (NrFact, DataFact, DataScad, CodFz)
• MARFURI(CodMarfa, DenMarfa, UM, Calitate)
• MARFURIFACTURATE (CodMarfa, NrFact, CantitateFact, PretFact, CotaTVA)
• CHITANTE (NrChit, DataChit, SumaPl, NrFact)

S-ar putea să vă placă și