04_Normalizare_1
-
Upload
nicu-manea -
Category
Documents
-
view
216 -
download
1
Transcript of 04_Normalizare_1
NORMALIZAREA BAZELOR DE DATE
RELAŢIONALE
1NF, 2NF, 3NF
Obiectivele normalizării
• Elaborarea schemei unei BDR• Minimizarea spaţiului ocupat pe disc• Eliminarea a o serie de anomalii
manifestate la:• Inserare• Modificare• Ştergere
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
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
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
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
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.
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)
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.
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
NrFact → DataFactNrFact → CodFiscalClNrFact → NumeClNrFact → AdresaClNrFact → LocalitClNrFact → CodPersContactNrFact → NumePersContactNrFact → TelPersContactNrFact → EMailPersContact
DF în relaţia VÂNZĂRI (1)
DF în relaţia VÂNZĂRI (2)
CodFiscalCl → NumeClCodFiscalCl → AdresaClCodFiscalCl → LocalitClCodFiscalCl → CodPersContactCodFiscalCl → NumePersContactCodFiscalCl → TelPersContactCodFiscalCl → EMailPersContact
DF în relaţia VÂNZĂRI (3)
CodPersContact → NumePersContactCodPersContact → TelPersContactCodPersContact → EMailPersContact
CodProd → DenProdCodProd → UMCodProd → ProcTVAProd
(NrFact, CodProd) → Cant(NrFact, CodProd) → PretUnit
Prima forma normală – 1NF
R {NrFact, DataFact, CodFiscalCl, NumeCl, AdresaCl, LocalitCl, CodPersContact, NumePersContact, TelPersContact, EMailPersContact, CodProd, DenProd, UM, ProcTVAProd, Cant, PretUnit}
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
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ă
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
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
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
DF parţiale - VÂNZĂRI (2)
(NrFact, CodProd) → TelPersContact(NrFact, CodProd) → EMailPersContact(NrFact, CodProd) → DenProd(NrFact, CodProd) → UM(NrFact, CodProd) → ProcTVAProd
2FN
R1 {NrFact, DataFact, CodFiscalCl, NumeCl, AdresaCl, LocalitCl, CodPersContact, NumePersContact, TelPersContact, EMailPersContact}
R2 {CodProd, DenProd, UM, ProcTVAProd}
R3 {NrFact, CodProd, Cant, PretUnit}
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
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
DF tranzitive în BD VÂNZĂRI (1)
NrFact → NumeClNrFact → AdresaClNrFact → LocalitClNrFact → CodPersContactNrFact → NumePersContactNrFact → TelPersContactNrFact → EMailPersContactCodFiscalCl → NumePersContactCodFiscalCl → TelPersContactCodFiscalCl → EMailPersContact
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}
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}
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
Graful DF – BD VÂNZĂRI
NrFact
DataFactCodFiscalCl
NumeClUM
CodPersContact
NumePersContact
CodProd
AdresaClLocalitCl
TelPersContactEMailPersContact
DenProd
ProcTVAProd
Cantit PretUnit
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}