Sobes.tech
Middle

Co víte o normálních formách v databázích?

sobes.tech AI

Odpověď od AI

Normální formy (NF) jsou soubor pravidel a doporučení pro navrhování struktury relační databáze, zaměřený na minimalizaci redundance dat a prevenci anomálií při vkládání, aktualizaci a mazání.

Hlavní normální formy:

  • První normální forma (1NF):

    • Každý atribut (sloupec) musí obsahovat atomické (nedělitelné) hodnoty.
    • Vyvarovat se opakujících se skupin atributů.
    • Každý řádek musí být unikátní (má primární klíč).
  • Druhá normální forma (2NF):

    • Je v 1NF.
    • Každý atribut, který není klíčem, musí být plně závislý na celém primárním klíči (v případě složeného klíče).
  • Třetí normální forma (3NF):

    • Je v 2NF.
    • Není tranzitivní závislosti mezi atributy, které nejsou klíčem (atribut není klíčem, nesmí záviset na jiném atributu, který není klíčem).
  • Boyce-Coddova normální forma (BCNF):

    • Přísnější verze 3NF.
    • Každá ne-triviální závislost $X \to Y$ musí mít $X$ jako superklíč.
  • Čtvrtá normální forma (4NF):

    • Je v BCNF.
    • Není vícenásobná závislost.
  • Pátá normální forma (5NF):

    • Je v 4NF.
    • Není závislost spojení.

Cíle normalizace:

  • Snížení redundance dat.
  • Prevence anomálií (vkládání, aktualizace, mazání).
  • Zajištění integrity dat.
  • Zjednodušení struktury databáze.

Příklad:

Tabulka s redundancí (ne v 1NF):

OrderID Produkt Cena
1 Notebook, Myš 1000, 20
2 Klávesnice 50

Normalizovaná tabulka (v 1NF a výše):

Tabulka "Objednávky":

OrderID
1
2

Tabulka "Položky objednávky":

PoložkaID OrderID Produkt Cena
1 1 Notebook 1000
2 1 Myš 20
3 2 Klávesnice 50

Normalizace je důležitým krokem v návrhu, ale nadměrná normalizace může vést ke zvýšení počtu spojení při dotazech, což může negativně ovlivnit výkon. Výběr optimální úrovně normalizace závisí na konkrétních požadavcích a kompromisech. Někdy se používá denormalizace ke zlepšení výkonu v určitých scénářích, vědomě porušujíc pravidla normálních forem.