Ce este normalizarea într-o bază de date?
sobes.tech AI
Răspuns de la AI
Normalizarea bazei de date este procesul de organizare a datelor într-o bază de date relațională cu scopul de a reduce redundanța (duplicarea datelor) și de a îmbunătăți integritatea datelor. Acest lucru se realizează prin împărțirea tabelelor mari în tabele mai mici și definirea relațiilor dintre ele.
Scopul principal al normalizării:
- Reducerea redundanței datelor: Evitarea repetării aceleiași informații în diferite locuri.
- Îmbunătățirea integrității datelor: Asigurarea acurateței și coerenței datelor.
- Oferirea de flexibilitate: Simplificarea modificărilor și extinderilor structurii bazei de date.
Normalizarea este definită printr-un set de reguli numite forme normale. Cele mai comune trei forme normale sunt:
-
Prima formă normală (1NF):
- Fiecare coloană a tabelului trebuie să conțină valori atomice (indivizibile).
- Nu trebuie să existe grupuri repetitive de coloane.
- Fiecare rând trebuie să fie unic (prin cheia primară).
-
A doua formă normală (2NF):
- Tabelul este în 1NF.
- Toți atributii non-cheie depind complet de cheia primară (dacă este compusă). Nu trebuie să existe dependențe parțiale.
-
A treia formă normală (3NF):
- Tabelul este în 2NF.
- Nu există dependențe tranzitive. Atributii non-cheie nu depind de alți atributii non-cheie.
Există și forme normale mai înalte (BCNF, 4NF, 5NF, 6NF), dar în general se consideră că 3NF este suficientă pentru majoritatea scopurilor practice.
Exemplu (simplificat):
Tabelul neormalizat de comenzi ale clientului:
| ID Comandă | Nume Client | Adresă Client | Produse | Cantitate | Preț pe unitate |
|---|---|---|---|---|---|
| 101 | Ivan | Moscova | Laptop | 1 | 50000 |
| 101 | Ivan | Moscova | Mouse | 2 | 1000 |
| 102 | Maria | Sankt Petersburg | Tastatură | 1 | 3000 |
După normalizare (de exemplu, până la 3NF):
Tabelul Comenzi:
| ID Comandă | ID Client | Data Comenzii |
|---|---|---|
| 101 | 1 | 2023-10-26 |
| 102 | 2 | 2023-10-26 |
Tabelul Clienți:
| ID Client | Nume Client | Adresă Client |
|---|---|---|
| 1 | Ivan | Moscova |
| 2 | Maria | Sankt Petersburg |
Tabelul Detalii Comandă:
| ID Detaliu Comandă | ID Comandă | ID Produs | Cantitate | Preț pe unitate |
|---|---|---|---|---|
| 1 | 101 | 10 | 1 | 50000 |
| 2 | 101 | 20 | 2 | 1000 |
| 3 | 102 | 30 | 1 | 3000 |
Tabelul Produse:
| ID Produs | Nume Produs |
|---|---|
| 10 | Laptop |
| 20 | Mouse |
| 30 | Tastatură |
Denormalizarea este procesul invers al normalizării, uneori utilizat pentru a optimiza performanța citirii datelor, în detrimentul creșterii redundanței.