Sobes.tech
Junior

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:

  1. 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ą).
  2. 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ų.
  3. 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į.