Sunteți pe pagina 1din 11

4

NORMALIZAREA RELAIILOR

4.1 Scopul normalizrii


La proiectarea unei BD relaionale, principalul obiectiv n realizarea unui model logic
este crearea unei reprezentri corecte a datelor, relaiilor dintre ele i a constrngerilor. Pentru
atingerea acestui obiectiv, trebuie identificat un set adecvat de relaii. Normalizarea reprezint o
tratare de jos n sus a proiectrii bazelor de date, care ncepe prin examinarea relaiilor dintre
atribute. Totui, de multe ori metodologia de proiectare abordeaz o tratare de sus n jos a BD
(care ncepe prin identificarea principalelor entiti i relaii), caz n care normalizarea este
folosit ca tehnic de validare.
Procesul de normalizare este o metod formal, care identific relaiile bazndu-se
pe cheile primare ale acestora i pe dependenele funcionale dintre atributele lor.
Normalizarea ajut proiectanii de BD, prin prezentarea unei serii de teste care pot fi aplicate
relaiilor individuale, pentru a preveni apariia anomaliilor de reactualizare.
Unul din principalele scopuri urmrite la proiectarea BD relaionale, este gruparea
atributelor n relaii n aa fel nct s se minimizeze redundana datelor i prin aceasta s se
reduc spaiul de stocare necesar relaiilor de baz implementate. Problemele asociate
redundanei datelor le vom ilustra printr-un exemplu.
Exemplu: s analizm urmtoarele alternative de relaii:
Personal
i
Filiala

(PersID, NumeP, AdresaP, Funcie, Salariu, FilialaID)


(FilialaID, AdresaF, TelF)

fa de
PersonalFiliala

(PersID, NumeP, AdresaP, Funcie, Salariu, FilialaID, AdresaF, TelF)

n relaia PersonalFiliala exist date redundante: detaliile referitoare la filial sunt repetate
pentru fiecare membru al personalului aflat la filiala respectiv. Relaiile care conin date
redundante pot crea probleme, denumite anomalii de reactualizare.
Anomaliile de reactualizare se clasific n:
anomalii de inserare care pot fi de dou tipuri:
anomalii privind identitatea datelor redundante: de ex, pentru inserarea noilor
membri ai personalului, trebuie incluse detalii despre filiala la care vor lucra,
detalii care trebuie s coincid cu valorile aflate pe celelalte rnduri ale
relaiei, altfel provocm o incoeren a BD.
anomalii privind necesitatea introducerii de rnduri cu null pentru cheia
primar: de ex, pentru a insera o nou filial, care nu are nici un personal, este
necesar introducerea de null-uri pentru atributele personalului; dar PersID
este cheie primar i nu e permis null-ul (deoarece se violeaz integritatea
entitilor)
anomalii de tergere: tergerea anumitor nregistrri duce la pierderea unor detalii care
nu sunt stocate n alt parte: dac se terge ultimul membru al personalului de la o filial,
se pierd detaliile despre filial

anomalii de modificare: necesiatatea modificrii unei date redundante, presupune


modificarea ei n toate nregistrrile n care ea apare: dac trebuie modificat unul din
atributele unei filiale, este necesar reactualizarea rndurilor corespunztoare pentru toi
membrii personalului de la filiala respectiv, altfel BD devine incoerent.
Aceast analiz arat c relaiile Personal i Filiala au o structur mai bun dect
PersonalFiliala. Procesul de normalizare furnizeaz o tehnic de proiectare a unor relaii mai
bine structurate.
4.2 Dependene funcionale
Dependenele funcionale sunt concepte fundamentale n procesul de normalizare.

Dependena funcional descrie legturile dintre atributele unei relaii: fie A i B


dou atribute ale relaiei R; atributul B este dependent funcional de A (notat AB) dac
fiecrei valori a atributului A i corespunde o singur valoare a atributului B. A i B pot
fi simple sau compuse.
Cnd exist o dependen funcional, ea este specificat ca o constrngere ntre
atribute. Atributul din stnga sgeii se numete determinant.
Exemplu: s considerm atributele PersID i Salariu din relaia Personal
Personal

