Sobes.tech
Middle

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.