Sunteți pe pagina 1din 24

04-03 - Proiectarea

bazelor de date
Post- i De- Normalizare

Denormalizare
Denormalizarea este un proces de introducere controlat a
unor atribute (i chiar tabele) suplimentare, de obicei
calculabile, pentru:
mrirea vitezei de lucru a bazei de date i, implicit, a
aplicaiei
implementarea unor restricii (reguli ale afacerii Business
Rules) ceva mai complexe:
O factur nu poate avea mai mult de 10 linii
Nu se mai vinde nimic clienilor cu soldul mai mare de 100000 lei
Un student poate mprumuta, la un moment dat:
Max 3 cri dac este la licen
Max 5 cri dac este la master
Max 8 cri dac este doctorand

O nregistrare contabil nu poate avea mai multe conturi,


simultan, i pe debit i pe credit

controlul drepturilor de acces i programului de lucru al


utilizatorilor etc.

Carduri1 normalizare 100%


DataOraAlimentare IBANContSurs

Adresa
DenClient

Sursa

IdAlimentareCont

SumaIntrat

IdClient
DataOraPlat

IBAN
TipCont

SoldIniial

IdCont

DataOraDeschidere

IdPlat

DestinaiePlat
SumaPlat

IBANContDestinaie

CLIENTI {IdClient, DenClient, Adresa, .}


CONTURI {IdCont, IBAN, TipCont, DataOraDeschidere, SoldInitial}
ALIMENTARI {IdAlimentareCont, IdCont, DataOraAlimentare, Sursa,
IBANContSursa, SumaIntrata}
PLATI {IdPlata, IdCont, DataOraPlata, DestinatiePlata,
IBANContDestinatie, SumaPlata}

Carduri1 diagrama E-R


(Barker)

Carduri1 diagrama relaional

Carduri1 dezavantaj principal


n orice moment, aflarea soldului curent al unui cont presupune
prelucrarea unui volum imens de date (dup numai civa ani)

SELECT IBAN, SoldInitial, COALESCE(TotalIntrari, 0) AS Intrari ,


COALESCE(TotalIesiri, 0) AS Iesiri, SoldInitial +
COALESCE(TotalIntrari, 0) - COALESCE(TotalIesiri, 0) AS
SoldFinal
FROM conturi c LEFT OUTER JOIN
(SELECT IdCont, SUM(SumaIntrata) AS TotalIntrari
FROM alimentari
GROUP BY IdCont) INTRARI ON c.IdCont=INTRARI.IdCont
LEFT OUTER JOIN
(SELECT IdCont, SUM(SumaPlata) AS TotatIesiri
FROM plati
GROUP BY IdCont) IESIRI ON c.IdCont=IESIRI.IdCont

Carduri2 soluie denormalizat


DataOraAlimentare IBANContSurs

Adresa
DenClient

Sursa

IdAlimentareCont

SumaIntrat

IdClient
DataOraPlat

IBAN
TipCont

SoldIniial

IdCont

IdPlat

SoldCurent
DataOraDeschidere

DestinaiePlat
SumaPlat

IBANContDestinaie

CLIENTI {IdClient, DenClient, Adresa, .}


CONTURI {IdCont, IBAN, TipCont, DataOraDeschidere, SoldInitial, SoldCurent}
ALIMENTARI {IdAlimentareCont, IdCont, DataOraAlimentare, Sursa,
IBANContSursa, SumaIntrata}
PLATI {IdPlata, IdCont, DataOraPlata, DestinatiePlata, IBANContDestinatie,
SumaPlata}

Carduri2 diagram E-R


(Barker)

BD Vnzri - soluii
denormalizate
Obiective:
Validitate temporal
Creterea vitezei de acces a aplicaiei,
tiind ca anume informaii sunt solicitate
frecvent:
Valoarea TVA pentru o factur
Valoarea total (cu TVA) a unei facturi
Valoarea ncasat din fiecare factur

Crearea premiselor pentru


implementarea unor restricii complexe

Vnzri1_Sol3
TVAFact

DataFact
CodCl

ValTotala
Valncasat

UM

NrFact
CodPr

Linie

Cantitate

DenPr

Grupa
ProcentTVA_Crt

TVALinie

PreUnit

