Sunteți pe pagina 1din 9

Normalizarea

-formele normale pot fi definite in 2 moduri


1. modul academic
2.modul practice de implementare
Definirea formelor normale in modul academic

Prima forma normala: se elimina grupurile repetitive astfel incat toate inreg din toate
tabelele pot fi identificate unic de o cheie unica in fiecare tabela; cu alte uvinte toate
campurile care nu sunt chei primare treb sa depinda de cheile primare
A doua forma normala: toate valoriel non-cheie trebuie sa fie dependente functional total de
cheia primara; nu se admit dependente partiale; o dependenta partiala exista atunci cand un
camp este dependent total de o parte a unei chei composite primare
A treia forma normala: elimina dependintele transitive, adica un camp este determinat
indirect de cheia primara; aceasta deoarece campul este dependent functional de alt camp,
cand celalat camp este dependent de cheia primara
Forma normala Boyce-Codd: orice determinat al unei tabele este o cheie candidat; daca
exista o cheie candidat, , a trei aforma noramla coincide ci forma normala B-C
A patra forma normala: elimina multimile multiple de dependente multivaloare
A cincea forma normala: elimina dependentele ciclice; ac f n dse mai numeste fi forma
normala a proiectiei
Forma normala de cheie de domeniu: este cea mai inalta treapta a normalizarii si este mai
mult o masura a unui concept abstract decat o transformare proproi-zisa

-acest limbaj precis poate fi foarte derutant;


-intretinerea datelor relativ la accesarea inregistrarilor individuale ale db poate fi gestionata cu
usurinta utilizand a treia forma normala sau o forma mai inalta
-o interogare in acest caz va afecta mai multe tabele ceea ce poate duce la scaderea drastic a
perfoemantelor db
-sunt necesare formele normale mai inalte decat a treia forma? Posibil – dar in multe situatii
comerciale nu este necesar
-implementarea excesica a formelor normale introduce prea mulr afunctionalitate bazei de
date

Definirea practica a formelor normale


-multe aplicatii comerciale ale db relationale utilize fomrme normale mai inalte decat forma a
treia
-acest lucru conduce la generarea prea multor tabele ceea ce conduce la prea multe join-uri
SQL
-prea multe jin-uri scad performanta db
-in general performanta este mai importanta decat perfectiunea granular a designului unei db
relationale
-normalizarea este –in cele mai multe cazuri- usor de implementat

Prima forma normala: elimina campurile care se repeta creand o noua tabela astfel incat
tabela originala si noua tabela sunt relationate master –detail cu o relatie one-to-many
-de ex, o tabela master contin inregistrari ce reprezinta toate vasele ce apartin unei firme; o
tabela detail va contine inreg de detaliu, cum ar fi toti paragenii unui vas;
-trebuie create chei in ambele tabele: tabela detail va avea o cheie primara compozita ce
contine cheia primara a tabelei master ca prefix al cheii sale primare; acest camp prefix este
deasemenea foreign key pentru tabela master

A doua forma normala: creaza o tabela unde valorile care se repeta (si nu campurile care se
repeta) sunt eliminate intr-o nooua tabela
-rezultatul este o relatie many-to-one create intre tabela originala si noile tabele create
-noua tabela va avea o cheie primara ce va fi formata dintr-un singur camp; tabela master
contine o cheie foreign catre cheia primara a noii tabele
- cheia straina nu este parte a cheii primare a tabelei originale

A treia forma normala: este dificil de explicat intr-un lb simplu; eliminrea dependintelor
tranzitive implica crearea unei noi tabele pentru niste date care depend indirect de cheia
primara a unei tabele existente
-exista o multime de moduri in care poate fi interpretata a treia forma normala
Peste a treia forma normala: multe db relationale nu trec de a treia forma normala; uneori
nic a treia forma normal anu este atinsa;
-aceasta deoarece sunt generate prea multe tabele ceea ce conduce la prea multe join-uri SQL,
ceea ce conduce la timpi de raspuns foarte mari ai bazei de date
- cazul care trebuei mentionat este eliminarea campurilor cu valori NULL in tabele noi prin
relatii one-to-many
-spatiul pe disk este ieftin, iar nr mare de join-uri conduce la performante slabe ale db

Prima forma normala


Definitia academica:
-elimina grupurile repetitive
-defineste chei primare
-toate inregistrarile treb sa fie identificate unic prin interm ueni chei primare; o cheie primara
este unica si de aceea nu sunt permise valori duplicat
- toarte campurile diferite de cheia primara trebuei sa depinda de cheia primara direct sau
indirect
-toate campuriel treb sa contina o singura valoare
-toate valorile in fiecare camp trebuie sa aiba acelati tip de date
-se creasa o noua tabela pt a muta grupuriel care se repera din prima tabela (originala)

