Kas yra normalizavimas?
sobes.tech AI
Atsakymas iš AI
Duomenų normalizavimas duomenų bazių kontekste yra procesas, skirtas organizuoti duomenis siekiant sumažinti pertekliaus kiekį ir pagerinti duomenų vientisumą. Tai pasiekiama skaidant dideles lenteles į mažesnes ir jų santykius sujungiant.
Pagrindiniai tikslai:
- Duomenų dubliavimosi pašalinimas.
- Duomenų vientisumo gerinimas (išvengiant įterpimo, atnaujinimo ir ištrynimo anomalijų).
- Saugojimo ir užklausų efektyvumo didinimas (kai kuriais atvejais).
Normalizacijos procesas grindžiamas normalių formų (NF) principais. Dažniausiai naudojamos:
- Pirmoji normalioji forma (1NF): Duomenys yra atominiai langeliuose, nėra pasikartojančių stulpelių grupių.
- Antroji normalioji forma (2NF): Yra 1NF ir kiekvienas ne raktinis atributas yra visiškai funkciškai priklausomas nuo visos pirminės rakto.
- Trečioji normalioji forma (3NF): Yra 2NF ir nėra tranzityvių funkcinės priklausomybės tarp ne raktinių atributų per kitus ne raktinius atributus.
Pavyzdys:
Pirminė "Užsakymai_Prekės" lentelė:
| Užsakymo ID | Užsakymo data | Prekės ID | Prekės pavadinimas | Prekės kaina | Kiekis | Kliento vardas | Kliento adresas |
|---|---|---|---|---|---|---|---|
| 1 | 2023-10-27 | 101 | Telefonas | 500 | 1 | Ivan Petrov | Puskina g. 10 |
| 1 | 2023-10-27 | 102 | Ausinės | 100 | 2 | Ivan Petrov | Puskina g. 10 |
| 2 | 2023-10-27 | 101 | Telefonas | 500 | 1 | Maria Ivanova | Lermontov g. 5 |
Po normalizacijos (iki 3NF):
"Užsakymai":
| Užsakymo ID | Užsakymo data | Kliento ID |
|---|---|---|
| 1 | 2023-10-27 | 1 |
| 2 | 2023-10-27 | 2 |
"Užsakymo pozicijos":
| Pozicijos ID | Užsakymo ID | Prekės ID | Kiekis |
|---|---|---|---|
| 1 | 1 | 101 | 1 |
| 2 | 1 | 102 | 2 |
| 3 | 2 | 101 | 1 |
"Prekės":
| Prekės ID | Prekės pavadinimas | Prekės kaina |
|---|---|---|
| 101 | Telefonas | 500 |
| 102 | Ausinės | 100 |
"Klientai":
| Kliento ID | Kliento vardas | Kliento adresas |
|---|---|---|
| 1 | Ivan Petrov | Puskina g. 10 |
| 2 | Maria Ivanova | Lermontov g. 5 |
Tačiau pernelyg didelė normalizacija gali padidinti jungčių (JOIN) skaičių vykdant užklausas, kas gali sumažinti našumą. Todėl duomenų bazės projektavimo metu dažnai ieškoma pusiausvyros tarp normalizacijos laipsnio ir našumo. Denormalizacija yra procesas, sąmoningai pažeidžiant normalių formų reikalavimus, siekiant pagerinti našumą, dažnai pridedant perteklinius duomenis.