Sobes.tech
Middle

Šta je normalizacija i denormalizacija u kontekstu rada sa bazama podataka?

sobes.tech АИ

Одговор од АИ

Normalizacija je proces organizacije podataka u bazi podataka radi smanjenja redundancije i poboljšanja integriteta podataka. Denormalizacija je proces dodavanja redundantnih podataka u bazu podataka radi poboljšanja performansi upita.

Normalizacija:

  • Principi: Uklanjanje ponavljajućih grupa, zavisnosti između nepovezanih atributa.
  • Obrasci normalizacije (glavni):
    • 1NF (Prvi normalni oblik): Atomske vrednosti u kolonama, odsustvo ponavljajućih grupa.
    • 2NF (Drugi normalni oblik): U 1NF + odsustvo delimičnih zavisnosti.
    • 3NF (Treći normalni oblik): U 2NF + odsustvo tranzitivnih zavisnosti.
    • Boyce-Codd normalni oblik (BCNF): Stroža verzija 3NF.
  • Prednosti:
    • Smanjenje redundancije podataka (ušteda prostora).
    • Poboljšanje konzistentnosti podataka.
    • Pojednostavljenje modifikacije podataka (ubacivanje, ažuriranje, brisanje).
  • Nedostaci:
    • Povećanje broja tabela.
    • Potreba za spajanjem tabela za dobijanje potpunih informacija (JOIN-ovi), što može smanjiti performanse upita.

Denormalizacija:

  • Principi: Svesno kršenje pravila normalizacije radi ubrzanja čitanja podataka.
  • Tipične tehnike:
    • Dupliranje podataka (npr. čuvanje naziva proizvoda u tabeli porudžbina).
    • Spajanje tabela.
    • Prethodno računanje agregatnih vrednosti.
  • Prednosti:
    • Povećava performanse upita (posebno SELECT).
    • Smanjuje broj JOIN-ova.
    • Može biti korisno za izveštaje i OLAP sisteme.
  • Nedostaci:
    • Povećanje redundancije podataka (gubitak prostora).
    • Rizik od nekonzistentnosti podataka.
    • Komplikovanje modifikacija podataka (potreba za ažuriranjem podataka na više mesta).

Izbor između normalizacije i denormalizacije zavisi od specifičnosti aplikacije, prioriteta (integritet podataka ili performanse) i prirode upita. Obično se primenjuje normalizacija za OLTP sisteme (online transakcije), a denormalizacija za OLAP sisteme (analitička obrada) ili u kritičnim oblastima sa visokim performansama OLTP.