pbd 2 post normalizare, de normalizare

24
04-03 - Proiectarea bazelor de date Post- şi De- Normalizare

Upload: dumea-diana

Post on 26-Jan-2016

23 views

Category:

Documents


0 download

DESCRIPTION

Post

TRANSCRIPT

Page 1: PBD 2 Post Normalizare, De Normalizare

04-03 - Proiectarea bazelor de date

Post- şi De- Normalizare

Page 2: PBD 2 Post Normalizare, De Normalizare

DenormalizareDenormalizarea este un proces de introducere controlată a unor

atribute (şi chiar tabele) suplimentare, de obicei calculabile, pentru:

• mărirea vitezei de lucru a bazei de date şi, implicit, a aplicaţiei• implementarea unor restricţii (reguli ale afacerii – Business Rules)

ceva mai complexe:– O factură nu poate avea mai mult de 10 linii– Nu se mai vinde nimic clienţilor cu soldul mai mare de 100000 lei– Un student poate împrumuta, la un moment dat:

• Max 3 cărţi dacă este la licenţă• Max 5 cărţi dacă este la master• Max 8 cărţi 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.

Page 3: PBD 2 Post Normalizare, De Normalizare

Carduri1 – normalizare 100%

CLIENTI {IdClient, DenClient, Adresa, ….}CONTURI {IdCont, IBAN, TipCont, DataOraDeschidere, SoldInitial}ALIMENTARI {IdAlimentareCont, IdCont, DataOraAlimentare, Sursa,

IBANContSursa, SumaIntrata}PLATI {IdPlata, IdCont, DataOraPlata, DestinatiePlata, IBANContDestinatie,

SumaPlata}

IdClient

Adresa

DenClient

IBANIdCont

DataOraDeschidereSoldIniţial

IdAlimentareCont

DataOraAlimentare

SursaSumaIntrată

IdPlatăTipCont

DataOraPlată

DestinaţiePlată

SumaPlată

IBANContSursă

IBANContDestinaţie

Page 4: PBD 2 Post Normalizare, De Normalizare

Carduri1 – diagrama E-R (Barker)

Page 5: PBD 2 Post Normalizare, De Normalizare

Carduri1 – diagrama relațională

Page 6: PBD 2 Post Normalizare, De Normalizare

Carduri1 – dezavantaj principal

• În orice moment, aflarea soldului curent al unui cont presupune prelucrarea unui volum imens de date (după numai câţiva 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

Page 7: PBD 2 Post Normalizare, De Normalizare

Carduri2 – soluție “denormalizată”

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}

IdClient

Adresa

DenClient

IBANIdCont

DataOraDeschidereSoldIniţial

IdAlimentareCont

DataOraAlimentare

SursaSumaIntrată

IdPlatăTipCont

DataOraPlată

DestinaţiePlată

SumaPlată

IBANContSursă

IBANContDestinaţieSoldCurent

Page 8: PBD 2 Post Normalizare, De Normalizare

Carduri2 – diagramă E-R (Barker)

+

Page 9: PBD 2 Post Normalizare, De Normalizare

BD Vânzări - soluții denormalizate

Obiective:• Validitate temporală • Creşterea vitezei de acces a aplicaţiei, ştiind ca

anume informaţii 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 restricţii complexe

Page 10: PBD 2 Post Normalizare, De Normalizare

Vânzări1_Sol3

PRODUSE{CodPr, DenPr, UM, Grupa, ProcentTVA_Crt}FACTURI {NrFact, DataFact, CodCl, TVAFact, ValTotala, ValIncasata }LINIIFACT {NrFact, Linie, CodPr, Cantitate, PretUnit, TVALinie}

NrFact

DataFact

CodCl

Linie CodPr

DenPr

UM

Cantitate

PreţUnit

Grupa

ProcentTVA_Crt

TVAFact

ValTotalaValÎncasată

TVALinie

Page 11: PBD 2 Post Normalizare, De Normalizare

