Sunteți pe pagina 1din 4

Forma normal 4 (FN4)

prof. dr. ing. Mircea Petrescu


Pentru a nelege FN4, fie o relaie cu 2 DMV. Relaia este DPC, de la Departament=Dept, Proiecte,
Componente=Comp. Iat o reprezentare a relaiei DPC n form nenormalizat (prima dat cnd
folosim o astfel de notaie pentru o relaie nenormalizat):
DPC
DPC
Dept
Proiecte
Comp
Dept
Proiecte
Comp
D1
Pr1
C1
D1
Pr1
C1
Pr2
C2
D1
Pr1
C2
D2
Pr3
C2
Iar prin
D1
Pr2
C1
normalizare:
Pr4
C4
D1
Pr2
C2
Pr5
D2
Pr3
C2
Pr2
D3
C5
D2
Pr3
C4
C6
D2
Pr4
C2
D2
Pr4
C4
D2
Pr5
C2
D2
Pr5
C4
D3
Pr2
C5
D3
Pr2
C6
Din forma nenormalizat se vede uor c avem: DeptProiecte, DeptComponente.
Se vede c aa cum este conceput aplicaia, proiectele nu determin componentele (cum ar prea
natural, chiar dac nu obligatoriu), deci nu avem DF ProiectComp. Departamentele menin un
stoc de componenete i ele dezvolt proiectele care pot folosi unele din componentele disponibile
sau toate.
Relaia DPC are cheia format din toate atributele sale, deci este n FNBC. Relaia DPC prezint
urmtoarele anomalii:
1. Anomalii de inserare. Dac un departament, de exemplu D2, adaug o component nou C7
n stocul su, aceasta va face necesar adugarea mai multor tupluri n cazul nostru trei,
cte un tuplu pentru fiecare proiect al departamentului, pentru aceeai component C7.
2. Anomalii de eliminare = reprezint contrariul anomaliilor de inserare prin faptul c atunci
cnd o component este eliminat, trebuie eliminate, de asemenea, toate tuplurile care conin
acea component pentru fiecare proiect al departamentelor.
3. Anomalii de actualizare. Schimbrile (modificrile) care intervin ntr-un proiect sau pentru o
component (de pild, schimbarea numrului), vor face necesare mai multe actualizri
(modificri), ntr-un numr de tupluri egal cu numrul de valori ale celuilalt atribut
independent. De exemplu, dac numele proiectului Pr2 devine Pr9, vor trebui actualizate
toate tuplurile care conin valori pentru atributul Comp, pentru departamentul corespunztor.
n exemplul de mai sus, vor trebui schimbate tuplurile al treilea, al patrulea i ultimele dou
tupluri ale relaiei.
Aadar, anomaliile de mai sus determin o explozie a numrului de tupluri. Putem evita aceast
comportare prin descompunerea relaiei DPC n: DP(Dept, Proiecte) i DC (Dept, Comp).
DP
DC
Dept
Proiecte
Dept
Comp
D1
Pr1
D1
C1
D1
Pr2
D1
C2
D2
Pr3
D2
C2
1

D2
D2
D3

Pr4
Pr5
Pr2

D2
D3
D3

C4
C5
C6

n acest mod, am convertit schema de relaie din FNBC n FN4. Pe baza componentelor de mai sus,
putem defini FN4 a unei scheme de relaie ca fiind o schem de relaie n FNBC, n care nu pot
exista dou sau mai multe DMV care nu sunt totodat i DF. Sau, altfel spus, partea stng
(determinantul) a fiecrei DMV netriviale trebuie s conduc la o schem de relaie separat. Cu
alte cuvinte, n cazul exemplului nostru, n care aveam: DeptProiecte, DeptComponente, am
luat fiecare pereche AB i am construit o schem de relaie AB, cu condiia ca AB s fie
netrivial.
Forma Normal 5 (FN5)
Vom (modifica) schimba coninutul relaiei DPC normalizate folosite n prezentarea FN4, astfel
nct s nu mai prezinte DMV. Numele noii relaii obinute o s fie DPRC.
DPRC
Dept
Proiecte
Comp
Schema de relaie DPRC este n FNBC, deoarece
cheia sa conine toate atributele. De asemenea, DPRC
D1
Pr1
C1
este n FN4, deoarece nu conine DMV.
D1
Pr1
C2
D1
Pr2
C2
D2
Pr3
C2
D2
Pr4
C2
D2
Pr4
C4
D2
Pr5
C4
D3
Pr2
C5
Pe relaia de mai sus, vom efectua acum operaia de proiecie i obinem relaiile DPR=(Dept,
Proiecte), DC=(Dept, Comp) i PRC=(Proiecte,Comp):
DPR
DC
PRC
Dept
Proiecte
Dept
Comp
Proiecte
Comp
D1
Pr1
D1
C1
Pr1
C1
D1
Pr2
D1
C2
Pr1
C2
D2
Pr3
D2
C2
Pr2
C2
D2
Pr4
D2
C4
Pr3
C2
D2
Pr5
D3
C5
Pr4
C2
D3
Pr2
Pr4
C4
Pr5
C4
Pr2
C5
Examinnd relaiile obinute, observm c nu exist posibilitatea de a reconstrui DPRC prin
operaiuni de jonciune, pe niciuna din perechile de relaii de mai sus.
Prin operaiuni de jonciune, vor rezulta jonciuni cu pierderi. Reprezentm mai jos numai tuplurile
nelegate ale acestor jonciuni:
DPR >< DC
DC >< PRC
DPR >< PRC
D1
Pr2
C1
D1
Pr3
C2
D3
Pr2
C2
D2
Pr3
C4
D1
Pr4
C2
D2
Pr1
C2
D2
Pr5
C2
D2
Pr2
C2
Niciunul din tuplurile de mai sus nu exist n relaia DPRC. Pentru a reconstrui DPRC fr pierderi,
trebuie s efectum jonciunea tuturor celor trei scheme: DPR >< DC >< PRC .
2

