Czym jest normalizacja?
sobes.tech AI
Odpowiedź od AI
Normalizacja danych w kontekście baz danych to proces organizacji danych w celu zmniejszenia nadmiarowości i poprawy integralności danych. Osiąga się to poprzez dzielenie dużych tabel na mniejsze i łączenie ich relacjami.
Główny cel:
- Usunięcie duplikacji danych.
- Poprawa integralności danych (zapobieganie anomaliom przy wstawianiu, aktualizacji i usuwaniu).
- Zwiększenie wydajności przechowywania i zapytań (w niektórych przypadkach).
Proces normalizacji opiera się na zasadach form normalnych (FN). Najczęściej stosowane to:
- Pierwsza forma normalna (1FN): Atomowość danych w komórkach, brak powtarzających się grup kolumn.
- Druga forma normalna (2FN): Jest w 1FN i każdy niekluczowy atrybut zależy w pełni od całego klucza głównego.
- Trzecia forma normalna (3FN): Jest w 2FN i nie ma zależności funkcjonalnych przejściowych niekluczowych atrybutów od klucza głównego przez inne niekluczowe atrybuty.
Przykład:
Tabela "Zamówienia_Produkty":
| ID Zamówienia | Data Zamówienia | ID Produktu | Nazwa Produktu | Cena Produktu | Ilość | Imię Klienta | Adres Klienta |
|---|---|---|---|---|---|---|---|
| 1 | 2023-10-27 | 101 | Telefon | 500 | 1 | Ivan Pétrov | Ul. Pushkina, 10 |
| 1 | 2023-10-27 | 102 | Słuchawki | 100 | 2 | Ivan Pétrov | Ul. Pushkina, 10 |
| 2 | 2023-10-27 | 101 | Telefon | 500 | 1 | Maria Ivanova | Ul. Lermontova, 5 |
Po normalizacji (do 3FN):
Tabela "Zamówienia":
| ID Zamówienia | Data Zamówienia | ID Klienta |
|---|---|---|
| 1 | 2023-10-27 | 1 |
| 2 | 2023-10-27 | 2 |
Tabela "Pozycje Zamówienia":
| ID Pozycji | ID Zamówienia | ID Produktu | Ilość |
|---|---|---|---|
| 1 | 1 | 101 | 1 |
| 2 | 1 | 102 | 2 |
| 3 | 2 | 101 | 1 |
Tabela "Produkty":
| ID Produktu | Nazwa Produktu | Cena Produktu |
|---|---|---|
| 101 | Telefon | 500 |
| 102 | Słuchawki | 100 |
Tabela "Klienci":
| ID Klienta | Imię Klienta | Adres Klienta |
|---|---|---|
| 1 | Ivan Pétrov | Ul. Pushkina, 10 |
| 2 | Maria Ivanova | Ul. Lermontova, 5 |
Jednak nadmierna normalizacja może prowadzić do zwiększenia liczby połączeń (JOIN) podczas wykonywania zapytań, co może obniżyć wydajność. Dlatego w projektowaniu baz danych często szuka się równowagi między stopniem normalizacji a wydajnością. Denormalizacja to proces celowego naruszania form normalnych w celu poprawy wydajności, zwykle poprzez dodanie nadmiarowości.