Sunteți pe pagina 1din 12

Referat despre formele normale ale bazei de date

Normalizarea bazelor de date este un proces de optimizare a acestora prin care se


încearcă minimizarea redundanței datelor și a anomaliilor de introducere, actualizare și
ștergere.

Formele normale ale bazei de date sunt:

1. Forma 1NF;
Atributele unei relații trebuie să fie domenii de valori atomice, adică să nu mai poată fi
descompuse
Nu trebuie să existe grupuri repetitive
Exemple:
a. Fie relația Inițial cu următoarele date:
StudentId
Materie
101
Analiza, Programare, Economie
102
Analiza, Algebra

1NF:
StudentId
Materie
101
Analiza
101
Programare
101
Economie
102
Analiza
102
Algebra

sau

Student Id
Materie
Excursie
101
Analiza, Programare, Economie
munte, strainatate
102
Analiza, Algebra
mare,
munte

b. Fie relația Materii cu următoarele date:


StudentId
Materie
101
Analiza
101
Programare
101
Economie
102
Analiza
102
Algebra

b. Fie relația Excursii cu următoarele date:


StudentId
Excursie
101
munte
101
strainatate
102
mare
102
Munte.
2. Forma 2NF;
O relație este în 2NF dacă este în 1NF și oricare dintre atributele care nu aparțin cheii
primare depinde complet (nu parțial) de cheia primară.
Exemple:
a. Fie relația Inițial cu următoarele date:
StudentId
ProiectId
NumeStudent
NumeProiect
b. Fie relația Studenți cu următoarele date:
StudentId
ProiectId
NumeStudent

Pc. Fie relația roiecte cu următoarele date


ProiectId
NumeProiect.
3. Forma 3NF;
O relație este în 3NF dacă este in 2NF și nu există dependențe funcționale tranzitive
față de cheia primară (nu există dependențe funcționale între atributele non-chei)
4. Normalizarea bazelor de date - bazededatemementoadit (google.com)

Normalizarea bazelor de date explicată mai în detaliu

Normalizarea bazei de date sau normalizarea SQL ne ajută să grupăm datele


aferente într-un singur tabel. Orice date atributive sau date conexe indirect sunt plasate
în diferite tabele și aceste tabele sunt conectate cu o relație logică între tabelele părinte
și copil.
În 1970, Edgar F. Codd a venit cu conceptul de normalizare. El a împărtășit o lucrare
numită „Un model relațional de date pentru băncile mari partajate” în care a propus
„First Normal Form (1NF)”.

Avantajele normalizării

Normalizarea bazei de date oferă următoarele avantaje de bază:


1. Normalizarea crește consistența datelor, deoarece evită duplicitatea datelor stocând
datele într-un singur loc.
2. Normalizarea ajută la gruparea datelor similare sau conexe în aceeași schemă,
rezultând astfel o grupare mai bună a datelor.
3. Normalizarea îmbunătățește căutarea mai rapidă, deoarece indexurile pot fi create
mai repede. Prin urmare, baza de date sau tabelul normalizat este utilizat pentru OLTP
(Online Transaction Processing).
Dezavantaje ale normalizării bazei de date
Normalizarea SGBD are următoarele dezavantaje:
1. Nu putem găsi datele asociate pentru, să spunem un produs sau un angajat într-un
singur loc și trebuie să ne alăturăm mai multor tabele. Acest lucru determină o
întârziere în recuperarea datelor.
2. Astfel, Normalizarea nu este o opțiune bună în tranzacțiile OLAP (Procesare
analitică online).
Înainte de a continua, să înțelegem următorii termeni:
Entitate: Entitatea este un obiect din viața reală, în care datele asociate unui astfel de
obiect sunt stocate în tabel. Exemplul unor astfel de obiecte sunt angajații,
departamentele, studenții etc.
Atribute: Atributele sunt caracteristicile entității, care oferă unele informații despre
entitate. De exemplu, dacă tabelele sunt entități, atunci coloanele sunt atributele lor.
Tipuri de forme normale
# 1) 1NF (Prima formă normală)
Prin definiție, o entitate care nu are coloane sau grupuri de date repetate poate fi
denumită Primul formular normal. În prima formă normală, fiecare coloană este unică.
Iată cum ar fi arătat tabelul angajaților și departamentului nostru dacă în prima formă
normală (1NF):
empNum
numele de familie
Nume
deptName
deptCity
deptCountry
1001
Andrews
Jack
Conturi
New York
Statele Unite
1002
Schwatz
Mike
Tehnologie
New York
Statele Unite
1009
ceașcă
Harry
HR
Berlin
Germania
1007
Harvey
Parker
Administrator
Londra
Regatul Unit
1007
Harvey
Parker
HR
Londra
Regatul Unit
Aici, toate coloanele atât ale angajaților, cât și ale tabelelor Departamentului au fost
împărțite într-una și nu este nevoie de conectarea coloanelor, cum ar fi deptNum,
deoarece toate datele sunt disponibile într-un singur loc.
Dar un tabel ca acesta, cu toate coloanele necesare, ar fi nu numai dificil de gestionat,
ci și dificil de efectuat operațiuni și, de asemenea, ineficient din punct de vedere al
stocării.
# 2) 2NF (a doua formă normală)
Prin definiție, o entitate care este 1NF și unul dintre atributele sale este definită ca
cheie primară, iar atributele rămase sunt dependente de cheia primară.
Următorul este un exemplu de cum ar arăta angajații și tabelul departamentului:
Tabelul angajaților:
empNum
numele de familie
Nume
1001
Andrews
Jack
1002
Schwatz
Mike
1009
ceașcă
Harry
1007
Harvey
Parker
1007
Harvey
Parker
Tabelul departamentelor:
deptNum
deptName
deptCity
deptCountry
1
Conturi
New York
Statele Unite
Două
Tehnologie
New York
Statele Unite
3
HR
Berlin
Germania
4
Administrator
Londra
Regatul Unit
Tabelul EmpDept:
empDeptID
empNum
deptNum
1
1001
1
Două
1002
Două
3
1009
3
4
1007
4
5
1007
3
Aici, putem observa că am împărțit tabelul în formă 1NF în trei tabele diferite. tabelul
Angajaților este o entitate despre toți angajații unei companii și atributele sale descriu
proprietățile fiecărui angajat. Cheia principală pentru acest tabel este empNum.
În mod similar, tabelul Departamente este o entitate despre toate departamentele dintr-
o companie și atributele sale descriu proprietățile fiecărui departament. Cheia
principală pentru acest tabel este deptNum.
În al treilea tabel, am combinat cheile primare ale ambelor tabele. Cheile principale ale
tabelelor Angajați și Departamente sunt denumite chei străine în acest al treilea tabel.
Dacă utilizatorul dorește o ieșire similară cu cea pe care am avut-o în 1NF, atunci
utilizatorul trebuie să se alăture tuturor celor trei tabele, folosind cheile principale.
Un exemplu de interogare ar arăta așa cum se arată mai jos:
SELECT empNum, lastName, firstName, deptNum, deptName, deptCity, deptCountry
FROM Employees A, Departments B, EmpDept C WHERE A.empNum = C.empNum
AND B.deptNum = C.deptNum WITH UR;
# 3) 3NF (a treia formă normală)
Prin definiție, o tabelă este considerată a treia normală dacă tabelul / entitatea se află
deja în a doua formă normală și coloanele tabelului / entității nu depind tranzitiv de
cheia primară.
Să înțelegem dependența netransitivă, cu ajutorul exemplului următor.
Spuneți un tabel numit, Clientul are coloanele de mai jos:
Număr de înregistrare client - Cheia primară care identifică un client unic
ClientZIP - Codul poștal al localității în care locuiește clientul
CustomerCity - Orașul în care locuiește clientul
În cazul de mai sus, coloana CustomerCity este dependentă de coloana CustomerZIP,
iar coloana CustomerZIP este dependentă de CustomerID.
Scenariul de mai sus se numește dependență tranzitivă a coloanei CustomerCity de
CustomerID, adică cheia primară. După ce înțelegem dependența tranzitivă, acum să
discutăm problema acestei dependențe.
Ar putea exista un posibil scenariu în care se face o actualizare nedorită a tabelului
pentru actualizarea CustomerZIP la un cod poștal din alt oraș fără a actualiza
CustomerCity, lăsând astfel baza de date într-o stare inconsistentă.
Pentru a remedia această problemă, trebuie să eliminăm dependența tranzitivă care ar
putea fi realizată prin crearea unui alt tabel, să zicem, tabelul CustZIP care conține
două coloane, adică CustomerZIP (ca cheie primară) și CustomerCity.
Coloana CustomerZIP din tabelul Customer este o cheie externă pentru CustomerZIP
din tabelul CustZIP. Această relație asigură că nu există nicio anomalie în actualizările
în care un CustomerZIP este actualizat fără a face modificări în CustomerCity.
# 4) Boyce-Codd Formă normală (3,5 Formă normală)
Prin definiție, tabelul este considerat formă normală Boyce-Codd, dacă este deja în a
treia formă normală și pentru fiecare dependență funcțională între A și B, A ar trebui
să fie o super cheie.
Această definiție sună cam complicată. Să încercăm să o rupem pentru a o înțelege
mai bine.
Dependență funcțională: Se spune că atributele sau coloanele unui tabel sunt
funcțional dependente atunci când un atribut sau o coloană a unui tabel identifică în
mod unic un alt atribut (e) sau coloană (e) din același tabel.
De exemplu, coloana empNum sau Numărul angajaților identifică în mod unic
celelalte coloane precum numele angajatului, salariul angajaților etc. din tabelul
angajaților.
Super cheie: O singură cheie sau un grup de chei multiple care ar putea identifica în
mod unic un singur rând dintr-un tabel poate fi denumită Super Cheie. În termeni
generali, cunoaștem astfel de chei precum Chei compozite.
Să luăm în considerare următorul scenariu pentru a înțelege când există o problemă cu
a treia formă normală și cum vine Boyce-Codd Forma normală de salvare.
empNum
Nume
empCity
deptName
deptHead
1001
Jack
New York
Conturi
Raymond
1001
Jack
New York
Tehnologie
Donald
1002
Harry
Berlin
Conturi
Samara
1007
Parker
Londra
HR
Elizabeth
1007
Parker
Londra
Infrastructură
Tom
În exemplul de mai sus, angajații cu empNum 1001 și 1007 lucrează în două
departamente diferite. Fiecare departament are un șef de departament. Pot fi mai mulți
șefi de departament pentru fiecare departament. Ca și pentru departamentul de conturi,
Raymond și Samara sunt cei doi șefi de departamente.
În acest caz, empNum și deptName sunt super chei, ceea ce implică faptul că
deptName este un atribut primar. Pe baza acestor două coloane, putem identifica
fiecare rând unic.
De asemenea, deptName depinde de deptHead, ceea ce implică faptul că deptHead
este un atribut non-prime. Acest criteriu descalifică tabelul pentru a face parte din
BCNF.
Pentru a rezolva acest lucru, vom împărți tabelul în trei tabele diferite, după cum se
menționează mai jos:
Tabelul angajaților:
empNum
Nume
empCity
deptNum
1001
Jack
New York
D1
1001
Jack
New York
D2
1002
Harry
Berlin
D1
1007
Parker
Londra
D3
1007
Parker
Londra
D4
Tabelul departamentului:
deptNum
deptName
deptHead
D1
Conturi
Raymond
D2
Tehnologie
Donald
D1
Conturi
Samara
D3
HR
Elizabeth
D4
Infrastructură
Tom
# 5) A patra formă normală (4 forme normale)
Prin definiție, un tabel este în a patra formă normală, dacă nu are două sau mai multe
date independente care descriu entitatea relevantă.
# 6) A cincea formă normală (5 forme normale)
Un tabel poate fi luat în considerare în a cincea formă normală numai dacă
îndeplinește condițiile pentru a patra formă normală și poate fi împărțit în mai multe
tabele fără pierderea datelor.
Tutorial de normalizare a bazei de date: Exemple 1NF 2NF 3NF BCNF - Alte
(myservername.com)

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