Diagramă E-R – Vânzări1_Sol3

Page 12: PBD 2 Post Normalizare, De Normalizare

Diagramă relațională – Vânzări1_Sol3

Page 13: PBD 2 Post Normalizare, De Normalizare

Vânzări1_Sol3– avantaje/dezavantaj

• Avantaje– Simplitate (număr 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 cunoaşte cu exactitate istoria procentelor

TVA pentru fiecare produs în decursul anilor (ci numai în măsura în care am vândut aceste produse)

Page 14: PBD 2 Post Normalizare, De Normalizare

Vânzări1_Sol4

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}

NrFact

DataFact

CodCl

Linie CodPr

DenPr

UM

Cantitate

PreţUnit

Grupa

ProcentTVA_Crt

TVAFact

ValTotalaValÎncasată

TVALinie

ProcentTVA

DataIntrareVigoareProcTVA

DataIesireVigoareProcTVA

Page 15: PBD 2 Post Normalizare, De Normalizare

Diagramă E-R – Vânzări1_Sol4

Page 16: PBD 2 Post Normalizare, De Normalizare

Diagramă relațională – Vânzări1_Sol4

Page 17: PBD 2 Post Normalizare, De Normalizare

Vânzări1_Sol4 – avantaje/dezavantaje

• Avantaje– Se cunosc procentele TVA curente– Putem cunoaşte 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 declanşoare

Page 18: PBD 2 Post Normalizare, De Normalizare

Recapitulare: modificarea schemei BD VânzăriVânzări2 (1) – noutăți

• Pentru validitate temporală:– Atributul LINIIFACT.TVALinie

• Pentru istoric (preluarea modificărilor de valori)– Tabela PRODUSE_TVA

– Tabela IST_FUNCTII

• Pentru implementarea unor restricţii:– FACTURI.NrLinii (pentru o restricţie de genul: O factură nu

poate avea mai mult de 30 de linii)

– CLIENTI.SoldCurent (pentru o restricţie de genul: Unui client nu îi mai vindem nimic dacă are o datorie (rest de plată) mai mare de 30000 lei)

Page 19: PBD 2 Post Normalizare, De Normalizare

Recapitulare: modificarea schemei BD VânzăriVânzări2 (2)

• Pentru mărirea vitezei de acces:– CLIENTI.SoldCurent

– FACTURI.ValTotala

– FACTURI.TVAFact

– FACTURI.ValIncasata

• Atribut care nu are legătură cu denormalizarea:– FACTURI.Validare (vezi explicaţii la curs)

Page 20: PBD 2 Post Normalizare, De Normalizare

Diagramă E-R – Vânzări2

Page 21: PBD 2 Post Normalizare, De Normalizare

Diagramă relațională – Vânzări2

Page 22: PBD 2 Post Normalizare, De Normalizare

Până unde se poate merge cu denormalizarea ?

• Se pot introduce atribute/tabele noi (redundante) pentru orice categorie de informaţii solicitată frecvent

• Ex:– Pt. CLIENȚI: Solduri iniţiale, rulaje, solduri finale

pentru fiecare an/lună– Pentru VÎNZĂRI:• Centralizare Produse – Clienţi – Zile• Centralizare Produse-Zile• Centralizare Vânzări-Zi-Client sau Vânzări – An – Lună• ...

Page 23: PBD 2 Post Normalizare, De Normalizare

O denormalizare (poate) exagerată

Page 24: PBD 2 Post Normalizare, De Normalizare

Atribute pentru introducerea unor reguli (Business Rules) mai complexe

• Liniile unei facturi să fie ordonate strict, fără intervale

• Numărul de linii ale unei facturi să nu fie mai mare de 25

• Soldul unui client sa nu fie mai mare decât...• Închideri contabile• Acces diferenţiat la tabele/atribute, în funcţie

de categoria utilizatorului• Acces diferenţiat la clienţi (în funcţie de user)