PRODUSE{CodPr, DenPr, UM, Grupa, ProcentTVA_Crt}


FACTURI {NrFact, DataFact, CodCl, TVAFact, ValTotala,
ValIncasata }
LINIIFACT {NrFact, Linie, CodPr, Cantitate, PretUnit, TVALinie}

Diagram E-R Vnzri1_Sol3

Diagram relaional Vnzri1_Sol3

Vnzri1_Sol3 avantaje/dezavantaj
Avantaje
Simplitate (numr mic de atribute)
Se cunosc procentele TVA curente
Se poate afla i o parte din procentele TVA
precedente (TVALinie/(cantitate * pretunit)
Calculul simplu al valorii i TVA unei facturi

Dezavantaj
Nu putem cunoate cu exactitate istoria
procentelor TVA pentru fiecare produs n decursul
anilor (ci numai n msura n care am vndut
aceste produse)

Vnzri1_Sol4
TVAFact

DataFact

DataIntrareVigoareProcTV

ValTotala
Valncasat

CodCl

UM

NrFact
CodPr

Linie

Cantitate
PreUnit

DenPr

Grupa
ProcentTVA_Crt

TVALinie

ProcentTVA

DataIesireVigoareProcTVA

PRODUSE{CodPr, DenPr, UM, Grupa, ProcentTVA_Crt}


FACTURI {NrFact, DataFact, CodCl, TVAFact, ValTotala,
ValIncasata }
LINIIFACT {NrFact, Linie, CodPr, cantitate, PreUnit, TVALinie}
PRODUSE_TVA {CodPr, DataIntrareVigoare, DataIesireVigoare,
ProcentTVA}

Diagram E-R Vnzri1_Sol4

Diagram relaional
Vnzri1_Sol4

Vnzri1_Sol4
avantaje/dezavantaje
Avantaje
Se cunosc procentele TVA curente
Putem cunoate cu exactitate istoria procentelor
TVA pentru fiecare produs n decursul anilor
Calculul simplu al valorii i TVA unei facturi

Dezavantaje
Atribute suplimentare
Efort suplimentar de actualizare a tabelei
PRODUSE_TVA este un dezavantaj aparent,
pentru c actualizarea sa se poate realiza
automat, prin declanoare

Recapitulare: modificarea schemei BD Vnzri


Vnzri2 (1) nouti
Pentru validitate temporal:
Atributul LINIIFACT.TVALinie

Pentru istoric (preluarea modificrilor de valori)


Tabela PRODUSE_TVA
Tabela IST_FUNCTII

Pentru implementarea unor restricii:


FACTURI.NrLinii (pentru o restricie de genul: O
factur nu poate avea mai mult de 30 de linii)
CLIENTI.SoldCurent (pentru o restricie de genul:
Unui client nu i mai vindem nimic dac are o
datorie (rest de plat) mai mare de 30000 lei)

Recapitulare: modificarea schemei


BD Vnzri
Vnzri2 (2)
Pentru mrirea vitezei de acces:
CLIENTI.SoldCurent
FACTURI.ValTotala
FACTURI.TVAFact
FACTURI.ValIncasata

Atribut care nu are legtur cu


denormalizarea:
FACTURI.Validare (vezi explicaii la curs)

Diagram E-R Vnzri2

Diagram relaional Vnzri2

Pn unde se poate merge cu


denormalizarea ?
Se pot introduce atribute/tabele noi
(redundante) pentru orice categorie de
informaii solicitat frecvent
Ex:
Pt. CLIENI: Solduri iniiale, rulaje, solduri
finale pentru fiecare an/lun
Pentru VNZRI:
Centralizare Produse Clieni Zile
Centralizare Produse-Zile
Centralizare Vnzri-Zi-Client sau Vnzri An
Lun
...

O denormalizare (poate) exagerat

Atribute pentru introducerea unor


reguli (Business Rules) mai complexe
Liniile unei facturi s fie ordonate strict, fr
intervale
Numrul de linii ale unei facturi s nu fie mai
mare de 25
Soldul unui client sa nu fie mai mare dect...
nchideri contabile
Acces difereniat la tabele/atribute, n funcie
de categoria utilizatorului
Acces difereniat la clieni (n funcie de user)

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