Faptul c o relaie poate fi reconstruit fr pierderi din unele proiecii ale sale este cunoscut ca
dependen joncional. Dac jonciunile includ i relaia, avem de a face cu o dependen
joncional trivial.
Preferm o schem cu DPR, DC i PRC n loc de DPRC, deoarece relaiile descompuse au
cardinalul inferior celui al relaiei DPRC (sau egal cu acesta). Aceasta nseamn c DPRC va
conduce la anomalii de actualizare datorit redundanei sale, deoarece DPRC, dei este n FNBC i
n FN4, nu este n FN5 sau n Forma Normal Proiecie Jonciune (FNPJ).
O relaie este n FN5 dac:
- dependena joncional care reconstruiete schema original este o dependen joncional
trivial, sau
- fiecare relaie n dependena joncional constituie (cu toate atributele sale) o supercheie a
relaiei originale.
Deoarece avem dependena joncional DPR >< DC >< PRC , DPRC nu este n FN5 (niciuna din
aceste relaii nu formeaz o supercheie pentru DPRC). Prin urmare, schema descompus cu DPR,
DC i PRC este n FN5, ntruct aceste relaii satisfac oricare din condiii (de fapt, ambele condiii)
i ntruct fiecare relaie reprezint o dependen joncional pentru ea nsi, iar atributele sale sunt
superchei (ne amintim c n acest exemplu toate cele trei relaii au cheile formate din toate
atributele lor).
Forma Normal Domeniu-Cheie (FNDC)
FN5 privete dependenele relativ obscure. nc de studiat! Acum:
Fiecare din formele normale prezentate pn acum au fost introduse treptat de cercettori pentru a
elimina anomalii pe care le gseau n formele normale inferioare (n FN5 obscure!). De aceea, a
aprut ideea de a gsi o form normal n care s nu apar anomalii de nici un fel. Aa s-a nscut
FNDC n 1981 (Fagia).
Definiii:
a) constrngere n sens foarte general: orice legtur asupra valorilor statice ale atributelor,
suficient de precis, pentru a putea afirma c este adevrat sau fals. Exemple: DF, DMV,
restricii interne relaiei (de exemplu, privind forma unor atribute vom vedea un exemplu).
b) cheie identificator unic al unui tuplu;
c) domeniu o descriere a valorilor admise pentru un atribut; are dou pri: o descriere fizic
i o descriere semantic, sau logic. Descrierea fizic = mulimea valorilor pe care le poate
avea atributul. Descrierea semantic se refer la nelesul atributului.
Definiia neformal a FNDC: o schem de relaie este n FNDC dac prin introducerea
(satisfacerea) restriciilor de cheie i de domeniu, este determinat satisfacerea tuturor celorlalte
constrngeri.
n practica conceperii, a implementrii i exploatrii bazei de date, prin forarea restriciilor de
cheie i de domeniu, nu apar anomalii i relaiile sunt n FNDC.
FNDC este o problem practic. Nu sunt cunoscui algoritmi pentru construirea unei scheme n
FNDC este mai mult o art dect o tiin.
Exemplu:
Relaia Student(Ids, Anul, Cmin, Chirie)
Cheia Ids (Identificator student).
Constrngeri: CminChirie, Ids nu trebuie s nceap cu digitul 1.
3

Dac putem exprima contrngerile de mai sus ca fiind o consecin logic a definiiilor privind
cheia i domeniile, atunci conform unei teoreme a lui Fagin putem fi siguri c nu vor fi (nu vor
aprea) anomalii de modificare (de actualizare).
Pentru a fora constrngerea c Ids nu ncepe cu 1, vom defini pur i simplu domeniul pentru Ids
astfel nct s in seama de aceast condiie:
Aici definiia domeniului pentru Ids: CDDD, unde C este un digit zecimal 1, iar D este digit
zecimal.
Apoi, trebuie s facem astfel nct constrngerea CminChirie s fie o consecin logic a cheilor.
Aadar: dac atributul Cmin ar fi el nsui o cheie, atunci CminChirie ar fi o consecin logic a
unei chei. Dar, n relaia student, atributul Cmin nu poate fi cheie, deoarece n aceeai cldire a
cminului locuiesc mai muli studenti. Ca urmare, o soluie ar putea fi ca atributul Cmin s fie o
cheie a propriei sale relaii. Atunci, definim relaia ca schema Cmin_Chirie, n care atributele sunt
Cmin i Chirie, iar atributul Cmin este cheie.
Prin introducerea noii relaii, putem elimina atributul Chirie din relaia Student. Mai jos avem
definiiile finale pentru domenii i relaii.
Definiii de domeniu:
Ids = CDDD, unde C = digit zecimal 1, D = digit zecimal
Anul (I, II, III, IV)
Cmin: CHAR(4)
Chirie: DEC(5)
Definiii de scheme de relaie i chei:
Student (Ids, Anul, Cmin), cheie: Ids
Cmin_Chirie (Cmin, Chirie), cheie: Cmin
Schemele de relaie sunt n FNDC, potrivit definiiei formulate anterior (Fagin).

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