04_Normalizare_1

29
NORMALIZAREA BAZELOR DE DATE RELAŢIONALE 1NF, 2NF, 3NF

Transcript of 04_Normalizare_1

Page 1: 04_Normalizare_1

NORMALIZAREA BAZELOR DE DATE

RELAŢIONALE

1NF, 2NF, 3NF

Page 2: 04_Normalizare_1

Obiectivele normalizării

• Elaborarea schemei unei BDR• Minimizarea spaţiului ocupat pe disc• Eliminarea a o serie de anomalii

manifestate la:• Inserare• Modificare• Ştergere

Page 3: 04_Normalizare_1

Abordări

• Normalizarea prin descompunere (Codd): UR 1NF 2NF 3NF BCNF 4NF 5NF DKNF 6NF

• Normalizarea prin sinteză (Bernstein):– pe baza setului de DF dintre atributele

BD

Page 4: 04_Normalizare_1

Descompunere(1)

R e l aţ i e u n i v e r s a l ă - R

E x i s tă g r u p u r ir e p e t i t i v e ?

A t o m i z a r e a a t r i b u t e l o r

R e l aţ i a R a r ec h e i e p r i m a ră ?

D e s c o m p u n e r e î n r e l aţ i ic e a u c h e i e p r i m a ră

1 F N

E x i s tă D Fp a rţ i a l e ?

A d u c e r e a r e l aţ i i l o r î n 2 F N

I n c e p u t

2 F N

E x i s tă D Ft r a n z i t i v e ?

A d u c e r e a r e l aţ i i l o r î n 3 F N

3 F N

d a

d a

d a

d a

n u

n u

n u

n u

2NF

Page 5: 04_Normalizare_1

Descompunere(2)

Există DF multivaloare ?

Aducerea relaţiilor în 4FN

4 FN

Există dependenţe de joncţiune ?

Aducerea relaţiilor în 5FN

5 FN

da

da

nu

nu

Toţi determinanţii sunt chei candidate ?

Aducerea relaţiilor în BCFN

BCFN

da nu

Sfârşit

Page 6: 04_Normalizare_1

Prima formă normală (1)

Codd: O relaţie este în prima formă normală dacă… nici unul dintre domeniile sale nu conţine elemente care sunt, la rândul lor, seturi (ansambluri)

O relaţie aflată în 1FN ca acea relaţie în care fiecare atribut prezintă numai valori atomice, adică toate atributele sunt ne-decompozabile;

R.Riordan: o relaţie este în 1FN dacă domeniile pe care sunt definite atributele relaţiei sunt scalare

Page 7: 04_Normalizare_1

Prima formă normală (2)

• Connoly şi Begg: O relaţie în 1FN este o relaţie în care intersecţia oricărei linii cu oricare coloană conţine o valoare şi numai una

• O relaţie în 1FN nu trebuie să conţină grupuri repetitive.

Page 8: 04_Normalizare_1

Relaţia universală – VÂNZĂRI• NrFact• CodFiscalCl• NumeCl• AdresaCl• CodPersContact• NumePersContact• TelPersContact• EMailPersContact• LocalitCl• DataFact• CodProd• DenProd• UM

• ProcTVAProd• Cantit• PretUnit

• ValoareFărăTVA ?• TVAFactură ?• ValoareTotalăFactură ?

O linie din VÂNZĂRI – un produs vândut în cadrul unei facturi

Cheie primară în VÂNZĂRI : (NrFact, CodProd)

Page 9: 04_Normalizare_1

Dependenţe funcţionale (1)

R {A1, A2,...., An}, X şi Y două subansambluri din {A1, A2,...., An},

Există o dependenţă funcţională între X şi Y (simbolizată XY) dacă şi numai dacă:

• fiecare apariţie (valoare) a lui X poate fi asociată unei singure apariţii a lui Y,

• două apariţii identice ale lui X nu pot fi asociate decât aceleiaşi apariţii a lui Y.

Page 10: 04_Normalizare_1

Dependenţe funcţionale (2)

• C.J. Date: Dată fiind o relaţie R, subansamblul de atribute Y din R depinde funcţional de subansamblul X (tot din R), dacă şi numai dacă, ori de câte ori două tupluri din R prezintă aceeaşi valoare pentru X, obligatoriu valoarea celor două tupluri este identică şi pentru Y.

X → Y

Page 11: 04_Normalizare_1

NrFact → DataFactNrFact → CodFiscalClNrFact → NumeClNrFact → AdresaClNrFact → LocalitClNrFact → CodPersContactNrFact → NumePersContactNrFact → TelPersContactNrFact → EMailPersContact

DF în relaţia VÂNZĂRI (1)

Page 12: 04_Normalizare_1

DF în relaţia VÂNZĂRI (2)

CodFiscalCl → NumeClCodFiscalCl → AdresaClCodFiscalCl → LocalitClCodFiscalCl → CodPersContactCodFiscalCl → NumePersContactCodFiscalCl → TelPersContactCodFiscalCl → EMailPersContact

Page 13: 04_Normalizare_1

DF în relaţia VÂNZĂRI (3)

CodPersContact → NumePersContactCodPersContact → TelPersContactCodPersContact → EMailPersContact

CodProd → DenProdCodProd → UMCodProd → ProcTVAProd

(NrFact, CodProd) → Cant(NrFact, CodProd) → PretUnit

Page 14: 04_Normalizare_1

Prima forma normală – 1NF

R {NrFact, DataFact, CodFiscalCl, NumeCl, AdresaCl, LocalitCl, CodPersContact, NumePersContact, TelPersContact, EMailPersContact, CodProd, DenProd, UM, ProcTVAProd, Cant, PretUnit}