(PersID, NumeP, AdresaP, Funcie, Salariu, FilialaID)

PersID Salariu
Salariu PersID

deci un membru al personalului are un singur salariu


un salariu nu determin un singur membru al personalului

Exemplu: S identificm dependenele funcionale din relaia PersonalFiliala


PersonalFiliala
PersID NumeP
PersID AdresaP
PersID Funcie
PersID Salariu
PersID FilialaID

(PersID, NumeP, AdresaP, Funcie, Salariu, FilialaID, AdresaF, TelF)


PersID AdresaF
PersID TelF
FilialaID AdresaF
FilialaID TelF
AdresaF FilialaID

AdresaF TelF
TelF FilialaID
TelF AdresaF

n aceast relaie sunt 13 dependene funcionale cu PersID, FilialaID, AdresaF i TelF ca


determinani. Un format alternativ de afiare a acestor dependene este:
PersID NumeP, AdresaP, Funcie, Salariu, FilialaID, AdresaF, TelF
FilialaID AdresaF, TelF
AdresaF FilialaID, TelF
TelF FilialaID, AdresaF
Pentru a identifica cheia candidat (sau cheile candidat) din relaia PersonalFiliala, este
necesar s recunoatem atributul (sau grupul de atribute) care identific n mod unic fiecare
rnd din relaie. Dac o relaie are mai mult de o chei candidat, trebuie identificat cheia primar.
Toate atributele care nu fac parte din cheia primar, trebuie s fie dependente funcional de
aceast cheie.

Singura cheie candidat pentru relaia PersonalFiliala (deci i cheie primar) este PersID,
deoarece toate celelalte atribute ale relaiei sunt dependente funcional de aceasta. Cu toate c
atributele FilialaID, AdresaF, TelF sunt determinani n aceast relaie, ele nu constituie chei
candidat pentru ea.
In orice relaie, atributele sunt dependente funcional de fa de cheile acesteia, deoarece
orice cheie are proprietatea c identific n mod unic fiecare tupl, deci determin n mod univoc
valorile atributelor tuplei.
4.3 Procesul de normalizare - descompunerea schemelor de relaie
Conceptul de dependen funcional este elementul central n procesul de normalizare.
Normalizarea este o tehnic formal de analiz a relaiilor, care se bazeaz pe cheile primare i
dependenele funcionale. Tehnica presupune o serie de reguli care pot fi utilizate pentru
testarea relaiilor individuale, astfel nct o BD poate fi normalizat pn la orice grad. Atunci
cnd o cerin nu este ndeplinit, relaia care o deranjeaz trebuie s fie descompus n relaii
care satisfac individual cerinele normalizrii.
Adeseori, normalizarea este executat sub forma unei serii de pai. Fiecare pas
corespunde unei anumite forme normale, care are proprieti cunoscute. Pe msur ce se
desfoar normalizarea, relaiile devin n mod progresiv mai restrictive (mai puternice) ca
format i mai puin vulnerabile la anomaliile de reactualizare. Pentru modelul relaional, numai
prima form normal (1NF) este de importan critic n crearea de relaii adecvate. Toate
formele normale urmtoare sunt opionale. Totui, pentru evitarea anomaliilor de reactualizare,
se recomand efectuarea normalizrii pn la cel puin forma 3NF.
Forma nenormalizat (UNF) este un tabel care conine unul sau mai multe grupuri
repetitive.
Un grup repetitiv este un atribut sau grup de atribute din cadrul tabelului, care apare
cu valori multiple pentru o singur instan a atributului cheie.
4.4

Prima form normal (1NF)

