Normalizare este procesul de minimizare redundanţă dintr-o relație sau un set de relații. Redundanța în relație poate provoca anomalii de inserare, ștergere și actualizare. Deci, ajută la minimizarea redundanței în relații. Forme normale sunt utilizate pentru a elimina sau reduce redundanța în tabelele bazei de date.
Normalizarea DBMS de către Ranjan Hero
În sistemele de management al bazelor de date (DBMS), formularele normale reprezintă o serie de linii directoare care ajută la asigurarea faptului că proiectarea unei baze de date este eficientă, organizată și lipsită de anomalii de date. Există mai multe niveluri de normalizare, fiecare cu propriul set de linii directoare, cunoscute sub numele de forme normale.
Puncte importante cu privire la formele normale din DBMS
- Prima formă normală (1NF): Acesta este cel mai elementar nivel de normalizare. În 1NF, fiecare celulă de tabel ar trebui să conțină o singură valoare și fiecare coloană ar trebui să aibă un nume unic. Prima formă normală ajută la eliminarea datelor duplicate și la simplificarea interogărilor.
- A doua formă normală (2NF): 2NF elimină datele redundante solicitând ca fiecare atribut non-cheie să fie dependent de cheia primară. Aceasta înseamnă că fiecare coloană ar trebui să fie direct legată de cheia primară, și nu de alte coloane.
- A treia formă normală (3NF): 3NF se bazează pe 2NF cerând ca toate atributele non-cheie să fie independente unele de altele. Aceasta înseamnă că fiecare coloană ar trebui să fie direct legată de cheia primară și nu de alte coloane din același tabel.
- Forma normală Boyce-Codd (BCNF): BCNF este o formă mai strictă a 3NF care asigură că fiecare determinant dintr-un tabel este o cheie candidată. Cu alte cuvinte, BCNF asigură că fiecare atribut non-cheie este dependent doar de cheia candidată.
- A patra formă normală (4NF): 4NF este o rafinare suplimentară a BCNF care asigură că un tabel nu conține dependențe cu mai multe valori.
- A cincea formă normală (5NF): 5NF este cel mai înalt nivel de normalizare și implică descompunerea unui tabel în tabele mai mici pentru a elimina redundanța datelor și pentru a îmbunătăți integritatea datelor.
Formularele normale ajută la reducerea redundanței datelor, la creșterea consistenței datelor și la îmbunătățirea performanței bazei de date. Cu toate acestea, niveluri mai ridicate de normalizare pot duce la proiecte și interogări de baze de date mai complexe. Este important să găsiți un echilibru între normalizare și caracter practic atunci când proiectați o bază de date.
Avantajele formei normale
- Redundanță redusă a datelor: Normalizarea ajută la eliminarea datelor duplicate din tabele, reducând cantitatea de spațiu de stocare necesară și îmbunătățind eficiența bazei de date.
- Consistență îmbunătățită a datelor: Normalizarea asigură că datele sunt stocate într-o manieră consecventă și organizată, reducând riscul apariției inconsecvențelor și erorilor datelor.
- Proiectare simplificată a bazei de date: Normalizarea oferă linii directoare pentru organizarea tabelelor și a relațiilor de date, facilitând proiectarea și întreținerea unei baze de date.
- Performanță îmbunătățită a interogărilor: Tabelele normalizate sunt de obicei mai ușor de căutat și de preluat date, ceea ce duce la o performanță mai rapidă a interogărilor.
- Întreținere mai ușoară a bazei de date: Normalizarea reduce complexitatea unei baze de date prin împărțirea acesteia în tabele mai mici, mai ușor de gestionat, făcând mai ușor să adăugați, să modificați și să ștergeți date.
În general, utilizarea formularelor normale în DBMS ajută la îmbunătățirea calității datelor, la creșterea eficienței bazei de date și la simplificarea proiectării și întreținerii bazei de date.
Prima formă normală
Dacă o relație conține un atribut compus sau cu mai multe valori, aceasta încalcă prima formă normală sau o relație este în prima formă normală dacă nu conține niciun atribut compus sau cu mai multe valori. O relație este în prima formă normală dacă fiecare atribut din relația respectivă este atribut de valoare unic .
0,0625 sub formă de fracție
- Exemplul 1 – Relația STUDENT din tabelul 1 nu este în 1NF din cauza atributului cu mai multe valori STUD_PHONE. Descompunerea sa în 1NF a fost prezentată în tabelul 2.

