Sunteți pe pagina 1din 17

Baze de date

Tehnica normalizrii,
forme normale
Elena Posdarie
oct 2003
Baze de date
Ce este normalizarea?
Tehnic formal de analiz i optimizare a
relaiilor ce are la baz cheile primare (sau
candidate) i dependenele funcionale
O serie de condiii (forme normale), fiecare fiind
din ce n ce mai restrictiv
Formele normale FN1, FN2, FN3, BCNF se raporteaz
la dependenele funcionale
Formele normale superioare (FN4, FN5) se definesc n
raport de alte tipuri de dependene (multivaloare,
respectiv jonciune)
Baze de date
De ce normalizm?
Pentru a evita redundana (duplicarea valorilor)
Pentru a nltura anomaliile de actualizare (erori sau
inconsistene ale structurii bazei de date)
Inserare nu se poate insera un tuplu pentru c nu
dispunem de toate informaiile necesare;
tergere atunci cnd se terge un tuplu se terge mai
mult informaie dect s-a intenionat;
Modificare cnd dorim s modificm o valoare iaceasta
apare n sute de rnduri.
Baze de date
CONTRACT
Baze de date
Anomalii de actualizare
CONTRACT =
{NRC, DATAC, VALC, CODF, DENF, ADRESAF,
PREFIX, TEL, CONTBANCA, MATERIAL (
CODMAT, DENMAT, UM, PRET_LIVR,
ESALONARE ( LUNA, CANT_CONTR,
CANT_LIVR ) )}
Baze de date
Condiii suplimentare
FN1
FN2
FN3
FN4
FN5
Baze de date
START
ANLIZA DATELOR
DATELE SE AFLA LA
NIVEL ELEMENTAR
FN1
DF
P
ELIMINA DFP
FN2
DA
DF
T
ELIMINA DFT
FN3
DA
STOP
DFP dependen funcional parial
DFT dependen funcional tranzitiv
DESCOMPUNE.
ELIMINA ATRIBUT
NU
Baze de date
FN1
Toate valorile asociate atributelor se gsesc la nivel elementar
- din punct de vedere al utilizarii;
- din punct de vedere al obinerii;
- din punct de vedere al tipurilor de date existente;
Nu exista atribute sau grupuri de atribute repetitive
CONTRACT =
{NRC, DATAC, VALC, CODF, DENF, ADRESAF, PREFIX,
TEL, CONTBANCA, MATERIAL ( CODMAT, DENMAT,
UM, PRET_LIVR,
ESALONARE( LUNA, CANT_CONTR, CANT_LIVR ) )}
Baze de date
Baza de date n FN1
CONTRACT = {NRC, DATAC, CODF, DENF,
CODLOC, DENLOC, PREFIX, TEL, CONTBANCA}
MATERIAL = {NRC, CODMAT, DENMAT, UM,
PRET_LIVR}
ESALONARE = {NRC, CODMAT, LUNA,
CANT_CONTR, CANT_LIVR}
Baze de date
FN2
Toate atributele non-cheie depind de ntreaga cheie a
relaiei.
CONTRACT = {NRC, DATAC, CODF, DENF,
CODLOC, DENLOC, PREFIX, TEL, CONTBANCA}
MATERIAL = {NRC, CODMAT, DENMAT, UM,
PRET_LIVR}
ESALONARE = {NRC, CODMAT, LUNA,
CANT_CONTR, CANT_LIVR}
Baze de date
Baza de date n FN2
CONTRACT = {NRC, DATAC, CODF, DENF, CODLOC,
DENLOC, PREFIX, TEL, CONTBANCA}
MAT_CONTR = {NRC, CODMAT, PRET_LIVR}
MAT_NOMENCLATOR = {CODMAT, DENMAT, UM}
ESALONARE = {NRC, CODMAT, LUNA,
CANT_CONTR, CANT_LIVR}
Baze de date
FN3
Nu prezint dependene funcionale tranzitive.
CONTRACT = {NRC, DATAC, CODF, DENF, CODLOC,
DENLOC, PREFIX, TEL, CONTBANCA}
MAT_CONTR = {NRC, CODMAT, PRET_LIVR}
MAT_NOMENCLATOR = {CODMAT, DENMAT, UM}
ESALONARE = {NRC, CODMAT, LUNA,
CANT_CONTR, CANT_LIVR}
Baze de date
Baza de date n FN3
CONTRACT = {NRC, DATAC, CODF}
FURNIZOR={CODF,DENF,CODLOC,TEL,CONTBANCA}
LOCALITATE = {CODLOC, DENLOC, PREFIX}
MAT_CONTR = {NRC, CODMAT, PRET_LIVR}
MAT_NOMENCLATOR = {CODMAT, DENMAT, UM}
ESALONARE = {NRC, CODMAT, LUNA, CANT_CONTR,
CANT_LIVR}
Baze de date
FN TEST NORMALIZARE
FN1 Toate valorile asociate atributelor se
gsesc la nivel elmentar i nu exista
atribute sau grupuri de atribute
repetitive.

Se descompun atributele ne-elementare
sau se elimin i se creeaz o nou relaie
pentru fiecare atribut, grup de atribute
repetitive.
FN2 Doar pentru relaii cu cheie compus,
atributele non cheie depind functional
de intreaga cheie a relatiei, nu exist
dependente funcionale pariale.

Se descompune relaia, atributele
dependente parial vor forma o nou
relaie a crei cheie este parte din relaia
iniial.
FN3 Nu trebuie s existe dependene
functionale ntre atributele non cheie, i
astfel s apar dependene funcionale
tranzitive.
Se descompune relaia
Baze de date
Relaii de-normalizate
Cnd baza de date se afl ntr-o form normal
superioar este nevoie de mai multe JOIN-uri
pentru a rspunde cererilor utilizatorilor finali
Prin proiectare trebuie gsit echilibrul ntre
Normalizare i performan
Se pot accepta zone de-normalizate ale bazei de
date pentru a obine performanele dorite
Baze de date
Studiu de caz
ANGAJAT = {MARCA, NUME, DATAN, VARSTA,
ADRESA, NR_DEPT, DENUMIRE, MARCA_SEF,
COD_LOC}
PROIECT = {CODP, MARCA, NR_ORE, DENUMIRE,
COD_LOC, NR_DEPT}
Baze de date
Studiu de caz (rezolvare)
ANGAJAT = {MARCA, NUME, DATAN, ADRESA,
NR_DEPT}
DEPARTAMENT = {NR_DEPT, DENUMIRE,
MARCA_SEF}
LOC_DEPT = {NR_DEPT, COD_LOC}
PROIECT = {CODP, DENUMIRE, COD_LOC, NR_DEPT}
LUCRU = {CODP, MARCA, NR_ORE}

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