Prima form normal (1NF) este o relaie n care intersecia fiecrui rnd cu
fiecare coloan conine o singur valoare i numai una, adic toate atributele relaiei iau
valori unice.
Vom porni analiza de la un format de tabel nenormalizat. Pentru a-l transforma n prima
form normal (1NF), vom identifica i vom elimina grupurile repetitive.
Pentru eliminarea grupurilor repetitive dintr-un tabel nenormalizat, exist dou tratri
uzuale, sau dou strategii de lucru:
1. Se elimin grupurile repetitive prin introducerea de date adecvate n coloanele goale
ale rndurilor cu date repetitive. Cu alte cuvinte, se completeaz spaiile libere prin
dublarea datelor nerepetitive, acolo unde este necesar. Aceast tratare este denumit
aplatizarea tabelului. Tabelul rezultant, denumit acum relaie, conine valori singulare
la intersecia fiecrui rnd cu fiecare coloan. n cadrul acestei tratri se introduce o
redundan n relaia rezultant, redundan ce va trebui ulterior eliminat n
procesul de normalizare.
2. Se nominalizeaz un atribut (sau un grup de atribute) ca o cheie a tabelului
nenormalizat, dup care se elimin grupurile repetitive prin plasarea datelor care se
repet mpreun cu o copie a atributului cheie iniial, ntr-o relaie separat. Se
identific apoi cheile primare ale noilor relaii. Dac tabelul nenormalizat conine mai
mult de un grup repetitiv, aceast tratare se aplic n mod repetat, pn nu mai rmn

grupuri repetitive. Un set de relaii se afl n prima form normal dac nu conine
grupuri repetitive.
Ambele tratri sunt corecte, dar a doua produce relaii aflate n cel puin forma 1NF cu
redundan mai mic.
Exemplu: o agenie imobiliar
Pornim analiza de la un formular clasic, cu date despre proprietile nchiriate de un anumit
client. Pentru a simplifica exemplul, vom presupune c un client nchiriaz o anumit proprietate
o singur dat i nu nchiriaz mai multe proprieti n acelai timp.
Detalii Client_nchiriere
Numele clientului:

Ion Buflea

Numrul clientului: 76

Numrul Adresa
nceputul Sfritul Chiria Numrul Numele
proprietii proprietii nchirierii nchirierii
proprietarului proprietarului
4
Rozelor 25 01.iul.94 31.aug.96 350
40
Tina Turner
Braov
16
Stejri 19 01.sep.96 01.sep.98 450
93
Vali Vijelie
Braov
Detalii Client_nchiriere
Numele clientului:

Alina Gospodina

Numrul clientului: 56

Numrul Adresa
nceputul Sfritul Chiria Numrul Numele
proprietii proprietii nchirierii nchirierii
proprietarului proprietarului
4
Rozelor 25 01.sep.92 10.iun.94 350
40
Tina Turner
Braov
36
Erorilor 21 10.oct.94 01.dec.95 375
93
Vali Vijelie
Braov
16
Stejri 19 01.ian.96 10.aug.96 450
93
Vali Vijelie
Braov
Datele referitoare la proprietile nchiriate de cei doi clieni le transferm din formularele
Detalii Client_nchiriere n urmtorul format de tabel:
Tabelul Clientnchiriere
Nr
Nume
Client
Client
76 Ion Buflea

56

Alina
Gospodina

Nr
Adresa
nceput Sfrit Chiria
Nr
Nume
Proprietate Proprietate nchir
nchir
Proprietar Proprietar
4
Rozelor 25 01.iul.94 31.aug.96 350
40
Tina Turner
Braov
16
Stejri 19 01.sep.96 01.sep.98
450
93
Vali Vijelie
Braov
4
Rozelor 25 01.sep.92 10.iun.94
350
40
Tina Turner
Braov

36
16

Erorilor 21 10.oct.94 01.dec.95


Braov
Stejri 19 01.ian.96 10.aug.96
Braov

375

93

Vali Vijelie

450

93

Vali Vijelie

Acesta este un exemplu de tabel nenormalizat. Putem identifica atributul cheie ca fiind
NrClient. Identificm grupurile repetitive ca fiind detaliile despre proprietatea nchiriat, care se
repet pentru fiecare client care a nchiriat proprietatea respectiv. Structura acestui grup
repetitiv este:
GrupRepetitiv

(NrProprietate, AdresaProprietate, nceputnchir, Sfritnchir, Chiria,


NrProprietar, NumeProprietar)

