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.