Diferența între normalizare și denormalizare

Normalizare vs. Denormalizare

Bazele de date relaționale sunt compuse din relații (tabelele conexe). Tabelele sunt alcătuite din coloane. Dacă tabelele sunt două mari (adică prea multe coloane dintr-un tabel), pot apărea anomalii ale bazei de date. Dacă tabelele sunt două mici (adică baza de date este alcătuită din mai multe mese mai mici), ar fi ineficient pentru interogare. Normalizarea și denormalizarea sunt două procese care sunt utilizate pentru a optimiza performanța bazei de date. Normalizarea minimizează concedierile care există în tabelele de date. Denormalizarea (inversarea normalizării) adaugă date redundante sau date de grup.

Ce este Normalizarea?

Normalizarea este un proces care se realizează pentru a minimiza concedierile care există în datele din bazele de date relaționale. Acest proces va împărți în principal mesele mari în tabele mai mici cu redundanțe reduse (numite "Formulare normale"). Aceste tabele mai mici vor fi legate între ele prin relații bine definite. Într-o bază de date bine normalizată, orice modificare sau modificare a datelor va necesita modificarea numai a unui singur tabel. Prima formă normală (1NF), a doua formă normală (2NF) și a treia formă normală (3NF) au fost introduse de Edgar F. Codd. Forma normală Boyce-Codd (BCNF) a fost introdusă în 1974 de Codd și Raymond F. Boyce. Formele normale mai mari (4NF, 5NF și 6NF) au fost definite, dar ele sunt folosite rar.

Un tabel care respectă 1NF asigură că acesta reprezintă de fapt o relație (adică nu conține înregistrări care se repetă) și nu conține niciun atribut care este evaluat relațional (adică toate atributele ar trebui să aibă valori atomice). Pentru un tabel care să respecte 2NF, ar trebui respectat 1NF și orice atribut care nu face parte din nici o cheie candidat (adică atributele non-prime) ar trebui să depindă complet de oricare dintre tastele candidate din tabel. Conform definiției lui Codd, se spune că un tabel este în 3NF, dacă și numai dacă tabelul este în a doua formă normală (2NF) și fiecare atribut din tabel care nu aparține unei chei candidate trebuie să depindă direct de fiecare cheia candidatului din tabelul respectiv. BCNF (cunoscut și sub numele de 3.5NF) surprinde unele anomalii care nu sunt abordate de 3NF.

Ce este denormalizarea?

Denormalizarea este procesul invers al procesului de normalizare. Denormalizarea funcționează adăugând date redundante sau grupând date pentru a optimiza performanța. Chiar dacă adăugarea de date redundante pare contraproductivă, uneori denormalizarea este un proces foarte important pentru a depăși unele dintre deficiențele software-ului bazei de date relaționale, care pot suporta sancțiuni de performanță ridicate cu baze de date normalizate (chiar și pentru o performanță mai ridicată). Acest lucru se datorează faptului că uneia dintre mai multe relații (care sunt rezultatul normalizării) pentru a produce un rezultat unei interogări poate fi uneori lentă în funcție de implementarea fizică reală a sistemelor de baze de date.

Care este diferența dintre normalizare și denormalizare?

- Normalizarea și denormalizarea sunt două procese care sunt complet opuse.

- Normalizarea este procesul de împărțire a tabelelor mai mari la cele mai mici, reducând datele redundante, în timp ce denormalizarea este procesul de adăugare a datelor redundante pentru a optimiza performanța.

- Normalizarea este efectuată pentru a preveni anomaliile bazelor de date.

- Denormalizarea este de obicei efectuată pentru a îmbunătăți performanța citită a bazei de date, dar din cauza constrângerilor suplimentare utilizate pentru denormalizare, scrierea (adică inserarea, actualizarea și ștergerea operațiunilor) poate deveni mai lentă. Prin urmare, o bază de date denormalizată poate oferi performanțe de scriere mai slabe decât o bază de date normalizată.

- Este adesea recomandat să "normalizați până când doare, denormalizați până când va funcționa".