Deci exist valori multiple la intersecia dintre anumite rnduri i coloane. De ex, exist
dou valori ale atributului NrProprietate (4 i 16), corespunztoare clientului Ion Buflea.
Pentru a transforma un tabel nenormalizat n forma 1NF, trebuie s ne asigurm c exist o
singur valoare la intersecia dintre fiecare rnd i fiecare coloan. Aceasta se realizeaz prin
eliminarea grupului repetitiv. Vom analiza procesul eliminare prin ambele strategii prezentate:
1. strategia aplatizrii tabelului
n cazul acestei tratri, se elimin grupul repetitiv prin transformarea unui rnd cu valori
multiple ale unui atribut n mai multe rnduri cu valori singulare pentru acel atribut (de fapt, prin
introducerea datelor adecvate pe fiecare rnd). Relaia rezultat, Clientnchiriere, se afl deja n
prima form normal. Identificm cheile candidat ale relaiei Clientnchiriere ca fiind cheile
compuse (NrClient, NrProprietate), (NrClient, nceputnchir) i (NrProprietate, nceputnchir).
Selectm drept cheie primar atributele (NrClient, NrProprietate) i pentru claritate, le grupm
n stnga relaiei.
Relaia Clientnchiriere
Adresa nceput
Proprieta nchir
te
Ion Buflea Rozelor 01.iul.94
25 Braov
Ion Buflea Stejri 01.sep.96
19 Braov
Alina
Rozelor 01.sep.92
Gospodina 25 Braov
Alina
Erorilor 10.oct.94
Gospodina 21 Braov
Alina
Stejri 01.ian.96
Gospodina 19 Braov

Nr
Nr
Nume
Client Proprietate Client
76

76

16

56

56

36

56

16

Sfrit
nchir

Chiria Nr
Nume
Proprietar Proprietar

31.aug.96

350

40

Tina Turner

01.sep.98

450

93

Vali Vijelie

10.iun.94

350

40

Tina Turner

01.dec.95

375

93

Vali Vijelie

10.aug.96

450

93

Vali Vijelie

Relaia Clientnchiriere este definit dup cum urmeaz:


Clientnchiriere
(NrClient, NrProprietate, NumeClient, AdresaProprietate, nceputnchir,
Sfritnchir, Chiria, NrProprietar, NumeProprietar)

Relaia este n forma 1NF deoarece exist o singur valoare la intersecia dintre fiecare coloan
i rnd. Relaia conine date care se repet de mai multe ori, deci este expus anomaliilor de
reactualizare. Pentru a le elimina va trebui transformat n 2NF.
2. strategia creerii unei relaii separate
n cazul celei de-a doua tratri, se elimin grupul repetitiv prin plasarea ntr-o relaie separat a
datelor respective mpreun cu o copie a atributului cheie iniial (NrClient). Apoi vom identifica
o chei primar pentru noua relaie. Formatele relaiilor 1NF rezultante sunt:
Client

(NrClient, NumeClient)

Propnchir_Proprietar

(NrClient, NrProprietate, AdresaProprietate, nceputnchir,


Sfritnchir, Chiria, NrProprietar, NumeProprietar)

Relaia Client
NrClient NumeClient
76
56

Ion Buflea
Alina Gospodina

Relaia Propnchir_Proprietar
Nr
Client
76
76
56
56
56

Adresa
Nr
Proprie- Proprietate
tate
4
Rozelor 25
Braov
16
Stejri 19
Braov
4
Rozelor 25
Braov
36
Erorilor 21
Braov
16
Stejri 19
Braov

Chiria

Nume
Nr
Proprie- Proprietar
tar
40
Tina Turner

nceput
nchir

Sfrit
nchir

01.iul.94

31.aug.96

350

01.sep.96

01.sep.98

450

93

Vali Vijelie

01.sep.92

10.iun.94

350

40

Tina Turner

10.oct.94

01.dec.95

375

93

Vali Vijelie

01.ian.96

10.aug.96

450

93

Vali Vijelie

Ambele relaii sunt n forma 1NF, deoarece acum exist o singur valoare la intersecia dintre
fiecare coloan i fiecare rnd. Totui, relaia Propnchir_Proprietar conine o oarecare
redundan i prin urmare este vulnerabil la anomaliile de rectualizare.

4.5 A doua form normal (2NF)


