Sei sulla pagina 1di 5

Exemplu de bibliotecă de normalizare

Prin exercițiul următor încercăm să afirmăm cunoștințele de normalizare cu un exemplu simplificat de bază de
date pentru o bibliotecă mică.

Cartea de Calificare Autor Editorial ReaderName DataDev


coduri
Variabilă Perez Gomez,
1001 Murray Spiegel mcgrawhill 15/04/2005
complexă John
1004 Visual Basic 5 ȘI. petroustsos Anaya Rios Teran, Ana 17/04/2005
1005 Statistici Murray Spiegel mcgrawhill Rock, Rene 16/04/2005
Nancy
Universitatea Garcia Roque,
1006 Greenberg și Oracle Corp. 20/04/2005
Oracle Luis
Priya Nathan
Perez Gomez,
1007 Clipper 5.01 Ramalho mcgrawhill 18/04/2005
John

Acest tabel nu îndeplinește cerința First Normal Form (1NF) de a avea doar câmpuri atomice, deoarece numele
cititorului este un câmp care poate (și ar trebui) să fie descompus în nume patern, prenume matern și prenume.

După cum se arată în tabelul următor.

1NF
Cartea de Calificare Autor Editorial Patern maternă Nume DataDev
coduri
Variabilă
1001 Murray Spiegel mcgrawhill perez gomez Juan 15/04/2005
complexă
1004 Visual Basic 5 ȘI. petroustsos Anaya Râuri teran Ana 17/04/2005
1005 Statistici Murray Spiegel mcgrawhill stâncă René 16/04/2005
Universitatea Nancy Oracle
1006 Garcia stâncă Luis 20/04/2005
Oracle Greenberg Corp.
Universitatea Oracle
1006 Priya Nathan Garcia stâncă Luis 20/04/2005
Oracle Corp.
1007 Clipper 5.01 Ramalho mcgrawhill perez gomez Juan 18/04/2005

După cum se poate vedea, există o anumită caracteristică de redundanță a 1NF.


A doua formă normală (2NF) necesită să nu existe dependențe parțiale sau, cu alte cuvinte, toate atributele non-
cheie trebuie să depindă în întregime de cheia primară.

În prezent, în tabelul nostru avem mai multe dependențe parțiale dacă luăm în considerare codul cărții ca un
atribut cheie.

De exemplu, titlul este complet identificat de codul cărții, dar numele cititorului nu are cu adevărat o dependență
de acest cod, așa că aceste date trebuie transferate într-un alt tabel.

2NF

Cartea de Calificare Autor Editorial


coduri
1001 Variabilă complexă Murray Spiegel mcgrawhill
1004 Visual Basic 5 ȘI. petroustsos Anaya
1005 Statistici Murray Spiegel mcgrawhill
1006 Universitatea Oracle Nancy Greenberg Oracle Corp.
1006 Universitatea Oracle Priya Nathan Oracle Corp.
1007 Clipper 5.01 Ramalho mcgrawhill

Noul tabel va conține doar datele cititorului.

cititor de Patern matern Nume


coduri ă
501 perez gomez Juan
502 Râuri teran Ana
503 stâncă René
504 Garcia stâncă Luis

Am creat un tabel pentru a conține datele cititorului și a trebuit să creăm și coloana CodLector pentru a le
identifica în mod unic pe fiecare.

Cu toate acestea, acest nou aspect al bazei de date necesită existența unui alt tabel pentru a păstra informațiile
despre cărțile care sunt verificate pentru ce cititori.

Acest tabel este prezentat mai jos:


Cartea cititor de DataDev
de coduri
coduri
15/04/200
1001 501 5
17/04/200
1004 502 5
16/04/200
1005 503 5
20/04/200
1006 504 5
18/04/200
1007 501 5

Pentru a treia formă normală (3NF) relația trebuie să fie în 2NF și, de asemenea, atributele non-cheie trebuie să
fie reciproc independente și complet dependente de cheia primară.

De asemenea, amintiți-vă că am spus că aceasta înseamnă că coloanele din tabel trebuie să conțină doar
informații despre entitatea definită de cheia primară și, prin urmare, coloanele din tabel trebuie să conțină date
despre un singur lucru.

În exemplul nostru 2FN, primul tabel conține informații despre carte, autori și editori, așa că trebuie să creăm noi
tabele pentru a satisface cerințele 3FN.

3NF

Cartea de Calificare
coduri
1001 Variabilă complexă
1004 Visual Basic 5
1005 Statistici
1006 Universitatea Oracle
1007 Clipper 5.01
CodAutor Autor
801 Murray Spiegel
802 ȘI. petroustsos
Nancy
803 Greenberg
804 Priya Nathan
806 Ramalho

CodEditorial Editorial
901 mcgrawhill
902 Anaya
903 Oracle Corp.

Deși am creat tabele noi, astfel încât fiecare să aibă doar informații despre o entitate, am pierdut și informațiile
despre care autor a scris care carte și editurile corespunzătoare, așa că trebuie să creăm alte tabele care să
relaționeze fiecare carte cu autorii și editorialele sale. .

Cartea de codAutor
coduri
1001 801
1004 802
1005 801
1006 803
1006 804
1007 806

Cartea de codEditorial
coduri
1001 901
1004 902
1005 901
1006 903
1007 901
Iar restul tabelelor nu necesită modificări.

cititor de Patern maternă Nume


coduri
501 perez gomez Juan
502 Râuri teran Ana
503 stâncă René
504 Garcia stâncă Luis

Cartea cititor de DataDev


de coduri
coduri
15/04/200
1001 501 5
17/04/200
1004 502 5
16/04/200
1005 503 5
20/04/200
1006 504 5
18/04/200
1007 501 5

Potrebbero piacerti anche