Exemplu
- Exemplul 2 –
ID Name Courses ------------------ 1 A c1, c2 2 E c3 3 M C2, c3>
- În tabelul de mai sus, cursul este un atribut cu mai multe valori, deci nu este în 1NF. Tabelul de mai jos este în 1NF, deoarece nu există un atribut cu valori multiple
ID Name Course ------------------ 1 A c1 1 A c2 2 E c3 3 M c2 3 M c3>
A doua formă normală
Pentru a fi în a doua formă normală, o relație trebuie să fie în prima formă normală și relația nu trebuie să conțină nicio dependență parțială. O relație este în 2NF dacă are Fără dependență parțială, adică , niciun atribut non-prim (atribute care nu fac parte din nicio cheie candidată) nu este dependent de orice subset adecvat al oricărei chei candidate din tabel. Dependență parțială - Dacă subsetul adecvat al cheii candidate determină un atribut non-prim, se numește dependență parțială.
- Exemplul 1 – Luați în considerare tabelul 3 după cum urmează.
STUD_NO COURSE_NO COURSE_FEE 1 C1 1000 2 C2 1500 1 C4 2000 4 C3 1000 4 C1 1000 2 C5 2000>
- {Rețineți că, există multe cursuri care au aceeași taxă de curs} Aici, COURSE_FEE nu poate decide singur valoarea COURSE_NO sau STUD_NO; COURSE_FEE împreună cu STUD_NO nu pot decide valoarea COURSE_NO; COURSE_FEE împreună cu COURSE_NO nu pot decide valoarea STUD_NO; Prin urmare, COURSE_FEE ar fi un atribut non-prim, deoarece nu aparține singurei chei candidate {STUD_NO, COURSE_NO} ; Dar, COURSE_NO -> COURSE_FEE, adică COURSE_FEE depinde de COURSE_NO, care este un subset adecvat al cheii candidate. Atributul non-prim COURSE_FEE depinde de un subset adecvat al cheii candidate, care este o dependență parțială și astfel această relație nu este în 2NF. Pentru a converti relația de mai sus la 2NF, trebuie să împărțim tabelul în două tabele, cum ar fi: Tabelul 1: STUD_NO, COURSE_NO Tabelul 2: COURSE_NO, COURSE_FEE
Table 1 Table 2 STUD_NO COURSE_NO COURSE_NO COURSE_FEE 1 C1 C1 1000 2 C2 C2 1500 1 C4 C3 1000 4 C3 C4 2000 4 C1 C5 2000>
- NOTĂ: 2NF încearcă să reducă stocarea datelor redundante în memorie. De exemplu, dacă există 100 de studenți care urmează cursul C1, nu trebuie să stocăm taxa lui ca 1000 pentru toate cele 100 de înregistrări, în schimb, odată ce o putem stoca în al doilea tabel, deoarece taxa de curs pentru C1 este 1000.
- Exemplul 2 – Luați în considerare următoarele dependențe funcționale în relația R (A, B, C, D)
AB ->C [A și B împreună determină C] BC -> D [B și C împreună determină D]>
În relația de mai sus, AB este singura cheie candidată și nu există nicio dependență parțială, adică orice subset propriu al AB nu determină niciun atribut non-prim.
X is a super key. Y is a prime attribute (each element of Y is part of some candidate key).>
Exemplul 1: În relația STUDENT din tabelul 4, FD set: {STUD_NO -> STUD_NAME, STUD_NO -> STUD_STATE, STUD_STATE -> STUD_COUNTRY, STUD_NO -> STUD_AGE}
Cheia candidatului: {STUD_NO}
Pentru această relație din tabelul 4, STUD_NO -> STUD_STATE și STUD_STATE -> STUD_COUNTRY sunt adevărate.
Deci, STUD_COUNTRY este dependent tranzitiv de STUD_NO. Încalcă a treia formă normală.
Pentru a o converti în a treia formă normală, vom descompune relația STUDENT (STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_COUNTRY_STUD_AGE) ca: STUDENT (STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_AGE) STUD_COUNTRY (STATE, COUNTRY)
Luați în considerare relația R(A, B, C, D, E) A -> BC, CD -> E, B -> D, E -> A Toate cheile candidate posibile în relația de mai sus sunt {A, E, CD, BC} Toate atributele sunt în partea dreaptă a tuturor dependențelor funcționale sunt prime.
Exemplul 2: Găsiți cea mai mare formă normală a unei relații R(A,B,C,D,E) cu FD setat ca {BC->D, AC->BE, B->E}
Pasul 1: După cum putem vedea, (AC)+ ={A,C,B,E,D}, dar niciunul din subseturile sale nu poate determina toate atributele relației, deci AC va fi cheia candidată. A sau C nu pot fi derivate din niciun alt atribut al relației, așa că va exista doar o cheie candidată {AC}.
Pasul 2: Atributele prime sunt acele atribute care fac parte din cheia candidată {A, C} în acest exemplu, iar altele vor fi non-prime {B, D, E} în acest exemplu.
Pasul 3: Relația R este în prima formă normală, deoarece un SGBD relațional nu permite atribute cu mai multe valori sau compuse. Relația este în a 2-a formă normală deoarece BC->D este în a 2-a formă normală (BC nu este un subset propriu al cheii candidate AC) și AC->BE este în a 2-a formă normală (AC este cheia candidată) și B->E este în a doua formă normală (B nu este un subset adecvat al cheii candidate AC).
Relația nu este în a treia formă normală deoarece în BC->D (nici BC nu este o super-cheie, nici D nu este un atribut prim) și în B->E (nici B este o super-cheie și nici E nu este un atribut prim) ci pentru satisface a treia normală pentru, fie LHS al unui FD ar trebui să fie super-cheie, fie RHS ar trebui să fie atributul principal. Deci cea mai înaltă formă normală de relație va fi a 2-a formă normală.
De exemplu, luați în considerare relația R(A, B, C) A -> BC, B -> A și B ambele sunt super-chei, așa că relația de mai sus este în BCNF.
A treia formă normală
Se spune că o relație este în a treia formă normală, dacă nu am avut nicio dependență tranzitivă pentru atributele non-prime. Condiția de bază cu cea de-a treia formă normală este că relația trebuie să fie în a doua formă normală.
Mai jos este menționată condiția de bază care trebuie îndeplinită în dependența funcțională netrivială X -> Y:
- X este o Super Cheie.
- Y este un atribut principal (aceasta înseamnă că elementul Y este o parte a cheii candidatului).
Pentru mai multe, consultați A treia formă normală în DBMS.
BCNF
BCNF (Boyce-Codd Normal Form) este doar o versiune avansată a Third Normal Form. Aici avem câteva reguli suplimentare decât a treia formă normală. Condiția de bază pentru ca orice relație să fie în BCNF este ca aceasta să fie în a treia formă normală.
Trebuie să ne concentrăm pe câteva reguli de bază care sunt pentru BCNF:
1. Table must be in Third Normal Form. 2. In relation X->Y, X trebuie să fie o supercheie într-o relație.>
Pentru mai multe, consultați BCNF în DBMS.
A patra formă normală
Forma a patra normală nu conține o dependență multivaued non-trivială, cu excepția cheii candidate. Condiția de bază cu a patra formă normală este ca relația să fie în BCNF.
Regulile de bază sunt menționate mai jos.
1. It must be in BCNF. 2. It does not have any multi-valued dependency.>
Pentru mai multe, consultați A patra formă normală în DBMS.
A cincea formă normală
A cincea formă normală este denumită și formă normală proiectată. Condițiile de bază ale formei normale a cincea sunt menționate mai jos.
Relation must be in Fourth Normal Form. The relation must not be further non loss decomposed.>
Pentru mai multe, consultați A cincea formă normală în DBMS.
sincronizarea firelor
Aplicații ale formelor normale în DBMS
- Consecvența datelor: Formularele normale asigură că datele sunt consecvente și nu conțin informații redundante. Acest lucru ajută la prevenirea inconsecvențelor și erorilor în baza de date.
- Redundanță de date: Formele normale minimizează redundanța datelor prin organizarea datelor în tabele care conțin doar date unice. Acest lucru reduce cantitatea de spațiu de stocare necesară pentru baza de date și o face mai ușor de gestionat.
- Timp de raspuns: Formularele normale pot îmbunătăți performanța interogărilor prin reducerea numărului de alăturari necesare pentru a prelua date. Acest lucru ajută la accelerarea procesării interogărilor și la îmbunătățirea performanței generale a sistemului.
- Intretinerea bazei de date: Formularele normale facilitează întreținerea bazei de date prin reducerea cantității de date redundante care trebuie actualizate, șterse sau modificate. Acest lucru ajută la îmbunătățirea gestionării bazei de date și la reducerea riscului de erori sau inconsecvențe.
- Proiectarea bazei de date: Formularele normale oferă linii directoare pentru proiectarea bazelor de date care sunt eficiente, flexibile și scalabile. Acest lucru vă ajută să vă asigurați că baza de date poate fi ușor modificată, actualizată sau extinsă după cum este necesar.
Câteva puncte importante despre formele normale
- BCNF este liber de redundanță cauzată de dependențe funcționale.
- Dacă o relație este în BCNF, atunci 3NF este și el satisfăcut.
- Dacă toate atributele relației sunt atribute prim, atunci relația este întotdeauna în 3NF.
- O relație într-o bază de date relațională este întotdeauna și cel puțin în formă 1NF.
- Fiecare relație binară (o relație cu doar 2 atribute) este întotdeauna în BCNF.
- Dacă o relație are doar chei candidate unice (adică fiecare cheie candidată constă dintr-un singur atribut), atunci relația este întotdeauna în 2NF (deoarece nu este posibilă o dependență funcțională parțială).
- Uneori, alegerea formularului BCNF poate să nu păstreze dependența funcțională. În acest caz, alegeți BCNF numai dacă nu sunt necesare FD-urile pierdute, altfel normalizați doar până la 3NF.
- Există mult mai multe forme normale care există după BCNF, cum ar fi 4NF și altele. Dar în sistemele de baze de date din lumea reală, în general, nu este necesar să depășească BCNF.
Concluzie
În concluzie, bazele de date relaționale pot fi aranjate după un set de reguli numite forme normale în Bază de date administrare (1NF, 2NF, 3NF, BCNF, 4NF și 5NF), care reduc redundanța datelor și păstrează integritatea datelor. Prin rezolvarea diferitelor tipuri de anomalii și dependențe de date, fiecare formă normală ulterioară se extinde pe cea care a apărut înaintea ei. Cerințele și proprietățile particulare ale datelor stocate determină ce formă normală ar trebui utilizată; formele normale mai înalte oferă o integritate mai strictă a datelor, dar pot duce și la structuri de baze de date mai complicate.
Link-uri la întrebări din anul precedent
- GATE CS 2012, Întrebarea 2
- GATE CS 2013, Întrebarea 54
- GATE CS 2013, Întrebarea 55
- GATE CS 2005, Întrebarea 29
- GATE CS 2002, Întrebarea 23
- GATE CS 2002, Întrebarea 50
- GATE CS 2001, Întrebarea 48
- GATE CS 1999, Întrebarea 32
- GATE IT 2005, Întrebarea 22
- GATE IT 2008, Întrebarea 60
- GATE CS 2016 (Setul 1), Întrebarea 31
Întrebări frecvente despre forma normală
Î.1: De ce este importantă normalizarea în DBMS?
Răspuns:
Normalizarea ajută la prevenirea anomaliilor bazei de date, ceea ce asigură în cele din urmă consistența bazei de date și ajută la întreținerea ușoară a bazei de date.
Î.2: Este posibil să supranormalizați baza de date?
Răspuns:
Da, normalizarea excesivă va merge la interogări complexe și, de asemenea, reduce performanța. Găsește un echilibru între normalizare și practic.
Î.3: Este necesară normalizarea unei baze de date la cea mai înaltă formă normală, cum ar fi (BCNF sau 4NF)?
Răspuns:
Nu există nicio condiție necesară pentru orice normalizare a bazei de date. De multe ori, forma inferioară poate fi suficientă pentru performanță și simplitate specifice.