Page 15: 04_Normalizare_1

A doua forma normală – 2NF

Definiţii:

O relaţie se află în 2NF dacă:- Este deja în 1NF- Nu conţine dependenţe funcţionale parţiale

O baza de date este în 2NF dacă toate relaţiile care o alcătuiesc se află în 2FN

Page 16: 04_Normalizare_1

DF parţiale

O dependenţă funcţională:(X, Y) → Z

este parţială (ne-elementară) dacă şi numai dacă există cel puţin una dintre dependenţele: X → Z sau Y → Z

O DF care nu este parţială se numeşte totală, plină, deplină sau elementară

Page 17: 04_Normalizare_1

DF în relaţia VÂNZĂRI ce decurg din cheia primară (1)

(NrFact, CodProd) → DataFact(NrFact, CodProd) → CodFiscalCl(NrFact, CodProd) → NumeCl(NrFact, CodProd) → AdresaCl(NrFact, CodProd) → LocalitCl(NrFact, CodProd) → CodPersContact(NrFact, CodProd) → NumePersContact

Page 18: 04_Normalizare_1

DF în relaţia VÂNZĂRI ce decurg din cheia primară (2)

(NrFact, CodProd) → TelPersContact(NrFact, CodProd) → EMailPersContact(NrFact, CodProd) → DenProd(NrFact, CodProd) → UM(NrFact, CodProd) → ProcTVAProd(NrFact, CodProd) → Cant(NrFact, CodProd) → PretUnit

Page 19: 04_Normalizare_1

DF parţiale - VÂNZĂRI(1)

(NrFact, CodProd) → DataFact(NrFact, CodProd) → CodFiscalCl(NrFact, CodProd) → NumeCl(NrFact, CodProd) → AdresaCl(NrFact, CodProd) → LocalitCl(NrFact, CodProd) → CodPersContact(NrFact, CodProd) → NumePersContact

Page 20: 04_Normalizare_1

DF parţiale - VÂNZĂRI (2)

(NrFact, CodProd) → TelPersContact(NrFact, CodProd) → EMailPersContact(NrFact, CodProd) → DenProd(NrFact, CodProd) → UM(NrFact, CodProd) → ProcTVAProd

Page 21: 04_Normalizare_1

2FN

R1 {NrFact, DataFact, CodFiscalCl, NumeCl, AdresaCl, LocalitCl, CodPersContact, NumePersContact, TelPersContact, EMailPersContact}

R2 {CodProd, DenProd, UM, ProcTVAProd}

R3 {NrFact, CodProd, Cant, PretUnit}

Page 22: 04_Normalizare_1

A treia forma normală – 3NF

Definiţii:

O relaţie se află în 3NF dacă:- Este deja în 2NF- Nu conţine dependenţe funcţionale tranzitive

O bază de date este în 3NF dacă toate relaţiile care o alcătuiesc se află în 3FN

Page 23: 04_Normalizare_1

DF tranzitive

O dependenţă funcţională:X → Z

este tranzitivă dacă şi numai dacă există cel puţin un alt atribut Y pentru care sunt valabile dependenţele X → Y şi Y → Z

X → Y → Z

Page 24: 04_Normalizare_1

DF tranzitive în BD VÂNZĂRI (1)

NrFact → NumeClNrFact → AdresaClNrFact → LocalitClNrFact → CodPersContactNrFact → NumePersContactNrFact → TelPersContactNrFact → EMailPersContactCodFiscalCl → NumePersContactCodFiscalCl → TelPersContactCodFiscalCl → EMailPersContact

Page 25: 04_Normalizare_1

BD VÂNZĂRI în 3FN

R11 {CodPersContact, NumePersContact, TelPersContact, EMailPersContact}

R12 {CodFiscalCl, NumeCl, AdresaCl, LocalitCl, CodPersContact}

R13 {NrFact, DataFact, CodFiscalCl}

R2 {CodProd, DenProd, UM, ProcTVAProd}

R3 {NrFact, CodProd, Cant, PretUnit}

Page 26: 04_Normalizare_1

BD VÂNZĂRI în 3FN(forma finală)

PERS_CON {CodPersContact, NumePersContact, TelPersContact, EMailPersContact}

CLIENTI {CodFiscalCl, NumeCl, AdresaCl, LocalitCl, CodPersContact}

FACTURI {NrFact, DataFact, CodFiscalCl}

PRODUSE {CodProd, DenProd, UM, ProcTVAProd}

PROD_FACT {NrFact, CodProd, Cant, PretUnit}

Page 27: 04_Normalizare_1

Normalizarea prin sinteză

• Reprezentare grafică (diagramă /graf)• Baza săgeţii – sursa DF• Vârful săgeţii – destinaţia DF• Când sursa DF este compusă – conector• DF parţiale şi tranzitive se identifică în

diagramă/graf

Page 28: 04_Normalizare_1

Graful DF – BD VÂNZĂRI

NrFact

DataFactCodFiscalCl

NumeClUM

CodPersContact

NumePersContact

CodProd

AdresaClLocalitCl

TelPersContactEMailPersContact

DenProd

ProcTVAProd

Cantit PretUnit

Page 29: 04_Normalizare_1

Schema obţinută pe baza grafului

PERS_CON {CodPersContact, NumePersContact, TelPersContact, EMailPersContact}

CLIENTI {CodFiscalCl, NumeCl, AdresaCl, LocalitCl, CodPersContact}

FACTURI {NrFact, DataFact, CodFiscalCl}

PRODUSE {CodProd, DenProd, UM, ProcTVAProd}

PROD_FACT {NrFact, CodProd, Cant, PretUnit}