Definitia practica:
-se elimina campurile care se repeta creand o noua tabela astfel incat tabela originala si noua
tabela sunt legate printr-o relatie one-to-many
-tabeal urm prez forma normala 0:
-aceasta tabela trebuie impartita in 2 tabele in care fiecare Nume produs sa aiba mai multe
Componente
- mai intai vom elimina campurile care se repeta(Componente) astfel:

-acum vom separa campul Nume produs intr-o tabela separata, si restul campurilor in alta
tabela ac tabele fiind relationate printr-o relatie one-to-many
-se creaza chei primare in ambele tabele, iar tabela medicamente (medicamente1) are o
cheie primara compozita, care contine cheie cheia primara a tabelei master ca prefix al cheii
sale primare
-campul prefix Nume produs al tabelei medicamente2 este cheia straina catre tabela
Componente

Unde tabelele sunt:


,
-prina forma normala este data de tabelele Componente si Medicaminte2

A doua forma normala


Definitia academica
-tabela trebuie sa fie in prima forma normala
-toate valorile non-chei trebuie sa fir dependente functional total de cheia primara; cu alte
cuvinte nu sunt permise campuri non-chei care sa nu depinda complet si individual de cheia
primara
-dependintele partiale trebuei eliminate; o dependenta partial este un tip special de dependenta
care exista atunci cand un camp este dependent total de o parte a unei chei primare compozite

-ultimele 2 cerinte se pot formula si astfel: se elimina campurile care sunt independente de
cheia primara

- se creaza o noua tabela pt a separa partea dependenta partial a cheii primare si campurile
sale dependente

Definitia practica:
-a doua forma normala efectuaza o operatie similara cu prima forma normala, dar creaza o
tabela in care valorile care se repeta sunt eliminate (intr-o tabela noua) si nu campuriel care se
repeta
- rezultatul este o relatie many-to-one si nu o relatie one-to-many care se creaza intre tabela
originala si noile tabele
-noua tabela va avea o cheie primara formata dintr-un singur camp
-tipic, a doua forma normala creaza relatii many-to-one intre datele dinamice si datele statice,
eliminand datele statice in tabele noi
- fig urmatoare prezinta tabela medicamente2 in prina forma normala dupa separarea
componentelor medicamntelor care se repeta

Sau inainte de separare:


-informatiile referitoare la Firma producatoare si Pret sunt relative statice in raport cu
medicamentele
-in aceasta situatia tabela medicamente reprezinta informatii dinamice referitoare la Firma
producatoare, Cod produs, etc.
-fig urmatoare prezinta un prim pas spre forma a doua normala, eliminand datele statice si in
tabela medicamente2;
astfel vom avea 3 tabele: medicamente3, pretul si :
-obs ca in tabela cod , fiecare articol apare o singura data(cod produs este cheie primara)
-iar in tabela pretul, fiecare Pret apare o singura data—pretul este cheie primara
-fig urmatoare prez relatii many-to-one intre tabelele dinamice (cod si pret) si cele statice
(medicamente3)
-in fig urmatoare sunt create chei primare in ambele tabele cod si pretul pt a identifica unic
codul si pretul in interiorul celor 2 tabele respective.
-identificarea relatilor medicamente3-cod si medicamente3-pretul face ca cheile primare
cod produs si pret sa fie incluse in cheia compozita a tabelei medicamente3
-in fig urm cheile primare in tabelele statice sunt copiate in tabela dinamica medicamente2 ca
parti ale cheii primare compozite a tabelei dinamice medicamente2

-includerea cheilor primare ale tabelei statice in cheia compozita primara a tabelei dinamice
este incorecta in aceasta situatie
-fig urmatoarea prez situatia corecta, modificand relatiile dintre tabelele dinamice si statice
din identifyind in non-identifying
- aceasta deoarece existent datelor statice nu este dependenta de existent datelor
dinamice(copil)
-cu alte cuvinte, un articol al tabelei cod nu este dependent de existent unui component cu
acel cod
- aceasta nu este o regula generala pt a doua forma normala, dar in general este adevarat

-realtiile celei de-a doua forme normale treb intelese astfel: articolele din tabela
Medicamente depind de existent articolelor din tabelele Cod si Pret; fiecare medicament treb
sa aiba un cod si un pret;
-relatia dintre tabela Medicamente si Pret plus Cod produs si Pret sunt de fapt one-to-zero,
one sau many;

-se pare ca plasand tabela medicamente in a doua forma normala se face economie de spatiu;
s-au eliminat inreg duplicat (in tabelele cod si pret)

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