Se bazeaz pe conceptul de dependen funcional total.
Dependena funcional total arat c, dac A i B sunt atribute ale unei relaii R, se spune c
B este total dependent funcional de A, dac B este dependent funcional de A dar nu i de orice
submulime a lui A.
O dependen funcional A B este total dac eliminarea oricrui atribut din A are ca
rezultat anularea dependenei.
O dependen funcional A B este parial dac exist un atribut care poate fi eliminat
din A i totui dependena s se menin.
De ex, s considerm urmtoarea dependen funcional:
NrPersonal, NumePersonal NrFilial
Este corect s afirmm c fiecare valoare din (NrPersonal, NumePersonal) este asociat unei
singure valori a atributului NrFilial. Dar asta nu e o dependen funcional total, deoarece
atributul NrFilial este dependent funcional i de un subset al atributelor (NrPersonal,
NumePersonal), i anume NrPersonal.
A doua form normal se aplic relaiilor cu chei compuse, adic relaiilor care au cheia
primar compus din dou sau mai multe atribute. O relaie a crei cheie primar este compus
dintr-un singur atribut se afl automat n cel puin forma 2NF. O relaie care nu se afl n forma
2NF este expus anomaliilor de reactualizare. De ex, s presupunem c trebuie s schimbm
chiria proprietii cu nr 4; va trebui s modificm toate nregistrrile (toate rndurile unde apare
proprietatea nr 4), altfel BD devine incoerent.
A doua form normal (2NF): o relaie este n a doua form normal dac ndeplinete
condiiile pentru prima form normal i fiecare atribut care nu este cheie primar este total
dependent funcional de cheia primar.
Normalizarea relaiilor 1NF la forma 2NF presupune eliminarea dependenelor
pariale. Asta se face prin eliminarea din relaie a atributelor parial dependente funcional, i
plasarea lor ntr-o nou relaie, mpreun cu o copie a determinantului acestora.
Exemplu:
S vedem care sunt dependenele funcionale din relaia Clientnchiriere a crei cheie primar
const din atributele (NrClient, NrProprietate).
1df
NrClient , NrProprietate nceputnchir, Sfritnchir
(cheie primar)
2df
NrClient NumeClient
(dependen parial)
3df
NrProprietate AdresaProprietate, Chiria, NrProprietar, NumeProprietar (dependen
parial)
4df
NrProprietar NumeProprietar
(dependen tranzitiv)
5df
NrClient , nceputnchir NrProprietate, AdresaProprietate, Sfritnchir, Chiria,
NrProprietar, NumeProprietar
(cheie candidat)
6df
NrProprietate, nceputnchir NrClient, NumeClient, Sfritnchir
(cheie candidat)
Se testeaz dac relaia Clientnchiriere se afl n 2NF, prin identificarea dependenelor pariale
de cheia primar. Observm c:

atributul (NumeClient) este parial dependent de cheia primar el fiind dependent


numai de atributul NrClient (vezi 2df)
atributele proprietii (AdresaProprietate, Chiria, NrProprietar, NumeProprietar) sunt
parial dependente de cheia primar ele fiind dependente numai de atributul
NrProprietate (vezi 3df).
Pentru a transforma relaia Clientnchiriere n 2NF este necesar crearea de noi relaii, astfel
nct atributele care nu sunt chei primare s fie eliminate mpreun cu o copie a prii din cheia
primar de care sunt total dependente funcional. n acest fel obinem 3 relaii noi:
Relaia Client
NrClient NumeClient
76
Ion Buflea
56
Alina Gospodina
Relaia nchiriere
NrClient NrProprietate nceputnchir Sfritnchir
76
4
01.iul.94
31.aug.96
76
16
01.sep.96
01.sep.98
56
4
01.sep.92
10.iun.94
56
36
10.oct.94
01.dec.95
56
16
01.ian.96
10.aug.96
Relaia
ProprietateProprietar
NrProprietate AdresaProprietate Chiria NrProprietar NumeProprietar
4
Rozelor 25 Braov 350
40
Tina Turner
16
Stejri 19 Braov 450
93
Vali Vijelie
36
Erorilor 21 Braov 375
93
Vali Vijelie
Client
(NrClient, NumeClient)
nchiriere
(NrClient, NrProprietate, nceputnchir, Sfritnchir)
ProprietateProprietar(NrProprietate, AdresaProprietate, Chiria, NrProprietar, NumeProprietar)
4.6 A treia form normal (3NF)
Cu toate c relaiile 2NF conin mai puin redundan dect cele 1NF, ele tot mai sunt
vulnerabile la anomaliile de reactualizare. De exemplu dac dorim reactualizarea numelui unui
proprietar, trebuie ca n relaia ProprietateProprietar s modificm toate rndurile n care apare
acel nume. Aceast anomalie de reactualizare este cauzat de dependena tranzitiv. Astfel de
dependene trebuie eliminate prin trecerea la 3NF.
Pentru a descrie aceast trecere, s explicm nti noiunea de dependen tranzitiv.
Dependena tranzitiv: dac A, B, C sunt atribute ale relaiei R i exist dependenele A B i
B C, se spune c C este dependent tranzitiv de A prin intermediul lui B (cu condiia ca A
s nu fie dependent funcional de B sau C).
De exemplu, s considerm urmtoarele dependene funcionale:

