Co je to normalizace v databázi?
sobes.tech AI
Odpověď od AI
Normalizace databáze je proces organizace dat v relační databázi s cílem snížit redundanci (duplicitní data) a zlepšit integritu dat. Toho se dosahuje rozdělením velkých tabulek na menší s definováním vztahů mezi nimi.
Hlavním cílem normalizace:
- Snížení redundance dat: Vyvarovat se opakování stejné informace na různých místech.
- Zlepšení integrity dat: Zajistit přesnost a konzistenci dat.
- Zajištění flexibility: Zjednodušit změny a rozšíření struktury databáze.
Normalizace je definována souborem pravidel nazývaných normální formy. Nejrozšířenější jsou první tři normální formy:
-
První normální forma (1NF):
- Každý sloupec tabulky musí obsahovat atomické (nedělitelné) hodnoty.
- Neexistují opakující se skupiny sloupců.
- Každý řádek musí být unikátní (pomocí primárního klíče).
-
Druhá normální forma (2NF):
- Tabulka je v 1NF.
- Všechny neklíčové atributy (sloupce, které nejsou součástí primárního klíče) plně závisí na celém primárním klíči (pokud je složený). Chybí částečné závislosti.
-
Třetí normální forma (3NF):
- Tabulka je v 2NF.
- Neexistují tranzitivní závislosti. Neklíčové atributy nezávisí na jiných neklíčových atributech.
Existují i vyšší normální formy (BCNF, 4NF, 5NF, 6NF), ale 3NF je obvykle považována za dostačující pro většinu praktických účelů.
Příklad (zjednodušený):
Původní nenormovaná tabulka (objednávka zákazníka):
| ID objednávky | Jméno zákazníka | Adresa zákazníka | Zboží | Množství | Cena za kus |
|---|---|---|---|---|---|
| 101 | Jan | Praha | Notebook | 1 | 50000 |
| 101 | Jan | Praha | Myš | 2 | 1000 |
| 102 | Marie | Brno | Klávesnice | 1 | 3000 |
Po normalizaci (například do 3NF):
Tabulka objednávek:
| ID objednávky | ID zákazníka | Datum objednávky |
|---|---|---|
| 101 | 1 | 2023-10-26 |
| 102 | 2 | 2023-10-26 |
Tabulka zákazníků:
| ID zákazníka | Jméno zákazníka | Adresa zákazníka |
|---|---|---|
| 1 | Jan | Praha |
| 2 | Marie | Brno |
Tabulka detailů objednávky:
| ID detailu | ID objednávky | ID zboží | Množství | Cena za kus |
|---|---|---|---|---|
| 1 | 101 | 10 | 1 | 50000 |
| 2 | 101 | 20 | 2 | 1000 |
| 3 | 102 | 30 | 1 | 3000 |
Tabulka zboží:
| ID zboží | Název zboží |
|---|---|
| 10 | Notebook |
| 20 | Myš |
| 30 | Klávesnice |
De-normalizace je opakem normalizace, někdy se používá ke zlepšení výkonu čtení dat zvýšením redundance.