techIT.ro Do we have a problem? Let's tech it!    












Daca ai impresia ca educatia e scumpa,
atunci încearca sa vezi cum e ignoranta.
Andy McIntyre









Home  |  Dictionar IT  |  Download  |  Forum  |  Despre noi  |  Contact

Tutorial SQL. Baze de date (partea II-a). Crearea unui nou exemplu

Formele de normalizare

Aşa cum se poate vedea în prima parte datele pot fi afectate de două mari probleme: redundanţa şi inconsistenţa. Rezolvarea presupune realizarea unei structuri în care datele să fie accesibile oriunde este nevoie prin relaţii nu prin duplicare.

Astfel, relaţiile dintre tabele fac posibilă eliminarea redundanţei datelor şi păstrarea integrităţii referenţiale a datelor.
Eliminarea redundanţei se face prin realizarea unor legături între anumite date şi locurile unde aceste date sunt folosite, evitând astfel duplicarea lor, în fiecare loc în care acestea sunt folosite. Integritatea datelor este protejată tocmai prin utilizarea datelor fără redundanţe, astfel încât actualizarea lor să se facă într-un singur loc, fără posibilitatea de a greşi.



În subsidiar, pentru ca datele să poată fi relaţionate şi utilizate corect este necesară normalizarea bazei de date. Acest lucru presupune încadrarea în formele de normalizare de mai jos:


1. Prima formă de normalizare (1NF)

Într-o bază de date relaţională, entităţi diferite trebuie stocate în tabele diferite. Este recomandabil ca pentru fiecare entitate (de business) să se creeze un tabel separat. În exemplul din această serie de articole, produsele şi tranzacţiile sunt entităţi diferite.

Foarte adesea această formă de normalizare este prezentată într-un alt mod (am ales modul de mai sus pentru că este mai cuprinzător). În această formulare se spune că valoarea unui atribut al unei entităţi (modelat, în mod normal, în baza de date printr-o coloană) nu poate lua valori multiple (ceea ce ar însemna utilizarea mai multor coloane de acelaşi fel). Astfel, este greşită alegerea unei structuri de genul:

FirmăAdresă 1Adresă 2
Alfa s.r.l.Str. Preciziei nr. 3Bd. Bucureşti nr. 201


Modelul corect pentru exemplul acesta presupune stocarea adreselor, câte o înregistrare pentru fiecare adresă:

FirmăAdresă
Alfa s.r.l.Str. Preciziei nr. 3
Alfa s.r.l.Bd. Bucureşti nr. 201


În realitate însă, normalizarea completă constă în separarea datelor în două tabele, creând o relaţie între înregistrări:

- tabelă cu firmele:
CodFirmăDenumireFirmă
ALFAAlfa s.r.l.
BETABeta s.r.l.


- tabela cu Adresele firmelor:

CodUnicAdresaCodFirmăAdresă
1Alfa s.r.l.Str. Preciziei nr. 3
2Alfa s.r.l.Bd. Bucureşti nr. 201




2. A doua formă de normalizare (2NF)

O tabelă este în a doua formă de normalizare dacă şi numai dacă se găseşte în prima formă de normalizare şi, în plus, orice înregistrare dintr-o tabelă poate fi identificată în mod unic printr-o cheie primară şi fiecare atribut (valoare dintr-o coloană) depinde în mod direct de întreaga cheie primară.

Pentru a asigura dependenţa faţă de întreaga cheie primară, este necesar ca în tabelele care au cheie compusă, fiecare atribut să depindă de toate coloanele care compun cheia primară. Dacă un tabel are cheie unică el intră automat în a doua formă de normalizare.



3. A treia formă de normalizare (3NF)

O tabelă este în a treia formă de normalizare dacă şi numai dacă se găseşte în a doua formă de normalizare şi, în plus, câmpurile care nu sunt chei primare sunt independente unul de altul, în sensul că nici un câmp să nu să fie obţinut prin aplicarea unei funcţii asupra valorii altor câmpuri (câmpurile care nu sunt chei primare sunt independente între ele şi depind numai de cheia primară).

Încălcarea acestei forme poate fi detectată analizând care câmpuri trebuie actualizate atunci când se actualizează un alt câmp.

IDProdusPretCantitateDataProducătorAdresa
1Camasa$100.0013/22/2006SC Textila SRLStrada Industriei nr. 10
2Camasa$80.0014/23/2006SC Textila SRLStrada Industriei nr. 10
3Mere$4.0014/22/2006SC Fructe SRLStr. Livezii nr. 21


De exemplu, în tabela de mai sus, câmpul Adresa nu depinde de cheia primară ci de câmpul Producător.


În afară de aceste trei forme de normalizare, în literatura de specialitate mai sunt descrise şi altele. În general însă, acestea trei sunt acoperitoare şi se acceptă că o bază de date este normalizată dacă se găseşte în a treia formă de normalizare.



Relaţii

Relaţiile într-o bază de date relaţională pot fi:

- unu la unu (1:1): unei înregistrări din tabela părinte îi corespunde o înregistrare în tabela copil (de exemplu, o persoană are o singură adresă de domiciliu sau un singur act de identitate).

- unu la mai mulţi (1:n): unei înregistrări din tabela părinte îi corespund mai multe înregistrări în tabela copil (de exemplu, un produs poate avea mai multe reţete şi poate fi vândut în mai multe tranzacţii).


Aici este important de observat că în viaţa reală, între entităţi pot exista şi relaţii de mai mulţi la mai mulţi (n:n). Acest tip de relaţii sunt modelate în baza de date prin crearea unei tabele de legătură.

Denormalizarea

Este important de reţinut că regulile de normalizare pot fi încălcate uneori, pentru un design optimal al bazei de date. De pildă, anumite probleme de performanţă pot fi rezolvate prin introducerea voită a unei anumite redundanţe a datelor.

techit.ro





Colecţia:  Colecţia Tutorial SQL

Articolul precedent:  Tutorial SQL. Baze de date (I). Crearea unui exemplu
Articolul următor:  Tutorial SQL. Baze de date (partea III-a). Normalizarea



  


  Adauga un comentariuSpune-ti parerea despre acest articol!