NrPersonal NrFilial

NrFilial AdresFilial

Atunci dependena funcional NrPersonal AdresFilial are loc prin intermediul atributului
NrFilial. Iar condiia cerut, ca NrPersonal s nu fie dependent funcional de NrFilial i
AdresFilial este adevrat.
A treia form normal (3NF): o relaie este n a treia form normal dac ndeplinete
condiiile pentru prima i a doua form normal i n plus, nici un atribut (care nu este cheie
primar) nu este dependent tranzitiv de cheia primar.
Normalizarea relaiilor de la 2NF la 3NF presupune eliminarea dependenelor
tranzitive. Asta se face prin eliminarea din relaie a atributelor dependente tranzitiv, i plasarea
lor ntr-o nou relaie, mpreun cu o copie a determinantului acestora.
Exemplu:
S vedem care sunt dependenele funcionale din relaiile Client, nchiriere i
ProprietateProprietar.
Relaia Client
2df
NrClient NumeClient
Relaia nchiriere
1df
NrClient , NrProprietate nceputnchir, Sfritnchir
5df1 NrClient , nceputnchir NrProprietate, Sfritnchir
6df1 NrProprietate, nceputnchir NrClient, Sfritnchir
Relaia ProprietateProprietar
3df
NrProprietate AdresaProprietate, Chiria, NrProprietar, NumeProprietar (dependen
parial)
4df
NrProprietar NumeProprietar
(dependen tranzitiv)
Toate atributele relaiilor Client i nchiriere, care nu sunt chei primare, sunt dependente
funcional numai de cheile primare. Aceste relaii nu au dependene tranzitorii, deci se afl deja
n 3NF.
n relaia ProprietateProprietar, toate atributele care nu sunt chei primare, sunt dependente
funcional numai de cheia primar, cu excepia atributului NumeProprietar, care este dependent
i de NrProprietar (vezi 4df). Acesta este un exemplu de dependen tranzitiv.
Pentru a transforma relaia ProprietateProprietar n 3NF, trebuie eliminat aceast dependen
tranzitiv prin crearea a 2 relaii noi, Proprietate i Proprietar, de forma:
Proprietate
Proprietar

(NrProprietate, AdresaProprietate, Chiria, NrProprietar)


(NrProprietar, NumeProprietar)

Relaia Proprietate
NrProprietate AdresaProprietate Chiria NrProprietar
4
Rozelor 25 Braov 350
40
16
Stejri 19 Braov 450
93
36
Erorilor 21 Braov 375
93
Relaia Proprietar
NrProprietar NumeProprietar

40
93

Tina Turner
Vali Vijelie

Observai c relaia iniial Clientnchiriere a fost transformat prin procesul de normalizare n


4 relaii aflate n forma 3NF. Acestea au forma:
Client
nchiriere
Proprietate
Proprietar

(NrClient, NumeClient)
(NrClient, NrProprietate, nceputnchir, Sfritnchir)
(NrProprietate, AdresaProprietate, Chiria, NrProprietar)
(NrProprietar, NumeProprietar)

