Kas yra normalizacija duomenų bazėje?
sobes.tech AI
Atsakymas iš AI
Duomenų bazės normalizavimas yra procesas, kuriuo duomenys organizuojami reliacinėje duomenų bazėje siekiant sumažinti pertekliaus (duomenų dubliavimą) ir pagerinti duomenų vientisumą. Tai pasiekiama padalijus dideles lenteles į mažesnes ir nustatant ryšius tarp jų.
Pagrindinis normalizavimo tikslas:
- Mažinti duomenų pertekliaus kiekį: Vengti tos pačios informacijos kartojimo skirtingose vietose.
- Pagerinti duomenų vientisumą: Užtikrinti duomenų tikslumą ir nuoseklumą.
- Užtikrinti lankstumą: Supaprastinti duomenų bazės struktūros keitimą ir plėtrą.
Normalizavimas apibrėžiamas taisyklių rinkiniu, vadinamu normaliomis formomis. Dažniausiai naudojamos pirmosios trys formos:
-
Pirmoji normali forma (1NF):
- Kiekvienas stulpelis turi būti atominių (nepadalijamų) reikšmių.
- Neturi būti pasikartojančių stulpelių grupių.
- Kiekviena eilutė turi būti unikali (naudojant pirminį raktą).
-
Antroji normali forma (2NF):
- Lentelė yra 1NF.
- Visi ne-raktiniai atributai (stulpeliai, kurie nėra pirminio rakto dalis) turi būti visiškai priklausomi nuo viso pirminio rakto (jei jis sudėtinis). Nėra dalinių priklausomybių.
-
Trečioji normali forma (3NF):
- Lentelė yra 2NF.
- Nėra tranzityvinių priklausomybių. Ne-raktiniai atributai nepriklauso nuo kitų ne-raktinių atributų.
Yra ir aukštesnės normalių formų (BCNF, 4NF, 5NF, 6NF), tačiau 3NF dažnai laikoma pakankama daugumai praktinių tikslų.
Pavyzdys (paprastas):
Pradinė nenormalizuota lentelė (kliento užsakymas):
| Užsakymo ID | Kliento vardas | Kliento adresas | Prekės | Kiekis | Kaina už vienetą |
|---|---|---|---|---|---|
| 101 | Jonas | Vilnius | Nešiojamas kompiuteris | 1 | 50000 |
| 101 | Jonas | Vilnius | Pelės | 2 | 1000 |
| 102 | Marija | Kaunas | Klaviatūra | 1 | 3000 |
Po normalizavimo (pvz., iki 3NF):
Užsakymų lentelė:
| Užsakymo ID | Kliento ID | Užsakymo data |
|---|---|---|
| 101 | 1 | 2023-10-26 |
| 102 | 2 | 2023-10-26 |
Klientų lentelė:
| Kliento ID | Kliento vardas | Kliento adresas |
|---|---|---|
| 1 | Jonas | Vilnius |
| 2 | Marija | Kaunas |
Užsakymo detalių lentelė:
| Detalės ID | Užsakymo ID | Prekės ID | Kiekis | Kaina už vienetą |
|---|---|---|---|---|
| 1 | 101 | 10 | 1 | 50000 |
| 2 | 101 | 20 | 2 | 1000 |
| 3 | 102 | 30 | 1 | 3000 |
Prekių lentelė:
| Prekės ID | Prekės pavadinimas |
|---|---|
| 10 | Nešiojamas kompiuteris |
| 20 | Pelė |
| 30 | Klaviatūra |
Dekompleksacija yra priešingas normalizacijai procesas, kartais naudojamas duomenų skaitymo našumui pagerinti, didinant pertekliaus kiekį.