Co wiesz o normalnych formach w bazach danych?
sobes.tech AI
Odpowiedź od AI
Formy normalne (FN) to zbiór zasad i zaleceń dotyczących projektowania struktury relacyjnej bazy danych, mających na celu minimalizację nadmiarowości danych i zapobieganie anomaliom podczas wstawiania, aktualizacji i usuwania.
Główne formy normalne:
-
Pierwsza forma normalna (1FN):
- Każdy atrybut (kolumna) musi zawierać wartości atomowe (niepodzielne).
- Brak powtarzających się grup atrybutów.
- Każdy wiersz musi być unikalny (obecność klucza głównego).
-
Druga forma normalna (2FN):
- Jest w 1FN.
- Każdy atrybut niekluczowy musi w pełni zależeć od całego klucza głównego (jeśli klucz jest złożony).
-
Trzecia forma normalna (3FN):
- Jest w 2FN.
- Brak zależności przejściowych atrybutów niekluczowych od klucza głównego (atrybut niekluczowy nie powinien zależeć od innego atrybutu niekluczowego).
-
Forma Boyce-Codda (BCNF):
- Bardziej rygorystyczna wersja 3FN.
- Każde nietriviale $X \to Y$ musi mieć $X$ jako superklucz.
-
Czwarta forma normalna (4FN):
- Jest w BCNF.
- Brak zależności wielowartościowych.
-
Piąta forma normalna (5FN):
- Jest w 4FN.
- Brak zależności łączeniowych.
Cele normalizacji:
- Zmniejszenie nadmiarowości danych.
- Zapobieganie anomaliom (wstawianie, aktualizacje, usuwanie).
- Zapewnienie integralności danych.
- Uproszczenie struktury bazy danych.
Przykład:
Tabela z nadmiarowością (nie w 1FN):
| OrderID | Produkt | Cena |
|---|---|---|
| 1 | Laptop, Mysz | 1000, 20 |
| 2 | Klawiatura | 50 |
Znormalizowana tabela (w 1FN i wyższych):
Tabela "Zamówienia":
| OrderID |
|---|
| 1 |
| 2 |
Tabela "Pozycje zamówienia":
| PozycjaID | OrderID | Produkt | Cena |
|---|---|---|---|
| 1 | 1 | Laptop | 1000 |
| 2 | 1 | Mysz | 20 |
| 3 | 2 | Klawiatura | 50 |
Normalizacja jest ważnym etapem projektowania, ale nadmierna normalizacja może prowadzić do zwiększenia liczby połączeń w zapytaniach, co może negatywnie wpłynąć na wydajność. Wybór optymalnego poziomu normalizacji zależy od konkretnych wymagań i kompromisów. Czasami stosuje się denormalizację, aby zoptymalizować wydajność w określonych scenariuszach, świadomie naruszając zasady normalnych form.