4.7 Forma normal Boyce-Codd (BCNF)


Relaiile din baza de date trebuie proiectate astfel nct s nu aib nici dependene
pariale, nici dependene tranzitive, deoarece acestea duc la apariia anomaliilor de reactualizare.
Formele 2NF i 3NF elimin dependenele pariale i tranzitive de cheia primar, dar nu
trateaz situaiile n care rmn astfel de dependene fa de cheile candidat ale unei relaii.
Forma normal Boyce-Codd se bazeaz pe dependenele funcionale care iau n
consideraie toate cheile candidat dintr-o relaie.
Pentru o relaie cu o singur cheie candidat, formele 3NF i BCNF sunt echivalente.
Forma normal Boyce-Codd: o relaie se afl n BCNF dac i numai dac fiecare
determinant este o cheie candidat.
Pentru a testa dac o relaie este n BCNF, se identific toi determinanii i se verific
dac sunt chei candidat. Amintim c un determinant este un atribut sau un grup de atribute,
de care alte atribute sunt total dependente funcional.
Diferena ntre formele 3NF i BCNF const n faptul c, pentru o dependen
funcional A B, forma 3NF permite aceast dependen n cadrul unei relaii dac B este
atribut cheie primar i A nu este cheie candidat. Prin urmare BCNF este o variant mai strict a
3NF, astfel c orice relaie aflat n BCNF este i n forma 3NF. Reciproca nu e neaprat
adevrat.
Relaiile Client, nchiriere, Proprietate, Proprietar se afl deja n forma BCNF ntruct
fiecare din ele are un singur determinant care este cheie canidat. Aa c pentru prezentarea
formei BCNF, vom imagina alt exemplu.
Exemplu:
RezultateSesiune

(NumeProf, Disciplina, NumeStud, Nota)

Cu ipotezele c fiecare profesor pred numai o disciplin, acord numai o not fiecrui student,
exist urmtoarele dependene:
Disciplina, NumeStud Nota
Disciplina, NumeStud NumeProf
Aceast relaie se poate descompune n:
ProfDisc
ProfStudNota

(NumeProf, Disciplina)
(NumeProf, NumeStud, Nota)

4.8 A patra form normal (4NF)


Cu toate c BCNF elimin toate anomaliile datorate dependenelor funcionale, mai
exist un tip de dependen, numit dependen multivaloric, ce poate cauza probleme de
redundan a datelor. Posibila existen a dependenelor multivalorice n cadrul unei relaii se
datoreaz primei forme normale 1NF care nu permite unui atribut dintr-un rnd s aib o
mulime de valori. De exemplu, dac ntr-o relaie exist dou atribute multivalorice, trebuie s
repetm fiecare valoare a unuia din atribute mpreun cu fiecare valoare a celuilalt, dar efectul
este apariia redundanei datelor.
Dependena multivaloric: se spune c ntre atributele A, B, C ale unei relaii exist o
dependen multivaloric, dac pentru fiecare valoare a lui A exist o mulime de valori ale
lui B i o mulime de valori ale lui C, dar mulimile valorilor lui B i C sunt independente
unele de altele.
Notaia simbolic: A >> B
Nu se iau n consideraie cazurile n care
B este o submulime a lui A
AB=R
pentru c acestea nu specific o constrngere asupra relaiei.
S considerm Relaia Aproviz:
Aproviz

(NrMagazie, Furnizor, Produs, Pre)

n aceast relaie dependena multivaloric este:


NrMagazie >> Furnizor
NrMagazie >> Produs
Cu toate c relaia este n BCNF (deoarece exist o singur cheie candidat), ea este prost
structurat datorit redundanei datelor, cauzat de prezena dependenei multivalorice.
A patra form normal (4NF): o relaie care se afl n BCNF i nu conine dependene
multivalorice.
Este o form mai strict dect BCNF pentru c mpiedic relaiile s conin dependene
multivalorice, prevenind astfel redundana datelor. Normalizarea de la BDNF la 4NF presupune
eliminarea dependenelor multivalorice prin plasarea atributului (atributelor) ntr-o nou
relaie mpreun cu o copie a determinantului.